46 lines
1.6 KiB
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'));
|
|
}
|
|
}
|