From ff6caa601036f95c4bbc059f7d83f1bf60aa819e Mon Sep 17 00:00:00 2001 From: Stephen Gesityan Date: Wed, 14 May 2025 20:53:49 +0700 Subject: [PATCH] Admin Revisi Done --- .../Controllers/admin/AdminController.php | 59 ++- resources/views/admin/dashboard.blade.php | 424 ++++++++++-------- .../views/admin/revenues/index.blade.php | 131 +++--- resources/views/layouts/admin.blade.php | 2 +- 4 files changed, 353 insertions(+), 263 deletions(-) diff --git a/app/Http/Controllers/admin/AdminController.php b/app/Http/Controllers/admin/AdminController.php index a96fba0..d60bd3d 100644 --- a/app/Http/Controllers/admin/AdminController.php +++ b/app/Http/Controllers/admin/AdminController.php @@ -89,18 +89,23 @@ public function index() ->with(['user', 'table']) ->get(); - // Menghitung data analitik untuk diagram booking 7 hari terakhir - $lastWeekBookings = []; + // Menghitung data analitik untuk diagram pendapatan 7 hari terakhir + $lastWeekRevenue = []; for ($i = 6; $i >= 0; $i--) { $date = now()->subDays($i); - $count = Booking::whereDate('created_at', $date) + $dateStart = $date->copy()->startOfDay(); + $dateEnd = $date->copy()->endOfDay(); + + $dayRevenue = Booking::whereBetween('created_at', [$dateStart, $dateEnd]) ->whereHas('table', function ($query) use ($venue) { $query->where('venue_id', $venue->id); }) - ->count(); - $lastWeekBookings[] = [ + ->where('status', 'paid') + ->sum('total_amount'); // Asumsikan terdapat kolom 'amount' yang menyimpan nilai pembayaran + + $lastWeekRevenue[] = [ 'date' => $date->format('d/m'), - 'count' => $count + 'revenue' => (float)$dayRevenue // Pastikan revenue dikonversi ke float ]; } @@ -209,8 +214,41 @@ public function index() } } - // NEW: REMOVE REVENUE BY DAY OF WEEK - // Hapus bagian revenueByDay karena tidak diperlukan lagi + // NEW: TOP 5 USERS LEADERBOARD + // Ambil 5 pengguna dengan jumlah booking terbanyak dari 6 bulan terakhir + // Kecualikan users yang merupakan admin dari venue yang sedang dilihat + $topUsers = Booking::where('bookings.created_at', '>=', now()->subMonths(6)) + ->whereHas('table', function ($query) use ($venue) { + $query->where('venue_id', $venue->id); + }) + ->join('users', 'bookings.user_id', '=', 'users.id') + // Exclude users who are admins of this venue (venue_id matches current venue) + ->where(function($query) use ($venue) { + $query->whereNull('users.venue_id') + ->orWhere('users.venue_id', '!=', $venue->id); + }) + ->select( + 'user_id', + DB::raw('users.name as user_name'), + DB::raw('COUNT(*) as booking_count'), + DB::raw('SUM(bookings.total_amount) as total_spent') + ) + ->groupBy('user_id', 'users.name') + ->orderBy('booking_count', 'desc') + ->take(5) + ->get(); + + // Jika tidak ada data, buat array kosong yang terstruktur + if ($topUsers->isEmpty()) { + $topUsers = collect([ + [ + 'user_id' => 1, + 'user_name' => 'Belum ada data', + 'booking_count' => 0, + 'total_spent' => 0 + ] + ]); + } return view('admin.dashboard', compact( 'venue', @@ -225,9 +263,10 @@ public function index() 'monthlyRevenue', 'pendingBookings', 'paidBookings', - 'lastWeekBookings', + 'lastWeekRevenue', 'lastSixMonthsRevenue', - 'tableRevenue' + 'tableRevenue', + 'topUsers' // Hapus 'revenueByDay' dari compact )); } diff --git a/resources/views/admin/dashboard.blade.php b/resources/views/admin/dashboard.blade.php index 00fa602..596aa3b 100644 --- a/resources/views/admin/dashboard.blade.php +++ b/resources/views/admin/dashboard.blade.php @@ -107,12 +107,14 @@ class="font-semibold text-red-500">{{ $usedTables }}

- +
- +
-

Booking Per Hari (7 Hari Terakhir)

-
+
+

Tren Pendapatan Bulanan

+
+
@@ -140,12 +142,10 @@ class="font-semibold text-red-500">{{ $usedTables }}

{{ $booking->user->name }}

{{ $booking->table->name }} - + {{ ucfirst($booking->status) }}
@@ -161,27 +161,30 @@ class="text-xs px-2 py-0.5 rounded-full {{
- -
- + +
+
-
-

Pendapatan 6 Bulan Terakhir

-
-
+

Pendapatan 7 Hari Terakhir

+
-
- -
- -
+ +

Performa Pendapatan per Meja (Bulan Ini)

-
+
+ + +
+
+

Top 5 Pelanggan Loyal

+
+
+
@@ -189,67 +192,7 @@ class="text-xs px-2 py-0.5 rounded-full {{ @endpush diff --git a/resources/views/admin/revenues/index.blade.php b/resources/views/admin/revenues/index.blade.php index bd11645..0799c2a 100644 --- a/resources/views/admin/revenues/index.blade.php +++ b/resources/views/admin/revenues/index.blade.php @@ -12,18 +12,23 @@
- - Tanggal + Mulai +
- - Tanggal + Akhir +
-