File: /var/www/ipsremont-demo/app/Http/Controllers/PartsController.php
<?php
namespace App\Http\Controllers;
use App\Http\Requests\IdRequest;
use App\Http\Requests\Part\IndexPartRequest;
use App\Models\Part;
use App\Models\Permission;
use App\Services\Branch\BranchService;
use App\Services\Part\PartService;
use FontLib\TrueType\Collection;
use Illuminate\Support\Facades\Auth;
class PartsController extends Controller
{
/** @var string */
protected string $permission = Permission::parts;
/** @var PartService */
protected PartService $service;
/**
* ServiceController constructor.
*/
public function __construct()
{
parent::__construct();
$this->service = new PartService();
}
public function index(IndexPartRequest $request)
{
$data = $this->service->search($request);
$columns = Part::columns();
return view('parts.list', compact('data', 'columns'));
}
public function show(IdRequest $request)
{
/** @var Part $part */
$part = $this->service->getById($request->id);
$columns = Part::columnsAnalog();
/** @var Collection $analogs */
$analogs = $part->analogs();
$user = Auth::user();
$central = BranchService::getCentral();
if (in_array($central->id, $user->getBranchIds())) {
$central = null;
}
$store = PartService::getStorageInfo($part);
$storeCount = 0;
if ($user->isService()) {
$storeCount += $store->local;
}
$storeCount += $store->branch;
if ($central) {
$storeCount += $store->central;
}
return view('parts.show', compact('part', 'store', 'storeCount', 'analogs', 'columns', 'central', 'user'));
}
}