199 lines
9.2 KiB
PHP
199 lines
9.2 KiB
PHP
@extends('admin.layouts.app')
|
|
@section('title', 'Dashboard')
|
|
|
|
@section('content')
|
|
|
|
{{-- EARLY WARNING: Periode Hampir Selesai --}}
|
|
@if($periodeHampirSelesai && $periodeAktif)
|
|
<div class="alert mb-4 border-0 shadow-sm" style="background: linear-gradient(135deg, #fff3cd 0%, #ffe0b2 100%); border-left: 5px solid #ff9800 !important;">
|
|
<div class="d-flex align-items-center gap-3">
|
|
<div style="width:50px;height:50px;background:#ff9800;border-radius:50%;display:flex;align-items:center;justify-content:center;animation: pulse-warning 2s infinite;">
|
|
<i class="bi bi-exclamation-triangle-fill" style="font-size:1.5rem;color:#fff;"></i>
|
|
</div>
|
|
<div class="flex-grow-1">
|
|
<div style="font-weight:700;color:#e65100;font-size:1rem;">
|
|
<i class="bi bi-clock-history me-1"></i>Peringatan: Periode Hampir Berakhir!
|
|
</div>
|
|
<div style="color:#bf360c;font-size:0.88rem;">
|
|
Periode <strong>{{ $periodeAktif->nama }}</strong> akan berakhir pada
|
|
<strong>{{ \Carbon\Carbon::parse($periodeAktif->tanggal_selesai)->translatedFormat('d F Y') }}</strong>
|
|
@if($sisaHari == 0)
|
|
— <span class="badge bg-danger">Hari ini!</span>
|
|
@elseif($sisaHari == 1)
|
|
— <span class="badge bg-danger">Besok!</span>
|
|
@else
|
|
— <span class="badge bg-warning text-dark">{{ $sisaHari }} hari lagi</span>
|
|
@endif
|
|
<br><small class="text-muted">Segera selesaikan proses penilaian dan perhitungan SAW sebelum periode berakhir.</small>
|
|
</div>
|
|
</div>
|
|
<div>
|
|
<a href="{{ route('admin.saw.index', $periodeAktif) }}" class="btn btn-warning btn-sm shadow-sm">
|
|
<i class="bi bi-calculator me-1"></i>Proses SAW
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<style>
|
|
@keyframes pulse-warning {
|
|
0% { box-shadow: 0 0 0 0 rgba(255, 152, 0, 0.5); }
|
|
70% { box-shadow: 0 0 0 12px rgba(255, 152, 0, 0); }
|
|
100% { box-shadow: 0 0 0 0 rgba(255, 152, 0, 0); }
|
|
}
|
|
</style>
|
|
@endif
|
|
|
|
{{-- STAT CARDS --}}
|
|
<div class="row g-3 mb-4">
|
|
<div class="col-md-3">
|
|
<div class="card h-100">
|
|
<div class="card-body d-flex align-items-center gap-3 p-4">
|
|
<div style="width:50px;height:50px;background:#e0f2e9;border-radius:12px;display:flex;align-items:center;justify-content:center;">
|
|
<i class="bi bi-people-fill" style="font-size:1.4rem;color:#2d7a4f;"></i>
|
|
</div>
|
|
<div>
|
|
<div class="text-muted" style="font-size:0.78rem;">Total Warga</div>
|
|
<div style="font-size:1.6rem;font-weight:700;color:#1a3c2e;line-height:1.1;">{{ $totalWarga }}</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-3">
|
|
<div class="card h-100">
|
|
<div class="card-body d-flex align-items-center gap-3 p-4">
|
|
<div style="width:50px;height:50px;background:#fef9c3;border-radius:12px;display:flex;align-items:center;justify-content:center;">
|
|
<i class="bi bi-check-circle-fill" style="font-size:1.4rem;color:#ca8a04;"></i>
|
|
</div>
|
|
<div>
|
|
<div class="text-muted" style="font-size:0.78rem;">Penerima BLT</div>
|
|
<div style="font-size:1.6rem;font-weight:700;color:#1a3c2e;line-height:1.1;">{{ $totalPenerima }}</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-3">
|
|
<div class="card h-100">
|
|
<div class="card-body d-flex align-items-center gap-3 p-4">
|
|
<div style="width:50px;height:50px;background:#dbeafe;border-radius:12px;display:flex;align-items:center;justify-content:center;">
|
|
<i class="bi bi-clipboard-data-fill" style="font-size:1.4rem;color:#2563eb;"></i>
|
|
</div>
|
|
<div>
|
|
<div class="text-muted" style="font-size:0.78rem;">Total Penilaian</div>
|
|
<div style="font-size:1.6rem;font-weight:700;color:#1a3c2e;line-height:1.1;">{{ $totalPenilaian }}</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-3">
|
|
<div class="card h-100">
|
|
<div class="card-body d-flex align-items-center gap-3 p-4">
|
|
<div style="width:50px;height:50px;background:#fce7f3;border-radius:12px;display:flex;align-items:center;justify-content:center;">
|
|
<i class="bi bi-calendar3" style="font-size:1.4rem;color:#db2777;"></i>
|
|
</div>
|
|
<div>
|
|
<div class="text-muted" style="font-size:0.78rem;">Periode Aktif</div>
|
|
<div style="font-size:0.95rem;font-weight:700;color:#1a3c2e;line-height:1.3;">
|
|
{{ $periodeAktif?->nama ?? 'Belum Ada' }}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
{{-- AKSI CEPAT --}}
|
|
@if($periodeAktif)
|
|
<div class="card mb-4">
|
|
<div class="card-body p-4">
|
|
<div class="d-flex align-items-center justify-content-between flex-wrap gap-3">
|
|
<div>
|
|
<div style="font-weight:700;color:#1a3c2e;font-size:1rem;">
|
|
<i class="bi bi-lightning-charge-fill text-warning me-2"></i>
|
|
Aksi Cepat — {{ $periodeAktif->nama }}
|
|
</div>
|
|
<div class="text-muted" style="font-size:0.8rem;">Periode sedang berjalan</div>
|
|
</div>
|
|
<div class="d-flex gap-2 flex-wrap">
|
|
@if(auth()->user()->hasRole('superadmin') || auth()->user()->hasRole('admin'))
|
|
<a href="{{ route('admin.penilaian.create') }}" class="btn btn-primary btn-sm">
|
|
<i class="bi bi-plus-circle me-1"></i>Tambah Penilaian
|
|
</a>
|
|
<a href="{{ route('admin.saw.index', $periodeAktif) }}" class="btn btn-success btn-sm">
|
|
<i class="bi bi-calculator me-1"></i>Proses SAW
|
|
</a>
|
|
@endif
|
|
<a href="{{ route('admin.saw.hasil', $periodeAktif) }}" class="btn btn-outline-primary btn-sm">
|
|
<i class="bi bi-trophy me-1"></i>Lihat Hasil
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
@endif
|
|
|
|
{{-- TABEL PERIODE --}}
|
|
<div class="card">
|
|
<div class="card-header d-flex justify-content-between align-items-center">
|
|
<span><i class="bi bi-clock-history me-2"></i>Periode Seleksi Terbaru</span>
|
|
@if(auth()->user()->hasRole('superadmin') || auth()->user()->hasRole('admin'))
|
|
<a href="{{ route('admin.periode.create') }}" class="btn btn-primary btn-sm">
|
|
<i class="bi bi-plus-circle me-1"></i>Tambah Periode
|
|
</a>
|
|
@endif
|
|
</div>
|
|
<div class="card-body p-0">
|
|
<div class="table-responsive">
|
|
<table class="table mb-0">
|
|
<thead>
|
|
<tr>
|
|
<th>Nama Periode</th>
|
|
<th>Tanggal Mulai</th>
|
|
<th>Tanggal Selesai</th>
|
|
<th>Kuota</th>
|
|
<th>Status</th>
|
|
<th>Aksi</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
@forelse($periodeList as $p)
|
|
<tr>
|
|
<td class="fw-semibold">{{ $p->nama }}</td>
|
|
<td>{{ \Carbon\Carbon::parse($p->tanggal_mulai)->format('d/m/Y') }}</td>
|
|
<td>{{ \Carbon\Carbon::parse($p->tanggal_selesai)->format('d/m/Y') }}</td>
|
|
<td>{{ $p->kuota_penerima }} orang</td>
|
|
<td>
|
|
@if($p->status === 'aktif')
|
|
<span class="badge bg-success">Aktif</span>
|
|
@elseif($p->status === 'selesai')
|
|
<span class="badge bg-primary">Selesai</span>
|
|
@else
|
|
<span class="badge bg-secondary">Draft</span>
|
|
@endif
|
|
</td>
|
|
<td>
|
|
@if(auth()->user()->hasRole('superadmin') || auth()->user()->hasRole('admin'))
|
|
<a href="{{ route('admin.saw.index', $p) }}" class="btn btn-sm btn-outline-primary">
|
|
<i class="bi bi-calculator me-1"></i>SAW
|
|
</a>
|
|
@else
|
|
<a href="{{ route('admin.saw.hasil', $p) }}" class="btn btn-sm btn-outline-success">
|
|
<i class="bi bi-eye me-1"></i>Hasil
|
|
</a>
|
|
@endif
|
|
</td>
|
|
</tr>
|
|
@empty
|
|
<tr>
|
|
<td colspan="6" class="text-center text-muted py-4">
|
|
<i class="bi bi-inbox fs-4 d-block mb-2"></i>
|
|
Belum ada periode seleksi.
|
|
</td>
|
|
</tr>
|
|
@endforelse
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
@endsection |