Files
backend/app/Http/Controllers/Supervisor/DashboardController.php
T

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;
}
}