feat: public check-in flow and attendance (Fasa 5)

- AttendanceService: staffCheckin and walkInRegister methods
- CheckinController: QR-based check-in (staff & walk-in external)
- AttendanceCheckController: semak kehadiran & sijil status
- Views: checkin show/success/already/unavailable, semak show/result

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Saufi
2026-05-16 20:20:27 +08:00
parent 32428733d6
commit d0ebaf8433
9 changed files with 674 additions and 2 deletions

View File

@@ -0,0 +1,31 @@
@extends('layouts.public')
@section('title', 'Sudah Check-In')
@section('hero')
<h4 class="mb-1">{{ $program->title }}</h4>
<div class="opacity-75 small"><i class="bi bi-calendar3 me-1"></i>{{ $program->start_date->format('d M Y') }}</div>
@endsection
@section('content')
<div class="checkin-card card p-4 text-center">
<div class="mb-3">
<div class="rounded-circle bg-warning bg-opacity-10 d-inline-flex align-items-center justify-content-center mb-3"
style="width:80px; height:80px;">
<i class="bi bi-exclamation-circle-fill text-warning" style="font-size:2.5rem;"></i>
</div>
<h5 class="fw-bold text-warning mb-1">Sudah Check-In</h5>
<p class="text-muted mb-0">Kehadiran anda sudah direkodkan sebelum ini.</p>
</div>
<div class="bg-light rounded p-3 text-start">
<div class="row g-2">
<div class="col-5 text-muted small">Nama</div>
<div class="col-7 fw-medium small">{{ $participant->name }}</div>
<div class="col-5 text-muted small">Masa Check-In</div>
<div class="col-7 small">{{ $attendance->checked_in_at->format('d M Y, H:i') }}</div>
<div class="col-5 text-muted small">Sesi</div>
<div class="col-7 small"><span class="badge bg-primary">{{ Str::ucfirst($attendance->attendance_session) }}</span></div>
</div>
</div>
</div>
@endsection