middleware('auth'); $this->middleware(\App\Http\Middleware\CheckRole::class . ':admin'); } public function index() { // Statistik Dasar $totalPengguna = User::count(); $totalBarang = Barang::count(); $totalPesanan = Pesanan::count(); $totalPendapatan = Transaksi::where('status', 'dibayar') ->sum('total_pembayaran'); // Pesanan Terbaru $pesananTerbaru = Pesanan::with('user') ->latest() ->take(5) ->get(); // Produk Terlaris $produkTerlaris = Barang::select('barang.*', DB::raw('COUNT(pesanan.id) as total_terjual')) ->leftJoin('pesanan', 'barang.id', '=', 'pesanan.barang_id') ->where(function ($query) { $query->whereNull('pesanan.status') ->orWhere('pesanan.status', '!=', 'cancelled'); }) ->groupBy('barang.id') ->orderBy('total_terjual', 'desc') ->take(5) ->get(); // Data aktivitas $aktivitasTerbaru = collect(); // Aktivitas pesanan terbaru $pesananAktivitas = Pesanan::with('user') ->latest() ->take(3) ->get() ->map(function ($pesanan) { return (object)[ 'type' => 'order', 'description' => "Pesanan baru #{$pesanan->id} dari {$pesanan->user->nama}", 'created_at' => $pesanan->created_at ]; }); // Aktivitas transaksi terbaru $transaksiAktivitas = Transaksi::with('user') ->latest() ->take(3) ->get() ->map(function ($transaksi) { return (object)[ 'type' => 'payment', 'description' => "Pembayaran sebesar Rp " . number_format($transaksi->total_pembayaran, 0, ',', '.') . " dari {$transaksi->user->nama}", 'created_at' => $transaksi->created_at ]; }); // Aktivitas user terbaru $userAktivitas = User::latest() ->take(3) ->get() ->map(function ($user) { return (object)[ 'type' => 'user', 'description' => "Pengguna baru terdaftar: {$user->nama}", 'created_at' => $user->created_at ]; }); // Gabungkan semua aktivitas $aktivitasTerbaru = $pesananAktivitas->concat($transaksiAktivitas) ->concat($userAktivitas) ->sortByDesc('created_at') ->take(5); return view('admin.dashboard', compact( 'totalPengguna', 'totalBarang', 'totalPesanan', 'totalPendapatan', 'pesananTerbaru', 'produkTerlaris', 'aktivitasTerbaru' )); } }