54 lines
2.0 KiB
PHP
54 lines
2.0 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Supervisor;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Http\Controllers\Supervisor\Concerns\ScopesSupervisorResources;
|
|
use App\Models\Supervisor;
|
|
use App\Services\DashboardService;
|
|
use Illuminate\Http\Request;
|
|
use Inertia\Inertia;
|
|
use Inertia\Response;
|
|
|
|
class DashboardController extends Controller
|
|
{
|
|
use ScopesSupervisorResources;
|
|
|
|
public function index(Request $request, DashboardService $dashboardService): Response
|
|
{
|
|
$supervisor = $this->supervisor();
|
|
$establishmentFilter = $this->resolveDashboardEstablishmentFilter($request, $supervisor);
|
|
$establishments = $this->establishmentOptions();
|
|
|
|
return Inertia::render('Supervisor/Dashboard', [
|
|
'kpis' => $dashboardService->getKpis($supervisor, $establishmentFilter),
|
|
'alerts' => $dashboardService->getAlerts($supervisor, $establishmentFilter),
|
|
'machinesOverview' => $dashboardService->getMachinesOverview($supervisor, $establishmentFilter),
|
|
'machineStatusBreakdown' => $dashboardService->getMachineStatusBreakdown($supervisor, $establishmentFilter),
|
|
'recentWashes' => $dashboardService->getRecentWashes($supervisor, $establishmentFilter),
|
|
'context' => $dashboardService->getContext($supervisor, $establishmentFilter),
|
|
'establishments' => $establishments,
|
|
'showEstablishmentFilter' => $supervisor->establishment_id === null && count($establishments) > 1,
|
|
'filters' => [
|
|
'establishment_id' => $establishmentFilter,
|
|
],
|
|
]);
|
|
}
|
|
|
|
private function resolveDashboardEstablishmentFilter(Request $request, Supervisor $supervisor): ?int
|
|
{
|
|
if ($supervisor->establishment_id !== null) {
|
|
return $supervisor->establishment_id;
|
|
}
|
|
|
|
if (! $request->filled('establishment_id')) {
|
|
return null;
|
|
}
|
|
|
|
$establishmentId = (int) $request->input('establishment_id');
|
|
$this->assertEstablishmentAccessible($establishmentId);
|
|
|
|
return $establishmentId;
|
|
}
|
|
}
|