Files
cabutan-bertuah-koipb/resources/views/admin/members/import.blade.php
2026-06-24 18:30:00 +08:00

56 lines
3.6 KiB
PHP

@extends('layouts.app')
@section('title', 'Import Anggota')
@section('content')
@php $result = session('import_result') ? \App\Models\ImportLog::find(session('import_result')) : null; @endphp
<div class="row g-3">
<div class="col-lg-5">
<div class="card"><div class="card-body">
<h5 class="fw-bold"><i class="bi bi-upload text-teal"></i> Muat Naik Fail</h5>
<p class="text-muted small">Format CSV atau XLSX. Lajur: <code>no_anggota, no_pekerja, no_kp, nama, jabatan, bahagian, telefon, status_aktif</code>. Hanya <b>nama</b> wajib.</p>
<form method="POST" action="{{ route('admin.members.import.store') }}" enctype="multipart/form-data">
@csrf
<input type="file" name="file" class="form-control mb-2 @error('file') is-invalid @enderror" accept=".csv,.xlsx,.xls" required>
@error('file')<div class="invalid-feedback">{{ $message }}</div>@enderror
<button class="btn btn-teal w-100"><i class="bi bi-cloud-upload"></i> Import Sekarang</button>
</form>
<a href="{{ asset('samples/contoh-anggota.csv') }}" class="btn btn-sm btn-link mt-2"><i class="bi bi-download"></i> Muat turun templat contoh</a>
</div></div>
</div>
<div class="col-lg-7">
@if($result)
<div class="card mb-3 border-start border-4 border-success"><div class="card-body">
<h6 class="fw-bold">Ringkasan Import: {{ $result->filename }}</h6>
<div class="row text-center g-2 my-2">
<div class="col"><div class="stat-card bg-teal py-2"><div class="value fs-4">{{ $result->total_rows }}</div><div class="label">Jumlah Baris</div></div></div>
<div class="col"><div class="stat-card bg-green py-2"><div class="value fs-4">{{ $result->success_count }}</div><div class="label">Berjaya</div></div></div>
<div class="col"><div class="stat-card bg-gold py-2"><div class="value fs-4">{{ $result->duplicate_count }}</div><div class="label">Duplicate</div></div></div>
<div class="col"><div class="stat-card bg-red py-2"><div class="value fs-4">{{ $result->failed_count }}</div><div class="label">Gagal</div></div></div>
</div>
@if($result->errors)
<details><summary class="text-danger">Lihat {{ count($result->errors) }} isu</summary>
<ul class="small mt-2 mb-0">@foreach($result->errors as $e)<li>{{ $e }}</li>@endforeach</ul>
</details>
@endif
</div></div>
@endif
<div class="card"><div class="card-body">
<h6 class="fw-bold"><i class="bi bi-clock-history"></i> Log Import Terkini</h6>
<table class="table table-sm align-middle">
<thead><tr><th>Fail</th><th>Berjaya</th><th>Dup</th><th>Gagal</th><th>Oleh</th><th>Masa</th></tr></thead>
<tbody>
@forelse($logs as $log)
<tr><td>{{ $log->filename }}</td><td class="text-success">{{ $log->success_count }}</td>
<td class="text-warning">{{ $log->duplicate_count }}</td><td class="text-danger">{{ $log->failed_count }}</td>
<td>{{ $log->importedBy?->name ?? '-' }}</td><td><small>{{ $log->created_at->format('d/m H:i') }}</small></td></tr>
@empty
<tr><td colspan="6" class="text-center text-muted">Belum ada import.</td></tr>
@endforelse
</tbody>
</table>
</div></div>
</div>
</div>
@endsection