@extends('admin.layouts.master') @section('title', __('admin.dashboard.title')) @section('css') @endsection @section('content') @php $hour = now()->hour; $locale = app()->getLocale(); $isAr = $locale === 'ar'; if ($isAr) { if ($hour < 12) $greeting = 'صباح الخير'; elseif ($hour < 17) $greeting = 'مساء الخير'; else $greeting = 'مساء النور'; } else { if ($hour < 12) $greeting = 'Good Morning'; elseif ($hour < 17) $greeting = 'Good Afternoon'; else $greeting = 'Good Evening'; } $user = auth()->user(); $today = now()->locale($locale)->isoFormat($isAr ? 'dddd، D MMMM YYYY' : 'dddd, D MMMM YYYY'); $statusColors = [ 'draft' => '#94a3b8', 'quotation' => '#f97316', 'approved' => '#3b82f6', 'in_progress' => '#22c55e', 'on_hold' => '#eab308', 'completed' => '#10b981', 'cancelled' => '#ef4444', ]; @endphp
{{-- ── WELCOME BANNER ──────────────────────────────────────── --}}
{{ $greeting }}

{{ $user?->name ?? __('admin.dashboard.title') }}

{{ $today }}

@can('create_clients') {{ __('admin.clients.add') }} @endcan @can('create_projects') {{ __('admin.projects.add') }} @endcan @can('view_reports') {{ __('admin.reports.title') }} @endcan
{{-- ── FINANCIAL KPIs ──────────────────────────────────────── --}}
{{ __('admin.dashboard.total_revenue') }}
{{ number_format($stats['total_client_payments'], 0) }}
{{ __('admin.dashboard.total_payments_received') }}
{{ __('admin.dashboard.total_expenses') }}
{{ number_format($stats['total_expenses'], 0) }}
{{ __('admin.dashboard.total_costs') }}
{{ __('admin.dashboard.net_profit') }}
{{ number_format($stats['net_profit'], 0) }}
{{ __('admin.dashboard.revenue_minus_expenses') }}
{{ __('admin.dashboard.profit_margin') }}
{{ $stats['profit_margin'] }}%
{{ __('admin.dashboard.of_revenue') }}
{{-- ── OPERATIONAL KPIs ────────────────────────────────────── --}}
{{ __('admin.dashboard.total_clients') }}
{{ number_format($stats['total_clients']) }}
{{ __('admin.dashboard.active_projects') }}
{{ number_format($stats['active_projects']) }}
{{ __('admin.dashboard.active_workers') }}
{{ number_format($stats['total_workers']) }}
{{ __('admin.dashboard.pending_inspections') }}
{{ number_format($stats['pending_delivery_inspections']) }}
{{-- ── CHARTS ROW ──────────────────────────────────────────── --}}
{{ __('admin.dashboard.monthly_chart_title') }}

{{ __('admin.dashboard.last_6_months') }}

{{ __('admin.dashboard.revenue_label') }} {{ __('admin.dashboard.expenses_label') }}
{{ __('admin.dashboard.projects_by_status') }}

{{ $stats['total_projects'] }} {{ __('admin.dashboard.total_projects') }}

@if($projectStatusSummary->isEmpty())

{{ __('admin.dashboard.no_data') }}

@else
@endif
{{-- ── ACTIVE PROJECTS + DEADLINES ─────────────────────────── --}}
{{ __('admin.dashboard.active_projects_progress') }}
@can('view_projects') {{ __('admin.dashboard.view_all') }} @endcan
@forelse($activeProjects as $project) @php $pct = $project->progress_percentage ?? 0; $barColor = $pct >= 75 ? '#22c55e' : ($pct >= 40 ? '#3b82f6' : '#f97316'); @endphp
{{ $project->project_name ?: $project->name }} {{ __('admin.projects.statuses.'.$project->status) }}
{{ $pct }}%
{{ $project->client?->name ?? '—' }} @if($project->expected_end_date) {{ $project->expected_end_date?->format('d/m/Y') }} @endif
@empty

{{ __('admin.dashboard.no_active_projects') }}

@endforelse
{{ __('admin.dashboard.upcoming_deadlines') }}

{{ __('admin.dashboard.next_30_days') }}

@forelse($upcomingDeadlines as $project) @php $daysLeft = (int) now()->diffInDays($project->expected_end_date, false); if ($daysLeft <= 3) { $dBg = '#fee2e2'; $dColor = '#991b1b'; } elseif ($daysLeft <= 7) { $dBg = '#fff7ed'; $dColor = '#c2410c'; } elseif ($daysLeft <= 14) { $dBg = '#fefce8'; $dColor = '#a16207'; } else { $dBg = '#f0fdf4'; $dColor = '#15803d'; } @endphp
{{ $daysLeft }} {{ __('admin.dashboard.days') }}
{{ $project->project_name ?: $project->name }} {{ $project->client?->name ?? '—' }} {{ $project->expected_end_date?->format('d/m/Y') }}
{{ $project->progress_percentage ?? 0 }}%
@empty

{{ __('admin.dashboard.no_deadlines') }}

@endforelse
{{-- ── FINANCIAL ACTIVITY TABS ─────────────────────────────── --}}
{{ __('admin.dashboard.financial_activity') }}
@forelse($recentPayments as $payment) @empty @endforelse
{{ __('admin.client_payments.fields.client_id') }} {{ __('admin.client_payments.fields.project_id') }} {{ __('admin.client_payments.fields.payment_type') }} {{ __('admin.client_payments.fields.payment_date') }} {{ __('admin.client_payments.fields.amount') }}
{{ $payment->client?->name ?? '—' }} {{ $payment->project?->project_name ?? '—' }} {{ __('admin.client_payments.types.'.$payment->payment_type) }} {{ $payment->payment_date?->format('d/m/Y') }} {{ number_format($payment->amount, 2) }}
{{ __('admin.dashboard.no_data') }}
@forelse($recentExpenses as $expense) @empty @endforelse
{{ __('admin.expenses.fields.title') }} {{ __('admin.expenses.fields.project_id') }} {{ __('admin.expenses.fields.category') }} {{ __('admin.expenses.fields.expense_date') }} {{ __('admin.expenses.fields.amount') }}
{{ $expense->title }} {{ $expense->project?->project_name ?? '—' }} {{ $expense->expense_category ?? $expense->category ?? '—' }} {{ $expense->expense_date?->format('d/m/Y') }} {{ number_format($expense->amount, 2) }}
{{ __('admin.dashboard.no_data') }}
{{-- ── RECENT PROJECTS TABLE ───────────────────────────────── --}}
{{ __('admin.dashboard.recent_projects') }}
@can('view_projects') {{ __('admin.dashboard.view_all') }} @endcan
@forelse($recentProjects as $project) @empty @endforelse
{{ __('admin.projects.fields.project_name') }} {{ __('admin.projects.fields.client_id') }} {{ __('admin.projects.fields.status') }} {{ __('admin.dashboard.progress') }} {{ __('admin.projects.fields.start_date') }}
{{ $project->project_name ?: $project->name }} {{ $project->client?->name ?? '—' }} {{ __('admin.projects.statuses.'.$project->status) }} @php $pct = $project->progress_percentage ?? 0; @endphp
{{ $pct }}%
{{ $project->start_date?->format('d/m/Y') ?? '—' }}
{{ __('admin.dashboard.no_data') }}
{{-- page-content --}}
{{-- content-container --}}
{{-- page-content-wrapper --}} @endsection @push('scripts') @endpush