File: /var/www/ipsremont-demo/app/Http/Controllers/WarehouseController.php
<?php
namespace App\Http\Controllers;
use App\Http\Requests\Warehouse\CreateRequest;
use App\Http\Requests\Warehouse\IndexRequest;
use App\Http\Requests\Warehouse\UpdateRequest;
use App\Models\Permission;
use App\Models\Warehouse;
use App\Services\Branch\BranchService;
use App\Services\Warehouse\WarehouseService;
use App\Traits\GridTrait;
use Illuminate\Contracts\Foundation\Application;
use Illuminate\Contracts\View\Factory;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Support\Facades\Auth;
use Illuminate\View\View;
class WarehouseController extends Controller
{
use GridTrait;
/** @var string */
protected string $permission = Permission::closed;
/** @var WarehouseService */
protected WarehouseService $service;
/**
* WarehouseController constructor.
*/
public function __construct()
{
parent::__construct();
$this->service = new WarehouseService();
}
/**
* Display a listing of the resource.
*
* @param IndexRequest $request
*
* @return Application|Factory|View
*/
public function index(IndexRequest $request)
{
$data = $this->service->search($request);
$columns = Warehouse::columns();
$central = Warehouse::central();
$branches = BranchService::getDisplayed();
return view('warehouses.list', compact('data', 'columns', 'central', 'branches'))
->with(["sections" => ["central", 'branch_id']]);
}
/**
* Show the form for creating a new resource.
*
* @return Application|Factory|Response|View
*/
public function create()
{
$model = new Warehouse();
$model->branch_id = Auth::user()->getFirstBranchId() ?? 0;
$validate = new CreateRequest();
$branches = BranchService::getDisplayed();
return view('warehouses.create', compact('model', 'validate', 'branches'))
->with(["sections" => ["branch_id"]]);
}
/**
* Store a newly created resource in storage.
*
* @param CreateRequest $request
*
* @return RedirectResponse
*/
public function store(CreateRequest $request)
{
$this->service->save($request);
return redirect()->route('warehouses.index')
->with(["messageSuccess" => __('warehouses.messageCreateWarehouse')]);
}
/**
* Show the form for editing the specified resource.
*
* @param Request $request
*
* @return Application|Factory|Response|View
*/
public function edit(Request $request)
{
$data = WarehouseService::getById($request->id);
$validate = new UpdateRequest();
$branches = BranchService::getDisplayed();
if ($data->branch && $data->branch->display == 0) {
$branches[$data->branch->id] = $data->branch->name;
}
return view('warehouses.edit', compact('data', 'validate', 'branches'))
->with(["sections" => ["branch_id"]]);
}
/**
* Update the specified resource in storage.
*
* @param UpdateRequest $request
*
* @return RedirectResponse
*/
public function update(UpdateRequest $request)
{
$this->service->update($request);
return redirect()->route('warehouses.index')
->with(["messageSuccess" => __('warehouses.messageUpdateWarehouse')]);
}
/**
* Remove the specified resource from storage.
*
* @param int $id
*
* @return RedirectResponse
*/
public function delete(int $id)
{
$this->service->delete($id);
return redirect()->route('warehouses.index')
->with(["messageSuccess" => __('warehouses.messageDeleteWarehouse')]);
}
}