diff --git a/src/app/Http/Controllers/Public/AttendanceCheckController.php b/src/app/Http/Controllers/Public/AttendanceCheckController.php index c8c3666..b362976 100644 --- a/src/app/Http/Controllers/Public/AttendanceCheckController.php +++ b/src/app/Http/Controllers/Public/AttendanceCheckController.php @@ -3,6 +3,7 @@ namespace App\Http\Controllers\Public; use App\Http\Controllers\Controller; +use App\Jobs\SendCertificateEmailJob; use App\Models\Certificate; use App\Models\Participant; use App\Models\ProgramQrCode; @@ -57,4 +58,35 @@ class AttendanceCheckController extends Controller return view('public.semak.result', compact('program', 'qrCode', 'participant', 'attendance', 'certificate')) ->with('found', (bool) $attendance); } + + public function updateEmail(string $qr_token, Request $request): View + { + $qrCode = ProgramQrCode::where('token', $qr_token)->where('is_active', true)->firstOrFail(); + $program = $qrCode->program; + + $request->validate([ + 'no_kp' => ['required', 'digits:12'], + 'email' => ['required', 'email', 'max:255'], + ], [ + 'email.required' => 'Sila masukkan alamat emel.', + 'email.email' => 'Format emel tidak sah.', + ]); + + $participant = Participant::where('no_kp', $request->no_kp)->firstOrFail(); + $participant->update(['email' => $request->email]); + + $attendance = $participant->attendanceForProgram($program->id); + $certificate = Certificate::where('program_id', $program->id) + ->where('participant_id', $participant->id) + ->first(); + + // Masukkan queue hantar e-sijil jika sijil sudah dijana dan belum dihantar + if ($certificate && $certificate->status === 'generated' && ! $certificate->emailed_at) { + SendCertificateEmailJob::dispatch($certificate); + } + + return view('public.semak.result', compact('program', 'qrCode', 'participant', 'attendance', 'certificate')) + ->with('found', true) + ->with('email_updated', true); + } } diff --git a/src/resources/views/public/semak/result.blade.php b/src/resources/views/public/semak/result.blade.php index 8d40112..1b3522d 100644 --- a/src/resources/views/public/semak/result.blade.php +++ b/src/resources/views/public/semak/result.blade.php @@ -51,6 +51,51 @@ {{-- Certificate status --}} @if($program->isDownloadOpen()) + + @if(! $participant->email) + {{-- Emel belum ada — minta emel sebelum sijil dihantar --}} +