214 lines
12 KiB
PHP
214 lines
12 KiB
PHP
@extends('layouts.app')
|
|
|
|
@section('title', 'Tetapan Pilihanraya')
|
|
|
|
@section('content')
|
|
<div class="page-heading">
|
|
<div class="eyebrow">Admin · Setup</div>
|
|
<div class="d-flex justify-content-between flex-column flex-lg-row gap-3">
|
|
<div>
|
|
<h1 class="h3 mb-1">Tetapan Pilihanraya</h1>
|
|
<p class="text-secondary mb-0">{{ $election->name }} · Kawalan tarikh, mod kehadiran, dan pendaftaran.</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
@include('admin.setup._nav')
|
|
|
|
<div class="row g-3">
|
|
{{-- Status semasa --}}
|
|
<div class="col-12 col-xl-4">
|
|
<div class="content-panel p-3 p-md-4 h-100">
|
|
<h2 class="h5 mb-3">Status Semasa</h2>
|
|
|
|
@if ($election->settings)
|
|
<dl class="mb-0">
|
|
<dt class="text-secondary small">Pilihanraya</dt>
|
|
<dd class="mb-3">{{ $election->name }}</dd>
|
|
|
|
<dt class="text-secondary small">Tarikh Daftar Buka</dt>
|
|
<dd class="mb-3">{{ $election->settings->registration_start_date?->format('d/m/Y') ?? '-' }}</dd>
|
|
|
|
<dt class="text-secondary small">Tarikh Daftar Tutup</dt>
|
|
<dd class="mb-3">{{ $election->settings->registration_end_date?->format('d/m/Y') ?? '-' }}</dd>
|
|
|
|
<dt class="text-secondary small">Tarikh Mengundi</dt>
|
|
<dd class="mb-3">{{ $election->settings->polling_date?->format('d/m/Y') ?? '-' }}</dd>
|
|
|
|
<dt class="text-secondary small">Status Pendaftaran</dt>
|
|
<dd class="mb-3">
|
|
@if ($isRegistrationOpen)
|
|
<span class="badge text-bg-success"><i class="bi bi-door-open me-1"></i>Dibuka</span>
|
|
@else
|
|
<span class="badge text-bg-secondary"><i class="bi bi-door-closed me-1"></i>Ditutup</span>
|
|
@endif
|
|
@if ($election->settings->is_registration_open_override !== null)
|
|
<span class="badge text-bg-warning ms-1"><i class="bi bi-exclamation-triangle me-1"></i>Override aktif</span>
|
|
@endif
|
|
</dd>
|
|
|
|
<dt class="text-secondary small">Mod Kehadiran</dt>
|
|
<dd class="mb-0">
|
|
@if ($election->settings->is_attendance_active)
|
|
<span class="badge text-bg-success"><i class="bi bi-check-circle me-1"></i>Aktif</span>
|
|
@else
|
|
<span class="badge text-bg-secondary"><i class="bi bi-dash-circle me-1"></i>Tidak aktif</span>
|
|
@endif
|
|
</dd>
|
|
</dl>
|
|
@else
|
|
<p class="text-secondary small mb-0">Tiada tetapan lagi. Isikan borang untuk mencipta tetapan baru.</p>
|
|
@endif
|
|
</div>
|
|
</div>
|
|
|
|
{{-- Borang tetapan --}}
|
|
<div class="col-12 col-xl-8">
|
|
<div class="content-panel p-3 p-md-4">
|
|
<h2 class="h5 mb-3">{{ $election->settings ? 'Kemaskini Tetapan' : 'Tetapan Baru' }}</h2>
|
|
|
|
@php
|
|
$isNew = $election->settings === null;
|
|
$formAction = $isNew
|
|
? route('admin.setup.settings.store', $election)
|
|
: route('admin.setup.settings.update', $election);
|
|
@endphp
|
|
|
|
<form method="POST" action="{{ $formAction }}">
|
|
@csrf
|
|
@unless ($isNew) @method('PATCH') @endunless
|
|
|
|
{{-- Tarikh --}}
|
|
<div class="row g-3 mb-4">
|
|
<div class="col-12 col-md-4">
|
|
<label for="registration_start_date" class="form-label fw-semibold">Tarikh Daftar Buka</label>
|
|
<input type="date" class="form-control @error('registration_start_date') is-invalid @enderror"
|
|
id="registration_start_date" name="registration_start_date"
|
|
value="{{ old('registration_start_date', $election->settings?->registration_start_date?->format('Y-m-d')) }}">
|
|
@error('registration_start_date')
|
|
<div class="invalid-feedback">{{ $message }}</div>
|
|
@enderror
|
|
</div>
|
|
<div class="col-12 col-md-4">
|
|
<label for="registration_end_date" class="form-label fw-semibold">Tarikh Daftar Tutup</label>
|
|
<input type="date" class="form-control @error('registration_end_date') is-invalid @enderror"
|
|
id="registration_end_date" name="registration_end_date"
|
|
value="{{ old('registration_end_date', $election->settings?->registration_end_date?->format('Y-m-d')) }}">
|
|
@error('registration_end_date')
|
|
<div class="invalid-feedback">{{ $message }}</div>
|
|
@enderror
|
|
</div>
|
|
<div class="col-12 col-md-4">
|
|
<label for="polling_date" class="form-label fw-semibold">Tarikh Mengundi</label>
|
|
<input type="date" class="form-control @error('polling_date') is-invalid @enderror"
|
|
id="polling_date" name="polling_date"
|
|
value="{{ old('polling_date', $election->settings?->polling_date?->format('Y-m-d')) }}">
|
|
@error('polling_date')
|
|
<div class="invalid-feedback">{{ $message }}</div>
|
|
@enderror
|
|
</div>
|
|
</div>
|
|
|
|
<hr>
|
|
|
|
{{-- Mod Kehadiran --}}
|
|
<div class="mb-4">
|
|
<label class="form-label fw-semibold">Mod Kehadiran</label>
|
|
<p class="text-secondary small mb-2">
|
|
Apabila diaktifkan, PPM boleh merekod kehadiran staf pada skrin kehadiran.
|
|
Aktifkan hanya pada hari mengundi.
|
|
</p>
|
|
<div class="d-flex gap-3">
|
|
<div class="form-check">
|
|
<input class="form-check-input" type="radio" name="is_attendance_active"
|
|
id="attendance_off" value="0"
|
|
{{ old('is_attendance_active', $election->settings?->is_attendance_active ? '1' : '0') === '0' ? 'checked' : '' }}>
|
|
<label class="form-check-label" for="attendance_off">
|
|
<span class="badge text-bg-secondary"><i class="bi bi-dash-circle me-1"></i>Tidak aktif</span>
|
|
</label>
|
|
</div>
|
|
<div class="form-check">
|
|
<input class="form-check-input" type="radio" name="is_attendance_active"
|
|
id="attendance_on" value="1"
|
|
{{ old('is_attendance_active', $election->settings?->is_attendance_active ? '1' : '0') === '1' ? 'checked' : '' }}>
|
|
<label class="form-check-label" for="attendance_on">
|
|
<span class="badge text-bg-success"><i class="bi bi-check-circle me-1"></i>Aktif</span>
|
|
</label>
|
|
</div>
|
|
</div>
|
|
@error('is_attendance_active')
|
|
<div class="text-danger small mt-1">{{ $message }}</div>
|
|
@enderror
|
|
</div>
|
|
|
|
<hr>
|
|
|
|
{{-- Override Pendaftaran --}}
|
|
<div class="mb-4">
|
|
<label class="form-label fw-semibold">Override Tempoh Pendaftaran</label>
|
|
<p class="text-secondary small mb-2">
|
|
Secara lalai, sistem mengikut tarikh buka dan tutup pendaftaran yang ditetapkan.
|
|
Gunakan override hanya apabila perlu buka atau tutup pendaftaran di luar tarikh tersebut.
|
|
</p>
|
|
|
|
@php
|
|
$currentOverride = old('is_registration_open_override',
|
|
$election->settings?->is_registration_open_override === null
|
|
? ''
|
|
: ($election->settings->is_registration_open_override ? '1' : '0')
|
|
);
|
|
@endphp
|
|
|
|
<div class="d-flex flex-wrap gap-3">
|
|
<div class="form-check">
|
|
<input class="form-check-input" type="radio" name="is_registration_open_override"
|
|
id="override_auto" value=""
|
|
{{ $currentOverride === '' ? 'checked' : '' }}>
|
|
<label class="form-check-label" for="override_auto">
|
|
<span class="fw-semibold">Auto</span>
|
|
<div class="text-secondary small">Ikut tarikh buka/tutup pendaftaran</div>
|
|
</label>
|
|
</div>
|
|
<div class="form-check">
|
|
<input class="form-check-input" type="radio" name="is_registration_open_override"
|
|
id="override_open" value="1"
|
|
{{ $currentOverride === '1' ? 'checked' : '' }}>
|
|
<label class="form-check-label" for="override_open">
|
|
<span class="fw-semibold text-success">Buka Paksa</span>
|
|
<div class="text-secondary small">Buka walaupun di luar tempoh tarikh</div>
|
|
</label>
|
|
</div>
|
|
<div class="form-check">
|
|
<input class="form-check-input" type="radio" name="is_registration_open_override"
|
|
id="override_closed" value="0"
|
|
{{ $currentOverride === '0' ? 'checked' : '' }}>
|
|
<label class="form-check-label" for="override_closed">
|
|
<span class="fw-semibold text-danger">Tutup Paksa</span>
|
|
<div class="text-secondary small">Tutup walaupun dalam tempoh tarikh</div>
|
|
</label>
|
|
</div>
|
|
</div>
|
|
@error('is_registration_open_override')
|
|
<div class="text-danger small mt-1">{{ $message }}</div>
|
|
@enderror
|
|
</div>
|
|
|
|
@if ($election->settings?->is_registration_open_override !== null)
|
|
<div class="alert alert-warning py-2" role="alert">
|
|
<i class="bi bi-exclamation-triangle me-2"></i>
|
|
Override sedang aktif. Tetapkan semula ke <strong>Auto</strong> untuk kembali kepada kawalan tarikh biasa.
|
|
</div>
|
|
@endif
|
|
|
|
<div class="d-flex justify-content-end gap-2 mt-3">
|
|
<a class="btn btn-outline-secondary" href="{{ route('admin.setup.index') }}">Kembali</a>
|
|
<button class="btn btn-primary" type="submit">
|
|
<i class="bi bi-save me-1"></i>{{ $isNew ? 'Cipta Tetapan' : 'Simpan Tetapan' }}
|
|
</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
@endsection
|