first
This commit is contained in:
78
resources/views/admin/management/penempatan/pindah.blade.php
Normal file
78
resources/views/admin/management/penempatan/pindah.blade.php
Normal file
@@ -0,0 +1,78 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('title', 'Pindah Petugas')
|
||||
|
||||
@section('content')
|
||||
<div class="page-heading">
|
||||
<div class="eyebrow">Admin · <a href="{{ route('admin.management.penempatan.show', $pusat) }}">{{ $pusat->name }}</a></div>
|
||||
<h1 class="h3 mb-0">Pindah Petugas</h1>
|
||||
</div>
|
||||
|
||||
@include('admin.management._nav')
|
||||
|
||||
<div class="row g-3">
|
||||
<div class="col-12 col-xl-5">
|
||||
{{-- Maklumat petugas semasa --}}
|
||||
<div class="content-panel p-3 p-md-4 mb-3">
|
||||
<h2 class="h6 fw-semibold text-secondary mb-3">Maklumat Petugas Semasa</h2>
|
||||
<dl class="row mb-0">
|
||||
<dt class="col-5 text-secondary small">Nama</dt>
|
||||
<dd class="col-7">{{ $assignment->application?->name ?? $assignment->user?->name ?? '-' }}</dd>
|
||||
<dt class="col-5 text-secondary small">No. KP</dt>
|
||||
<dd class="col-7 small">{{ $assignment->application?->ic_number ?? '-' }}</dd>
|
||||
<dt class="col-5 text-secondary small">Jawatan</dt>
|
||||
<dd class="col-7"><span class="badge text-bg-primary">{{ $assignment->position?->code }}</span></dd>
|
||||
<dt class="col-5 text-secondary small">Pusat Semasa</dt>
|
||||
<dd class="col-7">{{ $pusat->code }} — {{ $pusat->name }}</dd>
|
||||
<dt class="col-5 text-secondary small">Saluran Semasa</dt>
|
||||
<dd class="col-7">{{ $assignment->saluranMengundi ? 'Saluran '.$assignment->saluranMengundi->number : 'Peringkat Pusat' }}</dd>
|
||||
</dl>
|
||||
</div>
|
||||
|
||||
{{-- Form pindah --}}
|
||||
<div class="content-panel p-3 p-md-4">
|
||||
<h2 class="h6 fw-semibold mb-3">Pindah ke Lokasi Baru</h2>
|
||||
<form method="POST" action="{{ route('admin.management.penempatan.pindah', [$pusat, $assignment]) }}">
|
||||
@csrf
|
||||
<div class="mb-3">
|
||||
<label class="form-label fw-semibold" for="pusat_mengundi_id">Pusat Mengundi Baru</label>
|
||||
<select id="pusat_mengundi_id" name="pusat_mengundi_id"
|
||||
class="form-select @error('pusat_mengundi_id') is-invalid @enderror"
|
||||
required data-tom-select>
|
||||
@foreach ($pusats as $p)
|
||||
<option value="{{ $p->id }}" @selected($p->id === $pusat->id)>
|
||||
{{ $p->code }} — {{ $p->name }}
|
||||
@if ($p->election) ({{ $p->election->name }}) @endif
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
@error('pusat_mengundi_id') <div class="invalid-feedback">{{ $message }}</div> @enderror
|
||||
</div>
|
||||
|
||||
<div class="mb-4">
|
||||
<label class="form-label fw-semibold" for="saluran_mengundi_id">Saluran (pilihan)</label>
|
||||
<select id="saluran_mengundi_id" name="saluran_mengundi_id"
|
||||
class="form-select @error('saluran_mengundi_id') is-invalid @enderror">
|
||||
<option value="">Peringkat Pusat (Saluran 0)</option>
|
||||
@foreach ($salurans as $saluran)
|
||||
<option value="{{ $saluran->id }}" @selected($saluran->id === $assignment->saluran_mengundi_id)>
|
||||
Saluran {{ $saluran->number }}
|
||||
@if ($saluran->name) — {{ $saluran->name }} @endif
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
<div class="form-text">Senarai saluran akan dikemaskini apabila pusat baru dipilih.</div>
|
||||
@error('saluran_mengundi_id') <div class="invalid-feedback">{{ $message }}</div> @enderror
|
||||
</div>
|
||||
|
||||
<div class="d-flex justify-content-end gap-2">
|
||||
<a href="{{ route('admin.management.penempatan.show', $pusat) }}" class="btn btn-outline-secondary">Batal</a>
|
||||
<button type="submit" class="btn btn-primary">
|
||||
<i class="bi bi-arrow-left-right me-1"></i>Sahkan Pindah
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
146
resources/views/admin/management/penempatan/show.blade.php
Normal file
146
resources/views/admin/management/penempatan/show.blade.php
Normal file
@@ -0,0 +1,146 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('title', 'Penempatan — ' . $pusat->name)
|
||||
|
||||
@section('content')
|
||||
<div class="page-heading">
|
||||
<div class="eyebrow">Admin · <a href="{{ route('admin.dashboard') }}">Dashboard</a></div>
|
||||
<div class="d-flex justify-content-between flex-column flex-lg-row gap-3">
|
||||
<div>
|
||||
<h1 class="h3 mb-1">Penempatan Petugas</h1>
|
||||
<p class="text-secondary mb-0">
|
||||
{{ $pusat->code }} — {{ $pusat->name }}
|
||||
@if ($pusat->dun) · DUN {{ $pusat->dun->code }} @endif
|
||||
@if ($ppm) · PPM: {{ $ppm->application?->name }} @endif
|
||||
</p>
|
||||
</div>
|
||||
<div class="d-flex gap-2 align-items-start">
|
||||
<a href="{{ route('admin.dashboard') }}" class="btn btn-outline-secondary">Kembali</a>
|
||||
<a href="{{ route('admin.management.applications.index', ['pusat_mengundi_id' => $pusat->id]) }}"
|
||||
class="btn btn-outline-primary">
|
||||
<i class="bi bi-file-earmark-person me-1"></i>Permohonan Pusat Ini
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@include('admin.management._nav')
|
||||
|
||||
@forelse ($sections as $section)
|
||||
<div class="content-panel p-0 overflow-hidden mb-4">
|
||||
{{-- Section header --}}
|
||||
<div class="p-3 border-bottom d-flex justify-content-between align-items-center">
|
||||
<h2 class="h6 mb-0 fw-semibold">
|
||||
@if ($section['saluran'])
|
||||
<i class="bi bi-signpost me-2 text-primary"></i>{{ $section['label'] }}
|
||||
<span class="text-secondary fw-normal small ms-2">{{ $section['saluran']->voter_count ?? 0 }} pengundi</span>
|
||||
@else
|
||||
<i class="bi bi-building me-2 text-secondary"></i>{{ $section['label'] }}
|
||||
@endif
|
||||
</h2>
|
||||
@php
|
||||
$sectionFilled = $section['entries']->sum(fn($e) => $e['assignments']->count());
|
||||
$sectionQuota = $section['entries']->sum(fn($e) => $e['quota']->quota);
|
||||
$sectionVacant = $section['entries']->sum(fn($e) => $e['vacant']);
|
||||
@endphp
|
||||
<span class="badge {{ $sectionVacant > 0 ? 'text-bg-warning' : 'text-bg-success' }}">
|
||||
{{ $sectionFilled }} / {{ $sectionQuota }} diisi
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="table-responsive">
|
||||
<table class="table table-hover align-middle mb-0">
|
||||
<thead class="table-light">
|
||||
<tr>
|
||||
<th>Jawatan</th>
|
||||
<th>Nama Petugas</th>
|
||||
<th>No. KP</th>
|
||||
<th>Telefon</th>
|
||||
<th>Bank</th>
|
||||
<th>No. Akaun</th>
|
||||
<th class="text-end">Tindakan</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@forelse ($section['entries'] as $entry)
|
||||
{{-- Filled slots --}}
|
||||
@foreach ($entry['assignments'] as $assignment)
|
||||
<tr>
|
||||
@if ($loop->first)
|
||||
<td rowspan="{{ $entry['assignments']->count() + $entry['vacant'] }}"
|
||||
class="fw-semibold align-top pt-3">
|
||||
{{ $entry['position']?->code }}
|
||||
<div class="small text-secondary fw-normal">{{ $entry['position']?->name }}</div>
|
||||
<div class="small text-secondary">Kuota: {{ $entry['quota']->quota }}</div>
|
||||
</td>
|
||||
@endif
|
||||
@php $app = $assignment->application; @endphp
|
||||
<td>
|
||||
<div class="fw-semibold">{{ $app?->name ?? $assignment->user?->name ?? 'Tanpa nama' }}</div>
|
||||
<span class="badge text-bg-success small">Aktif</span>
|
||||
</td>
|
||||
<td class="small text-secondary">{{ $app?->ic_number ?? '-' }}</td>
|
||||
<td class="small text-secondary">{{ $app?->phone_number ?? '-' }}</td>
|
||||
<td class="small">{{ $app?->bank_name ?? '-' }}</td>
|
||||
<td class="small text-secondary">
|
||||
{{ $app?->bank_account_number ? \App\Support\SensitiveData::maskAccount($app->bank_account_number) : '-' }}
|
||||
</td>
|
||||
<td class="text-end">
|
||||
<a href="{{ route('admin.management.penempatan.pindah.form', [$pusat, $assignment]) }}"
|
||||
class="btn btn-sm btn-outline-secondary">
|
||||
<i class="bi bi-arrow-left-right"></i> Pindah
|
||||
</a>
|
||||
<form method="POST"
|
||||
action="{{ route('admin.management.penempatan.lepas', [$pusat, $assignment]) }}"
|
||||
class="d-inline"
|
||||
onsubmit="return confirm('Lepaskan {{ addslashes($app?->name ?? 'petugas') }} dari tugasan ini?')">
|
||||
@csrf
|
||||
<button class="btn btn-sm btn-outline-danger">
|
||||
<i class="bi bi-person-dash"></i> Lepas
|
||||
</button>
|
||||
</form>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
|
||||
{{-- Vacant slots --}}
|
||||
@for ($i = 0; $i < $entry['vacant']; $i++)
|
||||
<tr class="table-warning">
|
||||
@if ($entry['assignments']->isEmpty() && $i === 0)
|
||||
<td rowspan="{{ $entry['vacant'] }}"
|
||||
class="fw-semibold align-top pt-3">
|
||||
{{ $entry['position']?->code }}
|
||||
<div class="small text-secondary fw-normal">{{ $entry['position']?->name }}</div>
|
||||
<div class="small text-secondary">Kuota: {{ $entry['quota']->quota }}</div>
|
||||
</td>
|
||||
@endif
|
||||
<td colspan="5" class="text-secondary fst-italic small">— Slot kosong —</td>
|
||||
<td class="text-end">
|
||||
<a href="{{ route('admin.management.applications.index', [
|
||||
'pusat_mengundi_id' => $pusat->id,
|
||||
'position_id' => $entry['position']?->id,
|
||||
'status' => 'approved',
|
||||
]) }}"
|
||||
class="btn btn-sm btn-success">
|
||||
<i class="bi bi-person-plus me-1"></i>Assign
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
@endfor
|
||||
|
||||
@empty
|
||||
<tr>
|
||||
<td colspan="7" class="text-center text-secondary py-3">Tiada kuota ditetapkan untuk bahagian ini.</td>
|
||||
</tr>
|
||||
@endforelse
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
@empty
|
||||
<div class="content-panel p-4 text-center text-secondary">
|
||||
<i class="bi bi-info-circle fs-3 d-block mb-2"></i>
|
||||
Tiada kuota ditetapkan untuk pusat ini. <a href="{{ route('admin.setup.pusat.saluran.index', $pusat) }}">Tetapkan kuota</a>.
|
||||
</div>
|
||||
@endforelse
|
||||
@endsection
|
||||
Reference in New Issue
Block a user