38 lines
1.2 KiB
PHP
38 lines
1.2 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Models\AttendanceRecord;
|
|
use App\Models\DrawResult;
|
|
use App\Models\Member;
|
|
use App\Models\Prize;
|
|
use Illuminate\View\View;
|
|
|
|
class DashboardController extends Controller
|
|
{
|
|
public function index(): View
|
|
{
|
|
$totalMembers = Member::count();
|
|
$hadir = AttendanceRecord::count();
|
|
|
|
$stats = [
|
|
'total_members' => $totalMembers,
|
|
'hadir' => $hadir,
|
|
'belum_hadir' => max($totalMembers - $hadir, 0),
|
|
'total_prizes' => Prize::count(),
|
|
'prizes_disahkan' => Prize::where('status', Prize::STATUS_DISAHKAN)->count(),
|
|
'prizes_belum' => Prize::available()->count(),
|
|
'pemenang_disahkan' => DrawResult::where('status', DrawResult::STATUS_CONFIRMED)->count(),
|
|
'cabutan_dibatalkan' => DrawResult::where('status', DrawResult::STATUS_CANCELLED)->count(),
|
|
];
|
|
|
|
$recentWinners = DrawResult::with(['member', 'prize'])
|
|
->where('status', DrawResult::STATUS_CONFIRMED)
|
|
->latest('confirmed_at')
|
|
->take(8)
|
|
->get();
|
|
|
|
return view('dashboard', compact('stats', 'recentWinners'));
|
|
}
|
|
}
|