first commit

This commit is contained in:
Saufi
2026-06-14 08:52:33 +08:00
commit 359229685d
87 changed files with 12477 additions and 0 deletions

View File

@@ -0,0 +1,45 @@
@extends('layouts.app')
@section('tajuk', 'Cipta Sesi Taklimat')
@section('saiz-container', 'container-kecil')
@section('kandungan')
<div class="kad">
<h1>Cipta Sesi Taklimat</h1>
<p class="teks-kecil">Hanya satu sesi dibenarkan dalam satu hari bagi setiap DUN.</p>
@if ($errors->any())
<div class="makluman makluman-ralat">{{ $errors->first() }}</div>
@endif
<form method="POST" action="{{ route('sesi.store') }}">
@csrf
<label for="dun_id">DUN</label>
<select id="dun_id" name="dun_id" required>
<option value=""> Pilih DUN </option>
@foreach ($senaraiDun as $dun)
<option value="{{ $dun->id }}" @selected(old('dun_id') == $dun->id)>
{{ $dun->code }} {{ $dun->nama }}
</option>
@endforeach
</select>
<label for="tarikh">Tarikh</label>
<input type="date" id="tarikh" name="tarikh" value="{{ old('tarikh', now()->toDateString()) }}" required>
<label for="nama">Nama Sesi</label>
<input type="text" id="nama" name="nama" value="{{ old('nama') }}"
placeholder="cth: Taklimat Petugas Sesi 1" required>
<label for="lokasi">Lokasi</label>
<input type="text" id="lokasi" name="lokasi" value="{{ old('lokasi') }}"
placeholder="cth: Dewan Serbaguna Gelang Patah" required>
<label for="masa">Masa (pilihan)</label>
<input type="text" id="masa" name="masa" value="{{ old('masa') }}"
placeholder="cth: 9:00 pagi - 12:00 tengah hari">
<button type="submit" class="btn btn-penuh">Cipta Sesi</button>
</form>
</div>
@endsection

View File

@@ -0,0 +1,58 @@
@extends('layouts.app')
@section('tajuk', 'Senarai Sesi Taklimat')
@section('kandungan')
<div class="kad">
<div style="display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:0.5rem;">
<h1 class="mb-0">Sesi Taklimat</h1>
<a href="{{ route('sesi.create') }}" class="btn">+ Cipta Sesi</a>
</div>
</div>
@if ($sesi->isEmpty())
<div class="kad teks-tengah">
<p>Tiada sesi taklimat lagi. Cipta sesi pertama anda.</p>
</div>
@else
<div class="kad" style="overflow-x:auto; padding:0;">
<table class="jadual">
<thead>
<tr>
<th>Tarikh</th>
<th>DUN</th>
<th>Sesi</th>
<th>Lokasi</th>
<th>Hadir</th>
<th>Status</th>
<th>Tindakan</th>
</tr>
</thead>
<tbody>
@foreach ($sesi as $s)
<tr>
<td>{{ $s->tarikh->format('d/m/Y') }}</td>
<td>{{ $s->dun->code ?? '' }} {{ $s->dun->nama ?? '-' }}</td>
<td>{{ $s->nama }}</td>
<td>{{ $s->lokasi }}</td>
<td>{{ $s->kehadiran_count }}</td>
<td>
@if ($s->is_active)
<span class="lencana lencana-hijau">Aktif</span>
@else
<span class="lencana lencana-kelabu">Ditutup</span>
@endif
</td>
<td>
<div class="baris-tindakan">
<a href="{{ route('sesi.show', $s) }}" class="btn btn-kecil">Urus</a>
<a href="{{ route('pengurus.senarai', $s) }}" class="btn btn-kecil btn-luar">Senarai</a>
</div>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
@endif
@endsection

View File

@@ -0,0 +1,27 @@
@extends('layouts.app')
@section('tajuk', 'QR Code: ' . $sesi->nama)
@section('kandungan')
<div class="kad teks-tengah">
<h1>Daftar Kehadiran Taklimat</h1>
<h2>{{ $sesi->dun->code ?? '' }} {{ $sesi->dun->nama ?? '' }}</h2>
<p>
<strong>{{ $sesi->nama }}</strong><br>
{{ $sesi->tarikh->format('d/m/Y') }}@if ($sesi->masa) | {{ $sesi->masa }}@endif<br>
{{ $sesi->lokasi }}
</p>
<div class="qr-wrap">
{!! QrCode::size(420)->margin(1)->generate($checkinUrl) !!}
</div>
<p><strong>Scan QR code ini dan masukkan No. Kad Pengenalan anda.</strong></p>
<p class="teks-kecil">{{ $checkinUrl }}</p>
<div class="baris-tindakan tiada-cetak" style="justify-content:center">
<button onclick="window.print()" class="btn">Cetak</button>
<a href="{{ route('sesi.show', $sesi) }}" class="btn btn-luar">Kembali</a>
</div>
</div>
@endsection

View File

@@ -0,0 +1,60 @@
@extends('layouts.app')
@section('tajuk', 'Urus Sesi: ' . $sesi->nama)
@section('kandungan')
<div class="kad">
<h1>{{ $sesi->nama }}</h1>
<table class="slip-butiran">
<tr><th>DUN</th><td>{{ $sesi->dun->code ?? '' }} {{ $sesi->dun->nama ?? '-' }}</td></tr>
<tr><th>Tarikh</th><td>{{ $sesi->tarikh->format('d/m/Y') }}</td></tr>
@if ($sesi->masa)
<tr><th>Masa</th><td>{{ $sesi->masa }}</td></tr>
@endif
<tr><th>Lokasi</th><td>{{ $sesi->lokasi }}</td></tr>
<tr>
<th>Status</th>
<td>
@if ($sesi->is_active)
<span class="lencana lencana-hijau">Aktif</span>
@else
<span class="lencana lencana-kelabu">Ditutup</span>
@endif
</td>
</tr>
<tr>
<th>Pautan Daftar</th>
<td><a href="{{ $checkinUrl }}" target="_blank">{{ $checkinUrl }}</a></td>
</tr>
</table>
<div class="baris-tindakan">
<a href="{{ route('sesi.qr', $sesi) }}" class="btn">Papar / Cetak QR Code</a>
<a href="{{ route('kaunter.index', $sesi) }}" class="btn btn-hijau">Kaunter Borang</a>
<a href="{{ route('pengurus.senarai', $sesi) }}" class="btn btn-luar">Senarai Kehadiran</a>
<form method="POST" action="{{ route('sesi.toggle', $sesi) }}" style="margin:0">
@csrf
<button type="submit" class="btn {{ $sesi->is_active ? 'btn-merah' : 'btn-hijau' }}">
{{ $sesi->is_active ? 'Tutup Pendaftaran' : 'Buka Pendaftaran' }}
</button>
</form>
</div>
</div>
<div class="stat-grid">
<div class="stat">
<div class="nilai">{{ $sesi->kehadiran_count }}</div>
<div class="label">Telah Daftar Hadir</div>
</div>
<div class="stat">
<div class="nilai">{{ $sesi->borang_diambil_count }}</div>
<div class="label">Telah Ambil Borang</div>
</div>
</div>
<div class="kad qr-wrap tiada-cetak">
<h2>QR Code Pendaftaran</h2>
{!! QrCode::size(220)->margin(1)->generate($checkinUrl) !!}
<p class="teks-kecil">Petugas scan QR ini untuk daftar kehadiran.</p>
</div>
@endsection