90 lines
2.6 KiB
PHP
90 lines
2.6 KiB
PHP
|
|
<?php
|
||
|
|
|
||
|
|
namespace App\Http\Controllers\Api\V1;
|
||
|
|
|
||
|
|
use App\Helpers\ApiResponse;
|
||
|
|
use App\Http\Controllers\Controller;
|
||
|
|
use App\Http\Resources\Api\V1\GuiderailModelResource;
|
||
|
|
use App\Services\GuiderailModelService;
|
||
|
|
use Illuminate\Http\JsonResponse;
|
||
|
|
use Illuminate\Http\Request;
|
||
|
|
|
||
|
|
class GuiderailModelController extends Controller
|
||
|
|
{
|
||
|
|
public function __construct(private GuiderailModelService $service) {}
|
||
|
|
|
||
|
|
private function ensureContext(Request $request): void
|
||
|
|
{
|
||
|
|
if (! app()->bound('tenant_id') || ! app('tenant_id')) {
|
||
|
|
$tenantId = (int) ($request->header('X-TENANT-ID') ?: 287);
|
||
|
|
app()->instance('tenant_id', $tenantId);
|
||
|
|
}
|
||
|
|
if (! app()->bound('api_user') || ! app('api_user')) {
|
||
|
|
app()->instance('api_user', 1);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
public function index(Request $request): JsonResponse
|
||
|
|
{
|
||
|
|
$this->ensureContext($request);
|
||
|
|
|
||
|
|
return ApiResponse::handle(function () use ($request) {
|
||
|
|
$params = $request->only(['item_category', 'item_sep', 'model_UA', 'check_type', 'model_name', 'search', 'page', 'size']);
|
||
|
|
$paginator = $this->service->list($params);
|
||
|
|
$paginator->getCollection()->transform(fn ($item) => (new GuiderailModelResource($item))->resolve());
|
||
|
|
|
||
|
|
return $paginator;
|
||
|
|
}, __('message.fetched'));
|
||
|
|
}
|
||
|
|
|
||
|
|
public function filters(Request $request): JsonResponse
|
||
|
|
{
|
||
|
|
$this->ensureContext($request);
|
||
|
|
|
||
|
|
return ApiResponse::handle(
|
||
|
|
fn () => $this->service->filters(),
|
||
|
|
__('message.fetched')
|
||
|
|
);
|
||
|
|
}
|
||
|
|
|
||
|
|
public function show(Request $request, int $id): JsonResponse
|
||
|
|
{
|
||
|
|
$this->ensureContext($request);
|
||
|
|
|
||
|
|
return ApiResponse::handle(
|
||
|
|
fn () => new GuiderailModelResource($this->service->find($id)),
|
||
|
|
__('message.fetched')
|
||
|
|
);
|
||
|
|
}
|
||
|
|
|
||
|
|
public function store(Request $request): JsonResponse
|
||
|
|
{
|
||
|
|
$this->ensureContext($request);
|
||
|
|
|
||
|
|
return ApiResponse::handle(
|
||
|
|
fn () => new GuiderailModelResource($this->service->create($request->all())),
|
||
|
|
__('message.created')
|
||
|
|
);
|
||
|
|
}
|
||
|
|
|
||
|
|
public function update(Request $request, int $id): JsonResponse
|
||
|
|
{
|
||
|
|
$this->ensureContext($request);
|
||
|
|
|
||
|
|
return ApiResponse::handle(
|
||
|
|
fn () => new GuiderailModelResource($this->service->update($id, $request->all())),
|
||
|
|
__('message.updated')
|
||
|
|
);
|
||
|
|
}
|
||
|
|
|
||
|
|
public function destroy(Request $request, int $id): JsonResponse
|
||
|
|
{
|
||
|
|
$this->ensureContext($request);
|
||
|
|
|
||
|
|
return ApiResponse::handle(
|
||
|
|
fn () => $this->service->delete($id),
|
||
|
|
__('message.deleted')
|
||
|
|
);
|
||
|
|
}
|
||
|
|
}
|