@extends('layouts.app', ['class' => 'g-sidenav-show bg-gray-100']) @section('content') @include('layouts.navbars.auth.topnav', ['title' => '']) @php $requestStatus = strtolower((string) ($list->request_status ?? '')); $isDraftRequest = $requestStatus === 'draft'; @endphp {{-- ===== CSS Tracker (sama persis dengan auto/show.blade.php) ===== --}} {{-- ===== Navbar aksi ===== --}}
{{-- ===== Hitung variabel tracking ===== --}} @php $formatTrackingDate = function ($value) { if (empty($value) || $value === '0000-00-00' || $value === '0000-00-00 00:00:00') { return '-'; } try { return \Illuminate\Support\Carbon::parse($value)->format('d-m-Y'); } catch (\Throwable $e) { return '-'; } }; $formatDateRange = function ($start, $end) use ($formatTrackingDate) { $startDate = $formatTrackingDate($start); if ($startDate === '-') { return '-'; } return $startDate . ' s/d ' . $formatTrackingDate($end); }; $normalizedStatus = strtolower((string) ($list->request_status ?? $list->status ?? '')); if ($normalizedStatus === 'reject') { $normalizedStatus = 'rejected'; } elseif (in_array($normalizedStatus, ['canceled', 'cancelled'], true)) { $normalizedStatus = 'cancel'; } $headTrackingStatus = '-'; if (in_array($normalizedStatus, ['rejected'], true) && !empty($list->head_note)) { $headTrackingStatus = 'Ditolak'; } elseif (!empty($list->head_approval_date) || !in_array($normalizedStatus, ['draft', 'pending'], true)) { $headTrackingStatus = 'Selesai'; } elseif ($normalizedStatus === 'pending') { $headTrackingStatus = 'Menunggu'; } $hrdTrackingStatus = '-'; if (in_array($normalizedStatus, ['rejected', 'cancel'], true) && !empty($list->hrd_note)) { $hrdTrackingStatus = ucfirst($normalizedStatus); } elseif (!empty($list->hrd_approval_date) || in_array($normalizedStatus, ['pengadaan', 'pengerjaan', 'revisi', 'verifikasi', 'completed'], true)) { $hrdTrackingStatus = 'Selesai'; } elseif (in_array($normalizedStatus, ['review'], true)) { $hrdTrackingStatus = 'Menunggu'; } $trackingNoteRows = [ [ 'tahap' => 'Approval Head', 'status' => $headTrackingStatus, 'tanggal' => $formatTrackingDate($list->head_approval_date ?? null), 'catatan' => $list->head_note ?? '-', ], [ 'tahap' => 'Approval HRD', 'status' => $hrdTrackingStatus, 'tanggal' => $formatTrackingDate($list->hrd_approval_date ?? null), 'catatan' => $list->hrd_note ?? '-', ], ]; $datePending = $formatTrackingDate($list->created_at ?? null); $dateReview = $formatTrackingDate($list->head_approval_date ?? null); $datePengadaan = $formatTrackingDate($list->pengadaan_started_at ?? null); $datePengerjaan = $formatTrackingDate($list->pengerjaan_started_at ?? null); $dateComplete = $formatTrackingDate($list->completed_at ?? $list->updated_at ?? null); $estimatedPengadaan = $formatDateRange($list->pengadaan_estimated_started_at ?? null, $list->pengadaan_estimated_ended_at ?? null); $estimatedPengerjaan = $formatDateRange($list->pengerjaan_estimated_started_at ?? null, $list->pengerjaan_estimated_ended_at ?? null); $isRejected = in_array($normalizedStatus, ['rejected', 'cancel'], true); $isPengadaanDone = in_array($normalizedStatus, ['pengadaan', 'pengerjaan', 'revisi', 'verifikasi', 'completed'], true) || !empty($list->pengadaan_started_at); $isPengerjaanDone = in_array($normalizedStatus, ['pengerjaan', 'revisi', 'verifikasi', 'completed'], true) || !empty($list->pengerjaan_started_at); $isCompleteDone = in_array($normalizedStatus, ['verifikasi', 'completed'], true); $currentStep = 'pending'; if ($isRejected) { $currentStep = 'rejected'; } elseif ($normalizedStatus === 'review' || $normalizedStatus === 'approved') { $currentStep = 'review'; } elseif ($normalizedStatus === 'pengadaan') { $currentStep = 'pengadaan'; } elseif (in_array($normalizedStatus, ['pengerjaan', 'revisi'], true)) { $currentStep = 'pengerjaan'; } elseif (in_array($normalizedStatus, ['verifikasi', 'completed'], true)) { $currentStep = 'complete'; } @endphp {{-- ===== Body: 2 kolom (detail kiri | tracking kanan) ===== --}}
@include('components.alert')
{{-- ── Kolom kiri: detail pengajuan ── --}}
@csrf @method('PUT')

View {{ $title_menu }}


@if (!empty($list->id_trans))
@endif
{{-- ── 1. Lampiran Awal / Pengajuan ── --}}
@if (!empty($attachment_files))
@foreach ($attachment_files as $attachmentFile) @php $ext = strtolower(pathinfo($attachmentFile, PATHINFO_EXTENSION)); $isPdf = $ext === 'pdf'; $fileUrl = route('attachment.show', ['path' => $attachmentFile]); @endphp
@if ($isPdf) {{ basename($attachmentFile) }} @else Lampiran Awal @endif
@endforeach

