status emel

This commit is contained in:
Saufi
2026-05-20 09:11:51 +08:00
parent 6b2769d506
commit 899507070c
6 changed files with 198 additions and 28 deletions

View File

@@ -3,6 +3,8 @@
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\Certificate;
use App\Models\EmailLog;
use App\Models\Participant;
use App\Models\Program;
use App\Models\ProgramParticipant;
@@ -40,6 +42,20 @@ class ParticipantController extends Controller
$programParticipants = $query->paginate(20)->withQueryString();
// Load certificates and latest email logs for displayed participants
$participantIds = $programParticipants->pluck('participant_id');
$certificates = Certificate::where('program_id', $program->id)
->whereIn('participant_id', $participantIds)
->get()
->keyBy('participant_id');
$certIds = $certificates->pluck('id');
$emailLogs = EmailLog::whereIn('certificate_id', $certIds)
->orderByDesc('id')
->get()
->groupBy('certificate_id')
->map->first();
$countRow = DB::table('program_participants')
->where('program_id', $program->id)
->selectRaw("COUNT(*) as total, SUM(is_pre_registered) as pre_registered, SUM(registration_source = 'walk_in') as walk_in, SUM(status = 'checked_in') as checked_in")
@@ -52,7 +68,7 @@ class ParticipantController extends Controller
'checked_in' => (int) ($countRow->checked_in ?? 0),
];
return view('admin.programs.participants.index', compact('program', 'programParticipants', 'counts'));
return view('admin.programs.participants.index', compact('program', 'programParticipants', 'counts', 'certificates', 'emailLogs'));
}
public function create(Program $program): View