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

@@ -61,8 +61,8 @@
<div>
<div class="text-muted small">Soalselidik Dijawab</div>
<div class="fs-3 fw-bold">{{ $stats['total_responses'] }}</div>
@if($stats['pending_emails'] > 0)
<div class="text-warning small"><i class="bi bi-envelope-fill me-1"></i>{{ $stats['pending_emails'] }} emel tertunda</div>
@if($stats['emails_pending'] > 0)
<div class="text-warning small"><i class="bi bi-envelope-fill me-1"></i>{{ $stats['emails_pending'] }} emel tertunda</div>
@else
<div class="text-muted small">Tiada emel tertunda</div>
@endif
@@ -72,6 +72,69 @@
</div>
</div>
{{-- Email & Download Status --}}
<div class="row g-3 mb-4">
<div class="col-12">
<div class="card border-0 shadow-sm">
<div class="card-header bg-white border-bottom py-3">
<span class="fw-semibold"><i class="bi bi-envelope-fill me-2 text-primary"></i>Status Penghantaran E-Sijil</span>
</div>
<div class="card-body">
<div class="row g-3">
<div class="col-6 col-md-3">
<div class="d-flex align-items-center gap-3 p-3 rounded-3 bg-secondary bg-opacity-10">
<div class="flex-shrink-0">
<i class="bi bi-hourglass-split text-secondary fs-3"></i>
</div>
<div>
<div class="text-muted small">Dalam Antrian</div>
<div class="fs-3 fw-bold lh-1">{{ $stats['emails_pending'] }}</div>
<div class="text-muted" style="font-size:.7rem;">menunggu / sedang cuba</div>
</div>
</div>
</div>
<div class="col-6 col-md-3">
<div class="d-flex align-items-center gap-3 p-3 rounded-3 bg-success bg-opacity-10">
<div class="flex-shrink-0">
<i class="bi bi-envelope-check-fill text-success fs-3"></i>
</div>
<div>
<div class="text-muted small">Berjaya Dihantar</div>
<div class="fs-3 fw-bold lh-1">{{ $stats['emails_sent'] }}</div>
<div class="text-muted" style="font-size:.7rem;">emel e-sijil</div>
</div>
</div>
</div>
<div class="col-6 col-md-3">
<div class="d-flex align-items-center gap-3 p-3 rounded-3 bg-danger bg-opacity-10">
<div class="flex-shrink-0">
<i class="bi bi-envelope-x-fill text-danger fs-3"></i>
</div>
<div>
<div class="text-muted small">Gagal Dihantar</div>
<div class="fs-3 fw-bold lh-1">{{ $stats['emails_failed'] }}</div>
<div class="text-muted" style="font-size:.7rem;">semua percubaan gagal</div>
</div>
</div>
</div>
<div class="col-6 col-md-3">
<div class="d-flex align-items-center gap-3 p-3 rounded-3 bg-warning bg-opacity-10">
<div class="flex-shrink-0">
<i class="bi bi-download text-warning fs-3"></i>
</div>
<div>
<div class="text-muted small">Sijil Dimuat Turun</div>
<div class="fs-3 fw-bold lh-1">{{ $stats['downloaded_certs'] }}</div>
<div class="text-muted" style="font-size:.7rem;">{{ $stats['total_download_count'] }} kali klik pautan</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
{{-- Recent Programs --}}
<div class="row g-3">
<div class="col-lg-8">

View File

@@ -100,12 +100,17 @@
<th>Sesi</th>
<th>Sumber</th>
<th>Status</th>
<th>E-Sijil</th>
<th class="text-end">Tindakan</th>
</tr>
</thead>
<tbody>
@foreach($programParticipants as $i => $pp)
@php $p = $pp->participant; @endphp
@php
$p = $pp->participant;
$cert = $certificates[$pp->participant_id] ?? null;
$emailLog = $cert ? ($emailLogs[$cert->id] ?? null) : null;
@endphp
<tr>
<td class="text-muted small">{{ $programParticipants->firstItem() + $i }}</td>
<td>
@@ -143,6 +148,54 @@
<span class="badge bg-light text-dark border">Berdaftar</span>
@endif
</td>
<td style="min-width:130px;">
@if(! $cert)
<span class="text-muted small"></span>
@else
{{-- Sijil --}}
@if(in_array($cert->status, ['generated','emailed','downloaded']))
<span class="badge bg-success-subtle text-success border border-success-subtle">
<i class="bi bi-award-fill me-1"></i>Jana
</span>
@elseif($cert->status === 'pending')
<span class="badge bg-warning-subtle text-warning border border-warning-subtle">
<i class="bi bi-hourglass-split me-1"></i>Menjana...
</span>
@elseif($cert->status === 'failed')
<span class="badge bg-danger-subtle text-danger border border-danger-subtle">
<i class="bi bi-x-circle me-1"></i>Gagal Jana
</span>
@endif
{{-- Emel --}}
@if($emailLog)
@if($emailLog->status === 'sent')
<div class="text-success mt-1" style="font-size:.7rem;">
<i class="bi bi-envelope-check me-1"></i>Emel Dihantar
</div>
@elseif($emailLog->status === 'failed')
<div class="text-danger mt-1" style="font-size:.7rem;">
<i class="bi bi-envelope-x me-1"></i>Emel Gagal
</div>
@elseif($emailLog->status === 'pending')
<div class="text-warning mt-1" style="font-size:.7rem;">
<i class="bi bi-hourglass-split me-1"></i>Dalam Antrian
</div>
@endif
@elseif($cert->isGenerated())
<div class="text-muted mt-1" style="font-size:.7rem;">
<i class="bi bi-envelope me-1"></i>Belum Dihantar
</div>
@endif
{{-- Muat turun --}}
@if($cert->download_count > 0)
<div class="text-primary mt-1" style="font-size:.7rem;">
<i class="bi bi-download me-1"></i>{{ $cert->download_count }}× Muat Turun
</div>
@endif
@endif
</td>
<td class="text-end">
@if($pp->status !== 'checked_in')
<form method="POST"