Files
My-KOPKB/be/Modules/Dashboard/Http/Controllers/DashboardController.php
T
ISMAIL MASSERAN 94ecbe5887 first init
2026-06-08 11:37:14 +08:00

109 lines
5.1 KiB
PHP

<?php
namespace Modules\Dashboard\Http\Controllers;
use App\Http\Controllers\Controller;
use Modules\Dashboard\Services\KJC\KJCDashboardService;
use Modules\Dashboard\Services\PKJ\PKJDashboardService;
use Illuminate\Http\Request;
use Illuminate\Http\JsonResponse;
class DashboardController extends Controller
{
protected KJCDashboardService $kjcDashboardService;
protected PKJDashboardService $pkjDashboardService;
public function __construct(
KJCDashboardService $kjcDashboardService,
PKJDashboardService $pkjDashboardService
) {
$this->kjcDashboardService = $kjcDashboardService;
$this->pkjDashboardService = $pkjDashboardService;
}
/**
* Get dashboard overview data
*/
public function getOverview(Request $request): JsonResponse
{
try {
$filters = $request->only(['date_from', 'date_to', 'unit_id', 'camp_id', 'formation_id', 'government_id']);
$user = $request->user(); // Get authenticated user
$overview = [
'total_units' => $this->kjcDashboardService->getTotalUnits($filters),
'total_camps' => $this->kjcDashboardService->getTotalCamps($filters),
'total_formations' => $this->kjcDashboardService->getTotalFormations($filters),
'kjc' => [
'total_assets' => $this->kjcDashboardService->getTotalAssets($filters, $user),
'operational_assets' => $this->kjcDashboardService->getOperationalAssets($filters, $user),
'under_repair' => $this->kjcDashboardService->getUnderRepairAssets($filters, $user),
'maintenance_due' => $this->kjcDashboardService->getMaintenanceDueAssets($filters, $user),
'active_repairs' => $this->kjcDashboardService->getActiveRepairs($filters),
'pending_reports' => $this->kjcDashboardService->getPendingReports($filters)
],
'pkj' => [
'total_assets' => $this->pkjDashboardService->getTotalAssets($filters, $user),
'operational_assets' => $this->pkjDashboardService->getOperationalAssets($filters, $user),
'under_repair' => $this->pkjDashboardService->getUnderRepairAssets($filters, $user),
'maintenance_due' => $this->pkjDashboardService->getMaintenanceDueAssets($filters, $user),
'active_repairs' => $this->pkjDashboardService->getActiveRepairs($filters),
'pending_reports' => $this->pkjDashboardService->getPendingReports($filters)
]
];
return response()->json([
'success' => true,
'data' => $overview
]);
} catch (\Exception $e) {
return response()->json([
'success' => false,
'message' => 'Failed to fetch dashboard overview',
'error' => $e->getMessage()
], 500);
}
}
/**
* Get stat cards data
*/
public function getStatCards(Request $request): JsonResponse
{
try {
$filters = $request->only(['date_from', 'date_to', 'unit_id', 'camp_id', 'formation_id', 'government_id']);
$user = $request->user(); // Get authenticated user
$statCards = [
'kjc' => [
'total_assets' => $this->kjcDashboardService->getTotalAssets($filters, $user),
'operational_assets' => $this->kjcDashboardService->getOperationalAssets($filters, $user),
'under_repair' => $this->kjcDashboardService->getUnderRepairAssets($filters, $user),
'maintenance_due' => $this->kjcDashboardService->getMaintenanceDueAssets($filters, $user),
],
'pkj' => [
'total_assets' => $this->pkjDashboardService->getTotalAssets($filters, $user),
'operational_assets' => $this->pkjDashboardService->getOperationalAssets($filters, $user),
'under_repair' => $this->pkjDashboardService->getUnderRepairAssets($filters, $user),
'maintenance_due' => $this->pkjDashboardService->getMaintenanceDueAssets($filters, $user),
],
'overview' => [
'total_units' => $this->kjcDashboardService->getTotalUnits($filters),
'active_repairs' => $this->kjcDashboardService->getActiveRepairs($filters) + $this->pkjDashboardService->getActiveRepairs($filters),
'pending_reports' => $this->kjcDashboardService->getPendingReports($filters) + $this->pkjDashboardService->getPendingReports($filters),
]
];
return response()->json([
'success' => true,
'data' => $statCards
]);
} catch (\Exception $e) {
return response()->json([
'success' => false,
'message' => 'Failed to fetch stat cards',
'error' => $e->getMessage()
], 500);
}
}
}