Files
ChatbotAI/resources/views/admin/documents/index.blade.php
2026-05-18 08:56:23 +08:00

154 lines
7.4 KiB
PHP

@extends('layouts.admin')
@section('title', 'Dokumen')
@section('breadcrumb')
<li class="breadcrumb-item active">Dokumen PDF</li>
@endsection
@section('content')
<div class="d-flex align-items-center justify-content-between mb-4">
<h4 class="mb-0 fw-bold">Dokumen PDF</h4>
<a href="{{ route('admin.documents.create') }}" class="btn btn-primary">
<i class="bi bi-upload me-1"></i>Upload Dokumen
</a>
</div>
{{-- Filter --}}
<div class="card border-0 shadow-sm mb-4">
<div class="card-body py-3">
<form method="GET" class="row g-2 align-items-end">
<div class="col-md-4">
<input type="text" name="search" class="form-control form-control-sm"
placeholder="Cari tajuk..." value="{{ request('search') }}">
</div>
<div class="col-md-3">
<select name="category_id" class="form-select form-select-sm">
<option value="">Semua Kategori</option>
@foreach($categories as $cat)
<option value="{{ $cat->id }}" {{ request('category_id') == $cat->id ? 'selected' : '' }}>
{{ $cat->name }}
</option>
@endforeach
</select>
</div>
<div class="col-md-2">
<select name="status" class="form-select form-select-sm">
<option value="">Semua Status</option>
<option value="active" {{ request('status') == 'active' ? 'selected' : '' }}>Aktif</option>
<option value="processing" {{ request('status') == 'processing' ? 'selected' : '' }}>Sedang Diproses</option>
<option value="inactive" {{ request('status') == 'inactive' ? 'selected' : '' }}>Tidak Aktif</option>
<option value="failed" {{ request('status') == 'failed' ? 'selected' : '' }}>Gagal</option>
</select>
</div>
<div class="col-auto">
<button type="submit" class="btn btn-sm btn-outline-secondary">
<i class="bi bi-search me-1"></i>Tapis
</button>
@if(request()->hasAny(['search', 'category_id', 'status']))
<a href="{{ route('admin.documents.index') }}" class="btn btn-sm btn-link text-muted">Reset</a>
@endif
</div>
</form>
</div>
</div>
{{-- Table --}}
<div class="card border-0 shadow-sm">
<div class="table-responsive">
<table class="table table-hover align-middle mb-0">
<thead class="table-light">
<tr>
<th class="ps-3">Tajuk</th>
<th>Kategori</th>
<th>Versi</th>
<th>Status</th>
<th>Tarikh</th>
<th class="text-end pe-3">Tindakan</th>
</tr>
</thead>
<tbody>
@forelse($documents as $doc)
<tr>
<td class="ps-3">
<div class="fw-semibold">{{ $doc->title }}</div>
@if($doc->description)
<small class="text-muted text-truncate d-block" style="max-width:300px">{{ $doc->description }}</small>
@endif
@if($doc->tags)
@foreach(array_slice($doc->tags, 0, 3) as $tag)
<span class="badge bg-light text-dark border me-1" style="font-size:.65rem">{{ $tag }}</span>
@endforeach
@endif
</td>
<td>
<span class="badge" style="background: {{ $doc->category->color ?? '#6c757d' }}">
{{ $doc->category->name }}
</span>
</td>
<td>
<span class="badge bg-light text-dark border">
v{{ $doc->currentVersion?->version_number ?? '—' }}
</span>
@if($doc->versions_count > 1)
<small class="text-muted">({{ $doc->versions_count }} versi)</small>
@endif
</td>
<td>
@php
$statusMap = [
'active' => ['class' => 'bg-success', 'label' => 'Aktif'],
'inactive' => ['class' => 'bg-secondary', 'label' => 'Tidak Aktif'],
'processing' => ['class' => 'badge-processing', 'label' => 'Diproses'],
'draft' => ['class' => 'bg-light text-dark border', 'label' => 'Draf'],
'failed' => ['class' => 'badge-failed', 'label' => 'Gagal'],
];
$s = $statusMap[$doc->status] ?? ['class' => 'bg-light', 'label' => $doc->status];
@endphp
<span class="badge {{ $s['class'] }}">{{ $s['label'] }}</span>
@if($doc->currentVersion && $doc->currentVersion->processing_status !== 'indexed' && $doc->status == 'processing')
<br><small class="text-muted" style="font-size:.65rem">{{ $doc->currentVersion->processing_status }}</small>
@endif
</td>
<td>
<small class="text-muted">{{ $doc->created_at->format('d/m/Y') }}</small>
@if($doc->effective_date)
<br><small class="text-muted">Kuat kuasa: {{ $doc->effective_date->format('d/m/Y') }}</small>
@endif
</td>
<td class="text-end pe-3">
<a href="{{ route('admin.documents.show', $doc) }}"
class="btn btn-sm btn-outline-primary">
<i class="bi bi-eye"></i>
</a>
@if($doc->status !== 'processing')
<form method="POST" action="{{ route('admin.documents.toggle-status', $doc) }}" class="d-inline">
@csrf @method('PATCH')
<button type="submit" class="btn btn-sm {{ $doc->is_active ? 'btn-outline-warning' : 'btn-outline-success' }}"
title="{{ $doc->is_active ? 'Nyahaktifkan' : 'Aktifkan' }}">
<i class="bi {{ $doc->is_active ? 'bi-pause-circle' : 'bi-play-circle' }}"></i>
</button>
</form>
@endif
</td>
</tr>
@empty
<tr>
<td colspan="6" class="text-center text-muted py-5">
<i class="bi bi-file-pdf fs-2 d-block mb-2 opacity-25"></i>
Tiada dokumen ditemui.
<a href="{{ route('admin.documents.create') }}">Upload yang pertama.</a>
</td>
</tr>
@endforelse
</tbody>
</table>
</div>
@if($documents->hasPages())
<div class="card-footer bg-white border-top py-3">
{{ $documents->links() }}
</div>
@endif
</div>
@endsection