$this->getUserMetrics(), 'bookingMetrics' => $this->getBookingMetrics(), 'timelineMetrics' => $this->getTimelineMetrics(), 'postMetrics' => $this->getPostMetrics(), ]; } private function getUserMetrics(): array { return Cache::remember('admin.metrics.users', 300, fn () => [ 'total_active' => User::query() ->where('status', UserStatus::Active) ->whereIn('user_type', [UserType::Individual, UserType::Company]) ->count(), 'individual' => User::query() ->where('user_type', UserType::Individual) ->where('status', UserStatus::Active) ->count(), 'company' => User::query() ->where('user_type', UserType::Company) ->where('status', UserStatus::Active) ->count(), 'deactivated' => User::query() ->where('status', UserStatus::Deactivated) ->whereIn('user_type', [UserType::Individual, UserType::Company]) ->count(), 'new_this_month' => User::query() ->whereIn('user_type', [UserType::Individual, UserType::Company]) ->whereMonth('created_at', now()->month) ->whereYear('created_at', now()->year) ->count(), ]); } private function getBookingMetrics(): array { return Cache::remember('admin.metrics.bookings', 300, function () { $total = Consultation::query() ->whereIn('status', [ConsultationStatus::Completed, ConsultationStatus::NoShow]) ->count(); $noShows = Consultation::query() ->where('status', ConsultationStatus::NoShow) ->count(); return [ 'pending' => Consultation::query() ->where('status', ConsultationStatus::Pending) ->count(), 'today' => Consultation::query() ->whereDate('booking_date', today()) ->where('status', ConsultationStatus::Approved) ->count(), 'this_week' => Consultation::query() ->whereBetween('booking_date', [now()->startOfWeek(), now()->endOfWeek()]) ->whereIn('status', [ConsultationStatus::Approved, ConsultationStatus::Pending]) ->count(), 'this_month' => Consultation::query() ->whereMonth('booking_date', now()->month) ->whereYear('booking_date', now()->year) ->count(), 'free' => Consultation::query() ->where('consultation_type', ConsultationType::Free) ->count(), 'paid' => Consultation::query() ->where('consultation_type', ConsultationType::Paid) ->count(), 'no_show_rate' => $total > 0 ? round(($noShows / $total) * 100, 1) : 0, ]; }); } private function getTimelineMetrics(): array { return Cache::remember('admin.metrics.timelines', 300, fn () => [ 'active' => Timeline::query() ->where('status', TimelineStatus::Active) ->count(), 'archived' => Timeline::query() ->where('status', TimelineStatus::Archived) ->count(), 'updates_this_week' => TimelineUpdate::query() ->where('created_at', '>=', now()->subWeek()) ->count(), ]); } private function getPostMetrics(): array { return Cache::remember('admin.metrics.posts', 300, fn () => [ 'total_published' => Post::query() ->where('status', PostStatus::Published) ->count(), 'this_month' => Post::query() ->where('status', PostStatus::Published) ->whereMonth('published_at', now()->month) ->whereYear('published_at', now()->year) ->count(), ]); } }; ?>
{{ __('admin_metrics.title') }} {{ __('admin_metrics.subtitle') }}
{{-- User Metrics Card --}}
{{ __('admin_metrics.clients') }}
{{ __('admin_metrics.total_active') }} {{ $userMetrics['total_active'] }}
{{ __('admin_metrics.individual') }} {{ $userMetrics['individual'] }}
{{ __('admin_metrics.company') }} {{ $userMetrics['company'] }}
{{ __('admin_metrics.deactivated') }} {{ $userMetrics['deactivated'] }}
{{ __('admin_metrics.new_this_month') }} {{ $userMetrics['new_this_month'] }}
{{-- Booking Metrics Card --}}
{{ __('admin_metrics.consultations') }}
{{ __('admin_metrics.pending_requests') }} {{ $bookingMetrics['pending'] }}
{{ __('admin_metrics.today') }} {{ $bookingMetrics['today'] }}
{{ __('admin_metrics.this_week') }} {{ $bookingMetrics['this_week'] }}
{{ __('admin_metrics.this_month') }} {{ $bookingMetrics['this_month'] }}
{{ __('admin_metrics.free') }} {{ $bookingMetrics['free'] }}
{{ __('admin_metrics.paid') }} {{ $bookingMetrics['paid'] }}
{{ __('admin_metrics.no_show_rate') }} {{ $bookingMetrics['no_show_rate'] }}%
{{-- Timeline Metrics Card --}}
{{ __('admin_metrics.timelines') }}
{{ __('admin_metrics.active_cases') }} {{ $timelineMetrics['active'] }}
{{ __('admin_metrics.archived') }} {{ $timelineMetrics['archived'] }}
{{ __('admin_metrics.updates_this_week') }} {{ $timelineMetrics['updates_this_week'] }}
{{-- Posts Metrics Card --}}
{{ __('admin_metrics.posts') }}
{{ __('admin_metrics.total_published') }} {{ $postMetrics['total_published'] }}
{{ __('admin_metrics.published_this_month') }} {{ $postMetrics['this_month'] }}