@extends('layout.appdas') @section('title', 'Riwayat Disposisi') @section('content')
Riwayat Disposisi
Arsip rekapitulasi pekerjaan disposisi dan pemantauan surat yang telah tuntas diproses (diterima atau ditolak).
{{-- REKAP STATISTIK RIWAYAT DISPOSISI (SERAGAM DENGAN MANAJEMEN SURAT) --}}
{{ $tab === 'masuk' ? $data->total() . ' Riwayat Masuk' : $data->total() . ' Riwayat Monitoring' }}
@if(request('search')) @endif
@if($tab === 'masuk')
@endif
@if(request('search') || request('status') || (request('sort') && request('sort') !== 'terbaru')) Reset @endif
{{-- TABEL KONTEN SESUAI TAB AKTIF --}} @if ($tab === 'masuk') {{-- TAB 1: DISPOSISI MASUK SELESAI --}}
@forelse($data as $item) @empty @endforelse
No Nomor Surat Perihal Pengirim Tanggal Selesai Status Akhir Aksi
{{ $data->firstItem() + $loop->index }} {{ $item->surat->nomor_surat ?? '-' }} {{ $item->surat->perihal ?? '-' }} @if(isset($item->data_disposisi) && $item->data_disposisi && $item->data_disposisi->dari)
{{ $item->data_disposisi->dari->divisi->nama_divisi ?? $item->data_disposisi->dari->name }}
{{ $item->data_disposisi->dari->name ?? '' }} @if($item->surat && $item->surat->divisi && ($item->surat->divisi->id !== ($item->data_disposisi->dari->divisi_id ?? null))) Asal: {{ $item->surat->divisi->nama_divisi }} @endif @else
{{ $item->surat->divisi->nama_divisi ?? ($item->surat->asal_tujuan ?? '-') }}
{{ $item->surat->user->name ?? '' }} @endif
{{ \Carbon\Carbon::parse($item->updated_at)->translatedFormat('d M Y, H:i') }} @if($item->admin_approval_status === 'rejected') Dibatalkan Admin @elseif(in_array(strtolower($item->status), ['diterima', 'selesai'])) Diterima @elseif(strtolower($item->status) === 'ditolak') Ditolak @else {{ ucfirst($item->status) }} @endif
@if($item->surat_id) Berkas @endif @php $effectiveDivisiId = auth()->user()->getEffectiveDivisiId(); $canManageThisItem = auth()->user()->canManageDisposisi() || ($item->user_id === auth()->id()) || ($item->user && $item->user->divisi_id === $effectiveDivisiId); @endphp @if($canManageThisItem && $item->admin_approval_status !== 'rejected') @if(in_array(strtolower($item->status), ['diterima', 'selesai'])) @elseif(strtolower($item->status) === 'ditolak') @endif @endif
Tidak ada riwayat disposisi yang ditemukan.
@else {{-- TAB 2: DISPOSISI KELUAR SELESAI (MONITORING) --}}
@forelse($data as $item) @empty @endforelse
No Nomor Surat Perihal Tanggal Surat Rekap Hasil Tujuan Status Akhir Aksi
{{ $data->firstItem() + $loop->index }} {{ $item->nomor_surat }} {{ $item->perihal }} {{ \Carbon\Carbon::parse($item->tanggal_surat)->translatedFormat('d M Y') }}
@foreach($item->penerima->where('is_cancelled', false) as $pen) @php $divisiName = $pen->user?->divisi?->nama_divisi ?? ($pen->user?->name ?? 'Unit'); $isAdminRejected = ($pen->admin_approval_status === 'rejected'); $isDiterima = in_array(strtolower($pen->status), ['diterima', 'selesai']) && !$isAdminRejected; $isDitolak = strtolower($pen->status) === 'ditolak' || $isAdminRejected; $badgeTooltip = ''; if ($isAdminRejected) { $badgeTooltip = 'Ditolak oleh Admin' . (!empty($pen->catatan) ? ': ' . $pen->catatan : ''); } elseif ($isDitolak) { $badgeTooltip = 'Ditolak' . (!empty($pen->catatan) ? ' - Alasan: ' . $pen->catatan : ''); } elseif ($isDiterima) { $badgeTooltip = 'Diterima' . (!empty($pen->diterima_pada) ? ' (' . \Carbon\Carbon::parse($pen->diterima_pada)->translatedFormat('d M Y, H:i') . ')' : ''); } @endphp @if($isAdminRejected) {{ $divisiName }}: Ditolak Admin @else {{ $divisiName }}: {{ ucfirst($pen->status) }} @endif @endforeach
@php $allPenerima = $item->penerima->where('is_cancelled', false); $countTerima = $allPenerima->filter(fn($p) => in_array(strtolower($p->status), ['diterima', 'selesai']) && $p->admin_approval_status === 'approved')->count(); $countTolak = $allPenerima->filter(fn($p) => strtolower($p->status) === 'ditolak' || $p->admin_approval_status === 'rejected')->count(); $countTotal = $allPenerima->count(); $allAdminRejected = $allPenerima->isNotEmpty() && $allPenerima->every(fn($p) => $p->admin_approval_status === 'rejected'); $hasAdminRejected = $allPenerima->contains(fn($p) => $p->admin_approval_status === 'rejected'); $allTerima = ($countTerima === $countTotal) && ($countTotal > 0); @endphp @if($allTerima) Selesai (Diterima) @elseif($countTerima > 0 && $countTolak > 0) Diterima Sebagian {{ $countTerima }} Diterima, {{ $countTolak }} Ditolak @elseif($allAdminRejected) Ditolak Admin @elseif($countTolak === $countTotal && $countTotal > 0) Ditolak Seluruhnya @elseif($hasAdminRejected) Ada Ditolak Admin @elseif($countTolak > 0) Ada Ditolak @else Selesai @endif
Tidak ada riwayat disposisi yang ditemukan.
@endif @if($data->hasPages() || $data->total() > 0)
{{ $data->links('vendor.pagination.custom') }}
@endif
@endsection @push('scripts') @endpush