first commit
This commit is contained in:
73
app/Http/Controllers/KaunterController.php
Normal file
73
app/Http/Controllers/KaunterController.php
Normal file
@@ -0,0 +1,73 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Models\KehadiranTaklimat;
|
||||
use App\Models\SesiTaklimat;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class KaunterController extends Controller
|
||||
{
|
||||
/**
|
||||
* Skrin kaunter: masukkan nombor siri slip petugas.
|
||||
*/
|
||||
public function index(Request $request, SesiTaklimat $sesi)
|
||||
{
|
||||
$this->pastikanAkses($request, $sesi);
|
||||
$sesi->load('dun');
|
||||
|
||||
$kehadiran = null;
|
||||
$penempatan = null;
|
||||
$ralat = null;
|
||||
|
||||
if ($request->filled('nombor_siri')) {
|
||||
$nombor = (int) ltrim($request->input('nombor_siri'), '0');
|
||||
|
||||
$kehadiran = KehadiranTaklimat::where('sesi_taklimat_id', $sesi->id)
|
||||
->where('nombor_siri', $nombor)
|
||||
->with('permohonan.assignments.pusatMengundi', 'permohonan.assignments.saluran', 'permohonan.assignments.jawatan')
|
||||
->first();
|
||||
|
||||
if ($kehadiran) {
|
||||
$penempatan = $kehadiran->permohonan?->butiranPenempatan();
|
||||
} else {
|
||||
$ralat = 'Nombor siri tidak ditemui dalam sesi ini.';
|
||||
}
|
||||
}
|
||||
|
||||
return view('kaunter.index', compact('sesi', 'kehadiran', 'penempatan', 'ralat'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Rekod petugas telah ambil borang SPR.
|
||||
*/
|
||||
public function serahBorang(Request $request, SesiTaklimat $sesi, KehadiranTaklimat $kehadiran)
|
||||
{
|
||||
$this->pastikanAkses($request, $sesi);
|
||||
|
||||
if ((int) $kehadiran->sesi_taklimat_id !== (int) $sesi->id) {
|
||||
abort(404);
|
||||
}
|
||||
|
||||
if (! $kehadiran->borang_diambil) {
|
||||
$kehadiran->update([
|
||||
'borang_diambil' => true,
|
||||
'borang_diambil_at' => now(),
|
||||
'borang_diambil_oleh_user_id' => $request->user()->id,
|
||||
]);
|
||||
}
|
||||
|
||||
return redirect()
|
||||
->route('kaunter.index', $sesi)
|
||||
->with('status', 'Borang direkodkan sebagai telah diserahkan kepada petugas (siri ' . $kehadiran->nombor_siri_papar . ').');
|
||||
}
|
||||
|
||||
private function pastikanAkses(Request $request, SesiTaklimat $sesi): void
|
||||
{
|
||||
$user = $request->user();
|
||||
|
||||
if ($user->isPengurus() && (int) $sesi->dun_id !== (int) $user->dun_id) {
|
||||
abort(403, 'Sesi ini bukan untuk DUN anda.');
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user