Files
prn2026/resources/views/admin/setup/import/create.blade.php
2026-06-03 08:51:22 +08:00

129 lines
6.9 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
@extends('layouts.app')
@section('title', 'Import Pusat Mengundi')
@section('content')
<div class="page-heading">
<div class="eyebrow">Admin · Setup</div>
<h1 class="h3 mb-1">Import Pusat Mengundi</h1>
<p class="text-secondary mb-0">Upload fail XLSX untuk mencipta DUN, Pusat Mengundi, Saluran, dan Kuota secara automatik.</p>
</div>
@include('admin.setup._nav')
@if (session('import_errors'))
<div class="alert alert-warning" role="alert">
<div class="fw-semibold mb-1">Beberapa baris tidak dapat diimport:</div>
<ul class="mb-0 small">
@foreach (session('import_errors') as $err)
<li>{{ $err }}</li>
@endforeach
</ul>
</div>
@endif
<div class="row g-3">
<div class="col-12 col-xl-7">
<div class="content-panel p-3 p-md-4">
<h2 class="h5 mb-3">Borang Import</h2>
<form method="POST" action="{{ route('admin.setup.import.store') }}" enctype="multipart/form-data">
@csrf
<div class="mb-3">
<label for="election_id" class="form-label fw-semibold">Pilihan Raya</label>
<select id="election_id" name="election_id" class="form-select @error('election_id') is-invalid @enderror" required>
<option value="">Pilih pilihan raya</option>
@foreach ($elections as $election)
<option value="{{ $election->id }}" @selected(old('election_id') == $election->id)>
{{ $election->name }}
</option>
@endforeach
</select>
@error('election_id')
<div class="invalid-feedback">{{ $message }}</div>
@enderror
</div>
<div class="row g-3 mb-3">
<div class="col-md-4">
<label for="dun_code" class="form-label fw-semibold">Kod DUN</label>
<input id="dun_code" type="text" name="dun_code" value="{{ old('dun_code', 'N49') }}"
class="form-control @error('dun_code') is-invalid @enderror" maxlength="20"
placeholder="cth: N49" required>
@error('dun_code')
<div class="invalid-feedback">{{ $message }}</div>
@enderror
</div>
<div class="col-md-8">
<label for="dun_name" class="form-label fw-semibold">Nama DUN</label>
<input id="dun_name" type="text" name="dun_name" value="{{ old('dun_name', 'Kota Iskandar') }}"
class="form-control @error('dun_name') is-invalid @enderror" maxlength="255"
placeholder="cth: Kota Iskandar" required>
@error('dun_name')
<div class="invalid-feedback">{{ $message }}</div>
@enderror
</div>
</div>
<div class="mb-4">
<label for="file" class="form-label fw-semibold">Fail XLSX Senarai Pusat Mengundi</label>
<input id="file" type="file" name="file" accept=".xlsx"
class="form-control @error('file') is-invalid @enderror" required>
<div class="form-text">Format: .xlsx sahaja, saiz maksimum 10MB.</div>
@error('file')
<div class="invalid-feedback">{{ $message }}</div>
@enderror
</div>
<div class="alert alert-warning py-2 small" role="alert">
<i class="bi bi-exclamation-triangle me-1"></i>
<strong>Amaran:</strong> Import akan <strong>menggantikan</strong> semua data Pusat Mengundi, Saluran, dan Kuota sedia ada untuk DUN yang sama. Pastikan fail betul sebelum teruskan.
</div>
<div class="d-flex justify-content-end gap-2 mt-3">
<a href="{{ route('admin.setup.index') }}" class="btn btn-outline-secondary">Batal</a>
<button type="submit" class="btn btn-success">
<i class="bi bi-upload me-1"></i>Import Data
</button>
</div>
</form>
</div>
</div>
<div class="col-12 col-xl-5">
<div class="content-panel p-3 p-md-4 h-100">
<h2 class="h5 mb-3">Format Fail XLSX</h2>
<p class="text-secondary small mb-2">Fail mesti mempunyai lajur mengikut susunan berikut (baris pertama = tajuk):</p>
<div class="table-responsive">
<table class="table table-sm table-bordered small">
<thead class="table-light">
<tr>
<th>Lajur</th>
<th>Nama</th>
<th>Keterangan</th>
</tr>
</thead>
<tbody>
<tr><td>A</td><td>SEKOLAH</td><td>Nama Pusat Mengundi</td></tr>
<tr><td>B</td><td>NAMA PPM</td><td>Nama PPM (simpan sebagai metadata)</td></tr>
<tr><td>C</td><td>SALURAN</td><td>Bilangan saluran (nombor)</td></tr>
<tr><td>DF</td><td>KTM, POLIS, KP</td><td>Dikira automatik dari bilangan saluran</td></tr>
<tr><td>G</td><td>PPM</td><td>Kuota PPM per pusat (0 atau 1)</td></tr>
<tr><td>H</td><td>KPDP</td><td>Dikira automatik</td></tr>
<tr><td>I</td><td>PAPM</td><td>Kuota PAPM per pusat (nombor)</td></tr>
<tr><td>J</td><td>JKM</td><td>Kuota JKM per pusat</td></tr>
<tr><td>K</td><td>KKM</td><td>Kuota KKM per pusat</td></tr>
<tr><td>L</td><td>TAMBAHAN</td><td>Dikira automatik</td></tr>
<tr><td>M</td><td>NO TELEFON</td><td>Telefon PPM (simpan sebagai metadata)</td></tr>
</tbody>
</table>
</div>
<p class="text-secondary small mt-2 mb-0">
Lajur dengan formula Excel (KTM, POLIS, KP, KPDP, TAMBAHAN) dikira semula secara automatik berdasarkan bilangan saluran nilai asal dalam fail diabaikan.
</p>
</div>
</div>
</div>
@endsection