$section, 'counts' => [ 'users' => User::count(), 'djs' => DjProfile::count(), 'businesses' => Business::count(), 'clients' => User::whereHas('roles', fn ($query) => $query->where('name', 'client'))->count(), 'bookings' => Booking::count(), 'enquiries' => Enquiry::count(), 'reviews' => Review::count(), ], ]; $data += match ($section) { 'users' => ['users' => User::with('roles')->latest()->paginate(20)], 'djs' => ['djs' => DjProfile::with(['user', 'business'])->latest()->paginate(20)], 'clients' => ['clients' => User::whereHas('roles', fn ($query) => $query->where('name', 'client'))->withCount(['enquiries', 'bookings'])->latest()->paginate(20)], 'bookings' => ['bookings' => Booking::with(['client', 'djProfile'])->latest('event_date')->paginate(20)], 'payments' => ['bookings' => Booking::with(['client', 'djProfile'])->latest()->paginate(20)], 'reviews' => ['reviews' => Review::with(['user', 'djProfile'])->latest()->paginate(20)], 'roles' => ['roles' => Role::withCount('users')->orderBy('name')->get()], 'reports' => ['report' => [ 'booking_value' => Booking::sum('total'), 'deposits' => Booking::sum('deposit'), 'published_djs' => DjProfile::where('is_published', true)->count(), 'pending_reviews' => Review::where('status', 'pending')->count(), ]], default => [], }; return view("admin.sections.{$section}", $data); } }