147 lines
8.4 KiB
PHP
147 lines
8.4 KiB
PHP
@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
|