first commit
This commit is contained in:
45
resources/views/sesi/create.blade.php
Normal file
45
resources/views/sesi/create.blade.php
Normal 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
|
||||
58
resources/views/sesi/index.blade.php
Normal file
58
resources/views/sesi/index.blade.php
Normal 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
|
||||
27
resources/views/sesi/qr.blade.php
Normal file
27
resources/views/sesi/qr.blade.php
Normal 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
|
||||
60
resources/views/sesi/show.blade.php
Normal file
60
resources/views/sesi/show.blade.php
Normal 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
|
||||
Reference in New Issue
Block a user