154 lines
7.4 KiB
PHP
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
|