Klik gambar/file untuk membuka ukuran penuh

@else @php $sessionUsername = strtolower(trim((string) (session('username') ?? ''))); $authUsername = auth()->user() ? strtolower(trim((string) (auth()->user()->username ?? ''))) : ''; $currentUsername = $sessionUsername ?: $authUsername; $createdBy = strtolower(trim((string) ($list->user_create ?? ''))); $isCreator = ($currentUsername !== '' && $createdBy !== '' && $currentUsername === $createdBy); @endphp
Belum ada lampiran file / gambar yang terupload
@if ($isCreator) @endif
@endif
{{-- ── 2. Lampiran Catatan Revisi ── --}} @php $revFiles = isset($revision_attachment_files) ? $revision_attachment_files : []; @endphp
@if (!empty($revFiles))
@foreach ($revFiles as $revFile) @php $revExt = strtolower(pathinfo($revFile, PATHINFO_EXTENSION)); $revIsPdf = $revExt === 'pdf'; $revUrl = route('attachment.show', ['path' => $revFile]); @endphp
@if ($revIsPdf) {{ basename($revFile) }} @else Lampiran Revisi @endif
@endforeach
@else
Belum ada lampiran catatan revisi.
@endif
{{-- ── 3. Dokumentasi Hasil Pekerjaan Petugas ── --}} @php $userShowStatus = strtolower((string) ($list->request_status ?? $list->status ?? '')); $userIsNotDraft = $userShowStatus !== '' && $userShowStatus !== 'draft'; $userDocs = isset($show_documentation) ? $show_documentation : collect([]); $authUser = auth()->user(); $authRoles = $authUser ? array_map('trim', explode(',', strtolower((string) ($authUser->idroles ?? '')))) : []; $isHrdOrAdminUser = in_array('admins', $authRoles, true) || in_array('admin', $authRoles, true) || in_array('hrd', $authRoles, true); @endphp @if ($userIsNotDraft)
@if ($userDocs->count() > 0)
@foreach ($userDocs as $doc) @php $docPath = $doc->file ?? $doc->file_path ?? ''; $docExt = strtolower(pathinfo($docPath, PATHINFO_EXTENSION)); $docIsPdf = $docExt === 'pdf'; $docUrl = route('attachment.show', ['path' => $docPath]); $docDate = !empty($doc->created_at) ? \Carbon\Carbon::parse($doc->created_at)->format('d-m-Y H:i') : ''; // Tentukan label keterangan (Awal vs Setelah Revisi) $hasRevision = !empty($revFiles); if ($hasRevision && $userDocs->count() > 1 && $loop->last) { $docLabel = 'Dokumentasi Setelah Revisi'; } else { $docLabel = 'Dokumentasi Awal'; } @endphp
{{ $docLabel }} @if ($docIsPdf) {{ basename($docPath) }} @else {{ $docLabel }} @endif @if ($docDate) {{ $docDate }} @endif
@endforeach
@else
Belum ada dokumentasi pekerjaan.
@endif
@endif
{{-- ── Kolom kanan: tracking status pekerjaan (sama persis dengan akun head) ── --}}

Tracking Status Pekerjaan


{{-- Tabel catatan approval --}}
@foreach ($trackingNoteRows as $trackingRow) @endforeach
Tahap Status Tanggal Catatan
{{ $trackingRow['tahap'] }} {{ $trackingRow['status'] }} {{ $trackingRow['tanggal'] }} {{ $trackingRow['catatan'] ?: '-' }}

Estimasi HRD


Tahap Estimasi
Pengadaan {{ $estimatedPengadaan }}
Pengerjaan {{ $estimatedPengerjaan }}

{{-- Progress tracker step-by-step --}} @if ($isRejected)
Pending
{{ $datePending }}
{{ $normalizedStatus === 'cancel' ? 'Cancel' : 'Rejected' }}
{{ $formatTrackingDate($list->updated_at ?? null) }}
@else
{{-- Step 1: Pending --}}
Pending
{{ $datePending }}
{{-- Step 2: Review --}}
Review
{{ $dateReview }}
{{-- Step 3: Pengadaan --}}
Pengadaan
{{ $datePengadaan !== '-' ? $datePengadaan : ($currentStep == 'pengadaan' ? 'Proses...' : '-') }}
{{-- Step 4: Pengerjaan --}}
Pengerjaan
{{ $datePengerjaan !== '-' ? $datePengerjaan : ($currentStep == 'pengerjaan' ? 'Proses...' : '-') }}
{{-- Step 5: Complete --}}
Complete
{{ $currentStep == 'complete' ? $dateComplete : '-' }}
@endif
{{-- /container --}} {{-- Modal Upload Lampiran Pengajuan (di luar form utama) --}} @if (($isHrdOrAdminUser ?? false) && ($userDocs->count() ?? 0) === 0) {{-- Modal Upload Dokumentasi dari user show page (di luar form utama) --}} @endif @if ($jsmenu == '1') @if (view()->exists("js.{$dmenu}")) @push('addjs') @include('js.' . $dmenu); @endpush @else @push('addjs') @endpush @endif @endif @endsection @push('js') @endpush