first
This commit is contained in:
70
resources/views/reports/index.blade.php
Normal file
70
resources/views/reports/index.blade.php
Normal file
@@ -0,0 +1,70 @@
|
||||
@extends('layouts.app')
|
||||
@section('title', 'Laporan')
|
||||
|
||||
@section('content')
|
||||
@php
|
||||
$exportBtns = fn($type) => '<div class="btn-group btn-group-sm">'
|
||||
.'<a href="'.route('reports.export',$type).'?format=xlsx" class="btn btn-outline-teal"><i class="bi bi-file-earmark-excel"></i> Excel</a>'
|
||||
.'<a href="'.route('reports.export',$type).'?format=pdf" class="btn btn-outline-secondary"><i class="bi bi-file-earmark-pdf"></i> PDF</a></div>';
|
||||
@endphp
|
||||
|
||||
<ul class="nav nav-tabs mb-3" role="tablist">
|
||||
<li class="nav-item"><button class="nav-link active" data-bs-toggle="tab" data-bs-target="#tab-winners">Pemenang ({{ $winners->count() }})</button></li>
|
||||
<li class="nav-item"><button class="nav-link" data-bs-toggle="tab" data-bs-target="#tab-undrawn">Belum Dicabut ({{ $undrawn->count() }})</button></li>
|
||||
<li class="nav-item"><button class="nav-link" data-bs-toggle="tab" data-bs-target="#tab-cancelled">Dibatalkan ({{ $cancelled->count() }})</button></li>
|
||||
<li class="nav-item"><button class="nav-link" data-bs-toggle="tab" data-bs-target="#tab-attendance">Kehadiran</button></li>
|
||||
</ul>
|
||||
|
||||
<div class="tab-content">
|
||||
<div class="tab-pane fade show active" id="tab-winners">
|
||||
<div class="card"><div class="card-body">
|
||||
<div class="d-flex justify-content-between mb-2"><h6 class="fw-bold mb-0">Senarai Pemenang Disahkan</h6>{!! $exportBtns('winners') !!}</div>
|
||||
<div class="table-responsive"><table class="table table-koipb table-hover align-middle">
|
||||
<thead><tr><th>Susunan</th><th>Hadiah</th><th>Pemenang</th><th>No Pekerja</th><th>Jabatan</th><th>Masa Disahkan</th></tr></thead>
|
||||
<tbody>
|
||||
@forelse($winners as $w)
|
||||
<tr><td><span class="badge bg-gold">#{{ $w->prize->draw_order }}</span></td>
|
||||
<td>{{ $w->prize->nama_hadiah }}</td><td class="fw-semibold">{{ $w->member->nama }}</td>
|
||||
<td>{{ $w->member->no_pekerja }}</td><td>{{ $w->member->jabatan }}</td>
|
||||
<td><small>{{ $w->confirmed_at?->format('d/m/Y H:i') }}</small></td></tr>
|
||||
@empty<tr><td colspan="6" class="text-center text-muted py-3">Belum ada pemenang.</td></tr>@endforelse
|
||||
</tbody></table></div>
|
||||
</div></div>
|
||||
</div>
|
||||
|
||||
<div class="tab-pane fade" id="tab-undrawn">
|
||||
<div class="card"><div class="card-body">
|
||||
<div class="d-flex justify-content-between mb-2"><h6 class="fw-bold mb-0">Hadiah Belum Dicabut</h6>{!! $exportBtns('undrawn') !!}</div>
|
||||
<div class="table-responsive"><table class="table table-koipb table-hover align-middle">
|
||||
<thead><tr><th>Susunan</th><th>Kod</th><th>Hadiah</th><th>Kategori</th><th>Status</th></tr></thead>
|
||||
<tbody>
|
||||
@forelse($undrawn as $p)
|
||||
<tr><td><span class="badge bg-dark2">#{{ $p->draw_order }}</span></td><td>{{ $p->kod_hadiah }}</td>
|
||||
<td>{{ $p->nama_hadiah }}</td><td>{{ $p->kategori }}</td><td><span class="pill pill-belum">{{ $p->statusLabel() }}</span></td></tr>
|
||||
@empty<tr><td colspan="5" class="text-center text-muted py-3">Semua hadiah telah dicabut.</td></tr>@endforelse
|
||||
</tbody></table></div>
|
||||
</div></div>
|
||||
</div>
|
||||
|
||||
<div class="tab-pane fade" id="tab-cancelled">
|
||||
<div class="card"><div class="card-body">
|
||||
<div class="d-flex justify-content-between mb-2"><h6 class="fw-bold mb-0">Cabutan Dibatalkan</h6>{!! $exportBtns('cancelled') !!}</div>
|
||||
<div class="table-responsive"><table class="table table-koipb table-hover align-middle">
|
||||
<thead><tr><th>Hadiah</th><th>Nama</th><th>No Pekerja</th><th>Sebab</th><th>Cubaan</th><th>Masa</th></tr></thead>
|
||||
<tbody>
|
||||
@forelse($cancelled as $c)
|
||||
<tr><td>{{ $c->prize->nama_hadiah }}</td><td>{{ $c->member->nama }}</td><td>{{ $c->member->no_pekerja }}</td>
|
||||
<td>{{ $c->sebab_batal }}</td><td>#{{ $c->attempt_number }}</td><td><small>{{ $c->cancelled_at?->format('d/m/Y H:i') }}</small></td></tr>
|
||||
@empty<tr><td colspan="6" class="text-center text-muted py-3">Tiada cabutan dibatalkan.</td></tr>@endforelse
|
||||
</tbody></table></div>
|
||||
</div></div>
|
||||
</div>
|
||||
|
||||
<div class="tab-pane fade" id="tab-attendance">
|
||||
<div class="card"><div class="card-body">
|
||||
<div class="d-flex justify-content-between mb-2"><h6 class="fw-bold mb-0">Senarai Kehadiran</h6>{!! $exportBtns('attendance') !!}</div>
|
||||
<p class="text-muted">Lihat senarai penuh & penapis di <a href="{{ route('attendance.index') }}">Senarai Kehadiran</a>. Butang di atas untuk eksport.</p>
|
||||
</div></div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
35
resources/views/reports/pdf.blade.php
Normal file
35
resources/views/reports/pdf.blade.php
Normal file
@@ -0,0 +1,35 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<style>
|
||||
* { font-family: DejaVu Sans, sans-serif; }
|
||||
body { font-size: 11px; color: #222; }
|
||||
.head { border-bottom: 3px solid #0a8f9c; padding-bottom: 8px; margin-bottom: 12px; }
|
||||
.head h2 { margin: 0; color: #0a8f9c; }
|
||||
.head .sub { color: #555; font-size: 10px; }
|
||||
table { width: 100%; border-collapse: collapse; }
|
||||
th { background: #2b3036; color: #fff; padding: 6px; text-align: left; font-size: 10px; }
|
||||
td { padding: 5px 6px; border-bottom: 1px solid #ddd; }
|
||||
tr:nth-child(even) td { background: #f4f7f8; }
|
||||
.foot { margin-top: 10px; font-size: 9px; color: #888; text-align: right; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="head">
|
||||
<h2>{{ $title }}</h2>
|
||||
<div class="sub">Koperasi Iskandar Puteri Berhad (KOIPB) · Mesyuarat Agung Tahunan · Dijana: {{ now()->format('d/m/Y H:i') }}</div>
|
||||
</div>
|
||||
<table>
|
||||
<thead><tr>@foreach($headings as $h)<th>{{ $h }}</th>@endforeach</tr></thead>
|
||||
<tbody>
|
||||
@forelse($rows as $row)
|
||||
<tr>@foreach((array) $row as $cell)<td>{{ $cell }}</td>@endforeach</tr>
|
||||
@empty
|
||||
<tr><td colspan="{{ count($headings) }}" style="text-align:center;padding:14px;">Tiada rekod.</td></tr>
|
||||
@endforelse
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="foot">Jumlah rekod: {{ count($rows) }}</div>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user