ultimatepos/Modules/AdvancedPlanning/Http/Controllers/DashboardController.php

46 lines
1.6 KiB
PHP

<?php
namespace Modules\AdvancedPlanning\Http\Controllers;
use Illuminate\Routing\Controller;
use Modules\AdvancedPlanning\Http\Controllers\Concerns\AuthorizesAdvancedPlanning;
use Modules\AdvancedPlanning\Models\CapacityResource;
use Modules\AdvancedPlanning\Models\ScheduleRun;
use Modules\AdvancedPlanning\Models\SopCycle;
use Modules\AdvancedPlanning\Services\IntegrationBridgeService;
use Modules\AdvancedPlanning\Utils\AdvancedPlanningUtil;
class DashboardController extends Controller
{
use AuthorizesAdvancedPlanning;
public function __construct(
protected IntegrationBridgeService $bridge,
protected AdvancedPlanningUtil $util
) {
}
public function index()
{
$this->authorizeAp('ap.view');
$businessId = $this->businessId();
$stats = [
'resources' => CapacityResource::forBusiness($businessId)->where('is_active', true)->count(),
'schedule_runs' => ScheduleRun::forBusiness($businessId)->where('status', 'completed')->count(),
'sop_cycles' => SopCycle::forBusiness($businessId)->count(),
'latest_run' => ScheduleRun::forBusiness($businessId)->latest('id')->first(),
'latest_sop' => SopCycle::forBusiness($businessId)->latest('cycle_month')->first(),
];
$integrations = [
'industrial_engineering' => $this->bridge->isIndustrialEngineeringAvailable(),
'shop_floor' => $this->bridge->isShopFloorAvailable(),
'maintenance' => $this->bridge->isMaintenanceAvailable(),
];
return view('advancedplanning::dashboard.index', compact('stats', 'integrations'));
}
}