feat: implement executive dashboard with financial analytics, blocker tracking, and resolution management systems
This commit is contained in:
@@ -113,6 +113,7 @@ class DashboardController extends Controller
|
||||
|
||||
foreach ($delayQuery->get() as $delay) {
|
||||
$projName = $delay->task->project->name ?? 'Unknown Project';
|
||||
$projUlid = $delay->task->project->ulid ?? null;
|
||||
$urgency = ($delay->lost_hours >= 8) ? 'critical' : 'high';
|
||||
|
||||
// Map reason_type to RFI / Material / Safety / Equipment / Regulatory
|
||||
@@ -127,6 +128,8 @@ class DashboardController extends Controller
|
||||
|
||||
$blockersList[] = [
|
||||
'id' => 'delay_' . $delay->id,
|
||||
'project_ulid' => $projUlid,
|
||||
'task_ulid' => $delay->task->ulid ?? null,
|
||||
'type' => $type,
|
||||
'title' => sprintf('[%s] %s: %s', $projName, $delay->task->name, $delay->notes ?? 'Delay recorded'),
|
||||
'urgency' => $urgency,
|
||||
@@ -146,23 +149,28 @@ class DashboardController extends Controller
|
||||
|
||||
foreach ($issueQuery->get() as $issue) {
|
||||
$projName = $issue->dailyReport->project->name ?? 'Unknown Project';
|
||||
$urgency = str_contains(strtolower($issue->delay_impact ?? ''), 'critical') ? 'critical' : 'high';
|
||||
|
||||
// Map issue_type
|
||||
$type = match (strtolower($issue->issue_type ?? '')) {
|
||||
'material', 'supply' => 'Material',
|
||||
'labor', 'manpower' => 'Labor',
|
||||
'equipment' => 'Equipment',
|
||||
$projUlid = $issue->dailyReport->project->ulid ?? null;
|
||||
$severity = strtolower($issue->severity ?? 'medium');
|
||||
$urgency = in_array($severity, ['high', 'critical']) ? 'critical' : 'high';
|
||||
|
||||
$type = match (strtolower($issue->category ?? '')) {
|
||||
'safety' => 'Safety',
|
||||
default => 'RFI',
|
||||
'rfi' => 'RFI',
|
||||
'material' => 'Material',
|
||||
'equipment' => 'Equipment',
|
||||
default => 'Safety',
|
||||
};
|
||||
|
||||
$blockersList[] = [
|
||||
'id' => 'issue_' . $issue->id,
|
||||
'project_ulid' => $projUlid,
|
||||
'daily_report_id' => $issue->daily_report_id,
|
||||
'type' => $type,
|
||||
'title' => sprintf('[%s] %s', $projName, $issue->description),
|
||||
'title' => sprintf('[%s] %s', $projName, $issue->description ?? $issue->issue_description ?? 'Site Issue reported'),
|
||||
'urgency' => $urgency,
|
||||
'date' => $issue->dailyReport->report_date?->format('Y-m-d') ?? now()->format('Y-m-d'),
|
||||
'status' => $issue->status ?? 'open',
|
||||
'supervisor_name' => $issue->supervisor_name,
|
||||
'date' => $issue->created_at?->format('Y-m-d') ?? now()->format('Y-m-d'),
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user