@extends('layouts.app', ['class' => 'g-sidenav-show bg-gray-100']) @section('content') @include('layouts.navbars.auth.topnav', ['title' => 'Detail']) @php $roleViewer = strtolower(auth()->user()->idroles ?? ''); $rolesViewer = array_filter(array_map('trim', explode(',', $roleViewer))); if (empty($rolesViewer)) { $rolesViewer = ['guests']; } $isViewerHead = in_array('head.s', $rolesViewer); $isViewerAdmin = in_array('itstaf', $rolesViewer); $isViewerSuperAdmin = in_array('admins', $rolesViewer); $isViewerGuest = in_array('guests', $rolesViewer); $st = strtolower($peminjaman->status ?? ''); $isEntry = $st === 'entry'; $isProposed = $st === 'proposed'; $isApprove = $st === 'approve'; $isOnProgress = in_array($st, ['on_progress', 'onprogress']); $isBorrowed = $st === 'borrowed'; $isCompleted = $st === 'completed'; $isRejected = $st === 'rejected'; $isRevisi = $st === 'revisi'; $canApproveHead = ($isViewerHead || $isViewerSuperAdmin) && $isProposed; $canApproveAdmin = ($isViewerAdmin || $isViewerSuperAdmin) && $isApprove; $canReturn = ($isViewerAdmin || $isViewerSuperAdmin) && $isBorrowed; $showHead = $isApprove || $isOnProgress || $isBorrowed || $isCompleted || $isRejected; $showIT = $isOnProgress || $isBorrowed || $isCompleted || $isRejected; $statusLabel = strtoupper(str_replace('_', ' ', $peminjaman->status ?? '-')); $statusColor = '#6b7280'; $statusIcon = 'fa-circle'; if ($isEntry) { $statusColor = '#6b7280'; $statusIcon = 'fa-pen'; } elseif ($isProposed) { $statusColor = '#f59e0b'; $statusIcon = 'fa-clock'; } elseif ($isApprove) { $statusColor = '#3b82f6'; $statusIcon = 'fa-thumbs-up'; } elseif ($isOnProgress) { $statusColor = '#06b6d4'; $statusIcon = 'fa-spinner'; } elseif ($isBorrowed) { $statusColor = '#a21caf'; $statusIcon = 'fa-hand-holding'; } elseif ($isCompleted) { $statusColor = '#10b981'; $statusIcon = 'fa-check-circle'; } elseif ($isRejected) { $statusColor = '#ef4444'; $statusIcon = 'fa-times-circle'; } elseif ($isRevisi) { $statusColor = '#ef4444'; $statusIcon = 'fa-redo'; } @endphp
@if ($canApproveHead)
@csrf
@endif @if ($canReturn) @endif
{{ $statusLabel }}
@if ($canApproveAdmin)
@csrf @endif @if ($canReturn) @csrf @endif
Informasi Pengajuan
ID Peminjaman {{ $peminjaman->id ?? '-' }}
Tanggal Pengajuan {{ $tanggal_pengajuan ?? '-' }}
Departemen {{ $departemen_nama ?? '-' }}
Status {{ $statusLabel }}
@if ($canApproveAdmin || $isViewerSuperAdmin || ($showIT && ($isViewerAdmin || $isViewerHead)))
User Pengaju {{ $user_pengaju_name ?? '-' }}
@endif
IP Address {{ $submit_ip ?? '-' }}
Perangkat {{ $submit_device ?? '-' }}
@if (!empty($catatan_head) && !$canApproveAdmin)
Catatan SPV

{{ $catatan_head }}

@endif
@if ($canApproveAdmin || $showHead)
Approval SPV
Approver {{ $approver_head_name ?? 'Pending' }}
Tgl Approve {{ $tanggal_approve_head ?? '-' }}
@if ($isViewerSuperAdmin && !$canApproveAdmin)
User Pengaju {{ $user_pengaju_name ?? '-' }}
@endif @if (!empty($catatan_head))
Catatan

{{ $catatan_head }}

@endif
@endif @if ($showIT && !$canApproveAdmin)
Approval IT
Approver IT {{ $approver_admin_name ?? 'Pending' }}
Tgl Approve IT {{ $tanggal_approve_admin ?? '-' }}
@if (!empty($catatan_admin))
Catatan Admin IT

{{ $catatan_admin }}

@endif @if (!empty($catatan_return))
Catatan Return

{{ $catatan_return }}

@endif
@endif
Detail Item
@if ($canApproveAdmin) @else @endif @forelse(($items ?? []) as $idx => $it) @php $sit = strtolower($it->status_item ?? ''); $itemBadge = 'bg-secondary'; $itemText = strtoupper($it->status_item ?? '-'); if ($sit === 'pending') { $itemBadge = 'bg-primary'; } elseif (in_array($sit, ['approved', 'approve', 'acc', 'disetujui'])) { $itemBadge = 'bg-success'; } elseif (in_array($sit, ['reject', 'rejected', 'ditolak'])) { $itemBadge = 'bg-danger'; } // ── [TAMBAH] data perpanjangan per item ─────────────────── $latestPerp = isset($perpanjangans[$it->id]) ? $perpanjangans[$it->id]->sortByDesc('created_at')->first() : null; $perpStatus = $latestPerp->status ?? null; $canAjukanPerp = ($isViewerGuest || $isViewerHead) && ($is_pengaju ?? false) && $isBorrowed && in_array($sit, ['approved', 'approve']); $canAdminActPerp= ($isViewerAdmin || $isViewerSuperAdmin) && $isBorrowed && $perpStatus === 'pending'; $showPerpSection= $isBorrowed && ($latestPerp || $canAjukanPerp); // ────────────────────────────────────────────────────────── $firstAsset = isset($assets[$it->id]) ? $assets[$it->id]->first() : null; @endphp @if ($canApproveAdmin) @else @endif @if ($canApproveAdmin) @endif @if ($canApproveAdmin || $isOnProgress || $isBorrowed || $isCompleted) @endif @empty @endforelse
Action Nama Barang Penerima Keterangan Qty Diminta Stock Qty Disetujui Tanggal Pinjam Tanggal Kembali StatusQty Disetujui Tanggal Pinjam Tanggal Kembali Status
@if ($canApproveAdmin) @else @endif @if ($canApproveAdmin) @else @if(empty($it->tanggal_pinjam))
Jangka Panjang
@endif @endif
@if ($canApproveAdmin) @if(empty($it->tanggal_kembali))
Jangka Panjang
@endif @elseif ($canReturn) @php $tglKembaliVal = !empty($it->tanggal_kembali) ? \Carbon\Carbon::createFromFormat('d/m/Y', $it->tanggal_kembali)->format('Y-m-d') : ''; @endphp @if(empty($it->tanggal_kembali))
Wajib diisi
@endif @error('tgl_kembali_aktual.' . $it->id)
{{ $message }}
@enderror @else @if(empty($it->tanggal_kembali))
Jangka Panjang
@endif @endif
{{ $itemText }} {{-- ── [TAMBAH] Badge status perpanjangan di kolom status ── --}} @if ($isBorrowed && $latestPerp)
@if ($perpStatus === 'pending') Perpanjangan Pending @elseif ($perpStatus === 'approved') Diperpanjang @elseif ($perpStatus === 'rejected') Perp. Ditolak @endif
@endif {{-- ────────────────────────────────────────────────────── --}}
Barang dipilih untuk: {{ $it->nama_barang ?? '-' }}
@if ($errors->has("items.{$idx}.barang"))

{{ $errors->first("items.{$idx}.barang") }}

@endif
@foreach ($assets[$it->id] ?? [] as $assetItem) @php $assetId = $assetItem->id; $bpAwalList = $itemBarangPendukungs[$assetId] ?? collect(); $bpKembaliList = $assetReturnData[$assetId] ?? collect(); $statusAsset = $assetStatusMap[$assetId] ?? null; $assetSudahDicek = in_array($statusAsset, [ 'approve', 'reject', ]); $assetSudahApprove = $statusAsset === 'approve'; $assetSudahReject = $statusAsset === 'reject'; $kondisiColor = match ($assetItem->kondisi_asset ?? '') { 'baik' => [ 'bg' => '#d1fae5', 'text' => '#10b981', 'border' => '#6ee7b7', ], 'rusak_ringan' => [ 'bg' => '#fef3c7', 'text' => '#f59e0b', 'border' => '#fcd34d', ], 'rusak_berat', 'hilang' => [ 'bg' => '#fee2e2', 'text' => '#ef4444', 'border' => '#fca5a5', ], 'tidak_ada' => [ 'bg' => '#f1f5f9', 'text' => '#6b7280', 'border' => '#cbd5e1', ], default => [ 'bg' => '#f1f5f9', 'text' => '#6b7280', 'border' => '#cbd5e1', ], }; $statusAssetColor = match ($assetItem->status_asset ?? '') { 'borrowed' => [ 'bg' => '#f5d0fe', 'text' => '#a21caf', 'border' => '#e9d5ff', ], 'approve' => [ 'bg' => '#d1fae5', 'text' => '#10b981', 'border' => '#6ee7b7', ], 'reject' => [ 'bg' => '#fee2e2', 'text' => '#ef4444', 'border' => '#fca5a5', ], default => [ 'bg' => '#f1f5f9', 'text' => '#6b7280', 'border' => '#cbd5e1', ], }; @endphp
@if ($assetSudahDicek || $canReturn) DATA RETURN @else BARANG PENDUKUNG @endif {{ $it->nama_barang ?? '-' }} {{ $assetItem->kode_asset }} @if (!empty($assetItem->kondisi_asset)) {{ strtoupper(str_replace('_', ' ', $assetItem->kondisi_asset)) }} @endif @if (!empty($assetItem->status_asset) && $assetItem->status_asset !== 'ready') {{ strtoupper($assetItem->status_asset) }} @endif @if (!empty($it->tanggal_ambil)) Tgl Ambil: {{ $it->tanggal_ambil }} @endif
@if (!$canReturn) @if (!$assetSudahDicek) @if ($bpAwalList->count() > 0)
@foreach ($bpAwalList as $bp) @php $kondisiColor = match ( $bp->kondisi_barang_pendukung ?? '' ) { 'baik' => [ 'bg' => '#d1fae5', 'text' => '#10b981', 'border' => '#6ee7b7', 'icon' => 'fa-check-circle', ], 'rusak_ringan' => [ 'bg' => '#fef3c7', 'text' => '#f59e0b', 'border' => '#fcd34d', 'icon' => 'fa-exclamation-triangle', ], 'rusak_berat' => [ 'bg' => '#fee2e2', 'text' => '#ef4444', 'border' => '#fca5a5', 'icon' => 'fa-times-circle', ], 'hilang' => [ 'bg' => '#fee2e2', 'text' => '#ef4444', 'border' => '#fca5a5', 'icon' => 'fa-question-circle', ], 'tidak_ada' => [ 'bg' => '#f1f5f9', 'text' => '#6b7280', 'border' => '#cbd5e1', 'icon' => 'fa-minus-circle', ], default => [ 'bg' => '#f1f5f9', 'text' => '#6b7280', 'border' => '#cbd5e1', 'icon' => 'fa-circle', ], }; @endphp
{{ $bp->nama_barang_pendukung ?? '-' }}
Kondisi Awal (Saat Dipinjam)
{{ strtoupper(str_replace('_', ' ', $bp->kondisi_barang_pendukung ?? 'N/A')) }}
@if (!empty($bp->catatan))
{{ $bp->catatan }}
@endif
@endforeach
@else
Tidak ada data barang pendukung.
@endif @else
Hasil Return Asset: {{ $statusAsset }} @if (!empty($assetItem->catatan)) — {{ $assetItem->catatan }} @endif
@if ($bpAwalList->count() > 0)
Perbandingan Kondisi Barang Pendukung
@foreach ($bpAwalList as $bpAwal) @php $bpKembali = $bpKembaliList->firstWhere( 'nama_barang_pendukung', $bpAwal->nama_barang_pendukung, ); $kondisiAwalColor = match ( $bpAwal->kondisi_barang_pendukung ?? '' ) { 'baik' => [ 'bg' => '#d1fae5', 'text' => '#10b981', 'border' => '#6ee7b7', 'icon' => 'fa-check-circle', ], 'rusak_ringan' => [ 'bg' => '#fef3c7', 'text' => '#f59e0b', 'border' => '#fcd34d', 'icon' => 'fa-exclamation-triangle', ], 'rusak_berat' => [ 'bg' => '#fee2e2', 'text' => '#ef4444', 'border' => '#fca5a5', 'icon' => 'fa-times-circle', ], 'hilang' => [ 'bg' => '#fee2e2', 'text' => '#ef4444', 'border' => '#fca5a5', 'icon' => 'fa-question-circle', ], 'tidak_ada' => [ 'bg' => '#f1f5f9', 'text' => '#6b7280', 'border' => '#cbd5e1', 'icon' => 'fa-minus-circle', ], default => [ 'bg' => '#f1f5f9', 'text' => '#6b7280', 'border' => '#cbd5e1', 'icon' => 'fa-circle', ], }; $kondisiKembaliColor = $bpKembali ? match ( $bpKembali->kondisi_barang_pendukung ?? '' ) { 'baik' => [ 'bg' => '#d1fae5', 'text' => '#10b981', 'border' => '#6ee7b7', 'icon' => 'fa-check-circle', ], 'rusak_ringan' => [ 'bg' => '#fef3c7', 'text' => '#f59e0b', 'border' => '#fcd34d', 'icon' => 'fa-exclamation-triangle', ], 'rusak_berat' => [ 'bg' => '#fee2e2', 'text' => '#ef4444', 'border' => '#fca5a5', 'icon' => 'fa-times-circle', ], 'hilang' => [ 'bg' => '#fee2e2', 'text' => '#ef4444', 'border' => '#fca5a5', 'icon' => 'fa-question-circle', ], 'tidak_ada' => [ 'bg' => '#f1f5f9', 'text' => '#6b7280', 'border' => '#cbd5e1', 'icon' => 'fa-minus-circle', ], default => [ 'bg' => '#f1f5f9', 'text' => '#6b7280', 'border' => '#cbd5e1', 'icon' => 'fa-circle', ], } : null; $bpStatusKembali = $bpKembali->status_barang_pendukung ?? null; @endphp
{{ $bpAwal->nama_barang_pendukung ?? '-' }} @if ($bpStatusKembali) {{ strtoupper($bpStatusKembali) }} @endif
Kondisi Awal (Saat Dipinjam)
{{ strtoupper(str_replace('_', ' ', $bpAwal->kondisi_barang_pendukung ?? 'N/A')) }}
@if (!empty($bpAwal->catatan))
{{ $bpAwal->catatan }}
@endif
@if ($bpKembali && $kondisiKembaliColor)
Kondisi Kembali (Dicek Admin)
{{ strtoupper(str_replace('_', ' ', $bpKembali->kondisi_barang_pendukung ?? 'N/A')) }}
@if (!empty($bpKembali->catatan))
{{ $bpKembali->catatan }}
@endif
@else
Belum ada data kembali
@endif
@endforeach @else
Tidak ada barang pendukung pada asset ini.
@endif
@endif @else @if ($assetSudahApprove) @php $wrapperBg = '#f0fdf4'; $wrapperBorder = '#10b981'; $labelColor = '#059669'; $inputBg = '#f0fdf4'; $inputBorder = '#6ee7b7'; @endphp
@if ($bpAwalList->count() > 0)
Barang Pendukung
@foreach ($bpAwalList as $bp) @php $bpKembali = $bpKembaliList->firstWhere( 'nama_barang_pendukung', $bp->nama_barang_pendukung, ); $bpStatusKembali = $bpKembali->status_barang_pendukung ?? null; $bpSudahApprove = $bpStatusKembali === 'approve'; $bpKondisiAwalColor = match ( $bp->kondisi_barang_pendukung ?? '' ) { 'baik' => [ 'bg' => '#d1fae5', 'text' => '#10b981', 'border' => '#6ee7b7', 'icon' => 'fa-check-circle', ], 'rusak_ringan' => [ 'bg' => '#fef3c7', 'text' => '#f59e0b', 'border' => '#fcd34d', 'icon' => 'fa-exclamation-triangle', ], 'rusak_berat' => [ 'bg' => '#fee2e2', 'text' => '#ef4444', 'border' => '#fca5a5', 'icon' => 'fa-times-circle', ], 'hilang' => [ 'bg' => '#fee2e2', 'text' => '#ef4444', 'border' => '#fca5a5', 'icon' => 'fa-question-circle', ], 'tidak_ada' => [ 'bg' => '#f1f5f9', 'text' => '#6b7280', 'border' => '#cbd5e1', 'icon' => 'fa-minus-circle', ], default => [ 'bg' => '#f1f5f9', 'text' => '#6b7280', 'border' => '#cbd5e1', 'icon' => 'fa-circle', ], }; @endphp @if ($bpSudahApprove)
@php $bpKondisiKembaliColor = match ( $bpKembali->kondisi_barang_pendukung ?? '' ) { 'baik' => [ 'bg' => '#d1fae5', 'text' => '#10b981', 'border' => '#6ee7b7', 'icon' => 'fa-check-circle', ], 'rusak_ringan' => [ 'bg' => '#fef3c7', 'text' => '#f59e0b', 'border' => '#fcd34d', 'icon' => 'fa-exclamation-triangle', ], 'rusak_berat' => [ 'bg' => '#fee2e2', 'text' => '#ef4444', 'border' => '#fca5a5', 'icon' => 'fa-times-circle', ], 'hilang' => [ 'bg' => '#fee2e2', 'text' => '#ef4444', 'border' => '#fca5a5', 'icon' => 'fa-question-circle', ], 'tidak_ada' => [ 'bg' => '#f1f5f9', 'text' => '#6b7280', 'border' => '#cbd5e1', 'icon' => 'fa-minus-circle', ], default => [ 'bg' => '#f1f5f9', 'text' => '#6b7280', 'border' => '#cbd5e1', 'icon' => 'fa-circle', ], }; @endphp
Kondisi Awal Saat Dipinjam {{ strtoupper(str_replace('_', ' ', $bp->kondisi_barang_pendukung ?? 'N/A')) }} @if (!empty($bp->catatan)) {{ $bp->catatan }} @endif
Kondisi Kembali (Dicek Admin) {{ strtoupper(str_replace('_', ' ', $bpKembali->kondisi_barang_pendukung ?? 'N/A')) }} @if (!empty($bpKembali->catatan)) {{ $bpKembali->catatan }} @endif
@else @php $bpIsRejected = $bpKembali && $bpKembali->status_barang_pendukung === 'reject'; $bpWrapperBg = $bpIsRejected ? '#fee2e2' : '#fff8e1'; $bpWrapperBorder = $bpIsRejected ? '#fca5a5' : '#fcd34d'; @endphp
@php $bpKondisiKembaliColor = $bpKembali ? match ( $bpKembali->kondisi_barang_pendukung ?? '' ) { 'baik' => [ 'bg' => '#d1fae5', 'text' => '#10b981', 'border' => '#6ee7b7', 'icon' => 'fa-check-circle', ], 'rusak_ringan' => [ 'bg' => '#fef3c7', 'text' => '#f59e0b', 'border' => '#fcd34d', 'icon' => 'fa-exclamation-triangle', ], 'rusak_berat' => [ 'bg' => '#fee2e2', 'text' => '#ef4444', 'border' => '#fca5a5', 'icon' => 'fa-times-circle', ], 'hilang' => [ 'bg' => '#fee2e2', 'text' => '#ef4444', 'border' => '#fca5a5', 'icon' => 'fa-question-circle', ], 'tidak_ada' => [ 'bg' => '#f1f5f9', 'text' => '#6b7280', 'border' => '#cbd5e1', 'icon' => 'fa-minus-circle', ], default => [ 'bg' => '#f1f5f9', 'text' => '#6b7280', 'border' => '#cbd5e1', 'icon' => 'fa-circle', ], } : null; @endphp
Kondisi Awal Saat Dipinjam {{ strtoupper(str_replace('_', ' ', $bp->kondisi_barang_pendukung ?? 'N/A')) }} @if (!empty($bp->catatan)) {{ $bp->catatan }} @endif
@if ($bpKembali && $bpKondisiKembaliColor)
Kondisi Kembali (Dicek Admin) {{ strtoupper(str_replace('_', ' ', $bpKembali->kondisi_barang_pendukung ?? 'N/A')) }} @if (!empty($bpKembali->catatan)) {{ $bpKembali->catatan }} @endif
@else
Belum diisi — silakan isi form di bawah
@endif
@error('barang_pendukung.' . $bp->id . '.kondisi_barang_pendukung')
{{ $message }}
@enderror
@error('barang_pendukung.' . $bp->id . '.status_barang_pendukung')
{{ $message }}
@enderror
@error('barang_pendukung.' . $bp->id . '.catatan')
{{ $message }}
@enderror
@endif @endforeach
@endif
@else @php $isApproved = false; $isRejected = $assetSudahReject; $wrapperBg = $isApproved ? '#f0fdf4' : ($isRejected ? '#fee2e2' : '#fffbeb'); $wrapperBorder = $isApproved ? '#10b981' : ($isRejected ? '#ef4444' : '#f59e0b'); $labelColor = $isApproved ? '#059669' : ($isRejected ? '#991b1b' : '#d97706'); $inputBg = $isApproved ? '#f0fdf4' : '#fff'; $inputBorder = $isApproved ? '#6ee7b7' : '#dee2e6'; @endphp
@error('assets.' . $assetId . '.kondisi_asset')
{{ $message }}
@enderror
@error('assets.' . $assetId . '.status_asset')
{{ $message }}
@enderror
@error('assets.' . $assetId . '.catatan')
{{ $message }}
@enderror
@if ($bpAwalList->count() > 0)
Barang Pendukung
@foreach ($bpAwalList as $bpIdx => $bp) @php $bpKembali = $bpKembaliList->firstWhere( 'nama_barang_pendukung', $bp->nama_barang_pendukung, ); $bpIsApproved = $bpKembali && $bpKembali->status_barang_pendukung === 'approve'; $bpIsRejected = $bpKembali && $bpKembali->status_barang_pendukung === 'reject'; $bpWrapperBg = $bpIsApproved ? '#f0fdf4' : ($bpIsRejected ? '#fee2e2' : '#fffbeb'); $bpWrapperBorder = $bpIsApproved ? '#10b981' : ($bpIsRejected ? '#ef4444' : '#f59e0b'); $bpKondisiAwalColor = match ( $bp->kondisi_barang_pendukung ?? '' ) { 'baik' => [ 'bg' => '#d1fae5', 'text' => '#10b981', 'border' => '#6ee7b7', 'icon' => 'fa-check-circle', ], 'rusak_ringan' => [ 'bg' => '#fef3c7', 'text' => '#f59e0b', 'border' => '#fcd34d', 'icon' => 'fa-exclamation-triangle', ], 'rusak_berat' => [ 'bg' => '#fee2e2', 'text' => '#ef4444', 'border' => '#fca5a5', 'icon' => 'fa-times-circle', ], 'hilang' => [ 'bg' => '#fee2e2', 'text' => '#ef4444', 'border' => '#fca5a5', 'icon' => 'fa-question-circle', ], 'tidak_ada' => [ 'bg' => '#f1f5f9', 'text' => '#6b7280', 'border' => '#cbd5e1', 'icon' => 'fa-minus-circle', ], default => [ 'bg' => '#f1f5f9', 'text' => '#6b7280', 'border' => '#cbd5e1', 'icon' => 'fa-circle', ], }; @endphp
Kondisi Awal Saat Dipinjam {{ strtoupper(str_replace('_', ' ', $bp->kondisi_barang_pendukung ?? 'N/A')) }} — {{ $bp->nama_barang_pendukung ?? '-' }} @if (!empty($bp->catatan)) {{ $bp->catatan }} @endif
@if ($bpKembali) @php $bpKondisiKembaliColor = match ( $bpKembali->kondisi_barang_pendukung ?? '' ) { 'baik' => [ 'bg' => '#d1fae5', 'text' => '#10b981', 'border' => '#6ee7b7', 'icon' => 'fa-check-circle', ], 'rusak_ringan' => [ 'bg' => '#fef3c7', 'text' => '#f59e0b', 'border' => '#fcd34d', 'icon' => 'fa-exclamation-triangle', ], 'rusak_berat' => [ 'bg' => '#fee2e2', 'text' => '#ef4444', 'border' => '#fca5a5', 'icon' => 'fa-times-circle', ], 'hilang' => [ 'bg' => '#fee2e2', 'text' => '#ef4444', 'border' => '#fca5a5', 'icon' => 'fa-question-circle', ], 'tidak_ada' => [ 'bg' => '#f1f5f9', 'text' => '#6b7280', 'border' => '#cbd5e1', 'icon' => 'fa-minus-circle', ], default => [ 'bg' => '#f1f5f9', 'text' => '#6b7280', 'border' => '#cbd5e1', 'icon' => 'fa-circle', ], }; @endphp
Kondisi Kembali (Dicek Admin) {{ strtoupper(str_replace('_', ' ', $bpKembali->kondisi_barang_pendukung ?? 'N/A')) }} @if (!empty($bpKembali->catatan)) {{ $bpKembali->catatan }} @endif
@else
Belum diisi — silakan isi form di bawah
@endif
@if ($bpIsApproved)
@else @error('barang_pendukung.' . $bp->id . '.kondisi_barang_pendukung')
{{ $message }}
@enderror @endif
@if ($bpIsApproved)
@else @error('barang_pendukung.' . $bp->id . '.status_barang_pendukung')
{{ $message }}
@enderror @endif
@if ($bpIsApproved)
@else @error('barang_pendukung.' . $bp->id . '.catatan')
{{ $message }}
@enderror @endif
@endforeach
@endif
@endif @endif @php $sit_asset = strtolower($it->status_item ?? ''); $allPerpItem = isset($perpanjangans[$it->id]) ? $perpanjangans[$it->id] : collect(); $isFirstAsset = ($assets[$it->id] ?? collect())->first()?->id === $assetItem->id; $perpAsset = $allPerpItem; $latestPerpAsset = $perpAsset->sortByDesc('created_at')->first(); $perpStatusAsset = $latestPerpAsset->status ?? null; $canAjukanPerpAsset = ($isViewerGuest || $isViewerHead) && ($is_pengaju ?? false) && $isBorrowed && in_array($sit_asset, ['approved', 'approve']); $canAdminActPerpAsset= ($isViewerAdmin || $isViewerSuperAdmin) && $isBorrowed && $perpStatusAsset === 'pending'; $showPerpSectionAsset= $isBorrowed && ($latestPerpAsset || $canAjukanPerpAsset) && $isFirstAsset; @endphp @if ($showPerpSectionAsset)
{{-- Header label --}}
PERPANJANGAN {{-- Nama barang + kode asset --}} {{ $it->nama_barang ?? '-' }} {{ $assetItem->kode_asset }} {{-- Badge status perpanjangan --}} @if ($perpStatusAsset === 'pending') Menunggu Persetujuan Admin @elseif ($perpStatusAsset === 'approved') Disetujui @elseif ($perpStatusAsset === 'rejected') Ditolak @endif {{-- Tanggal lama → baru --}} @if ($latestPerpAsset) {{ $latestPerpAsset->tanggal_kembali_lama ? \Carbon\Carbon::parse($latestPerpAsset->tanggal_kembali_lama)->format('d/m/Y') : '-' }} {{ $latestPerpAsset->tanggal_kembali_baru ? \Carbon\Carbon::parse($latestPerpAsset->tanggal_kembali_baru)->format('d/m/Y') : '-' }} @endif
{{-- [A] Guest: belum ada / rejected / approved → tombol ajukan --}} @if ($canAjukanPerpAsset && ($perpStatusAsset === null || $perpStatusAsset === 'rejected' || $perpStatusAsset === 'approved')) @if ($perpStatusAsset === 'rejected')
Perpanjangan ditolak. @if (!empty($latestPerpAsset->catatan_admin)) Alasan: {{ $latestPerpAsset->catatan_admin }} @endif Anda dapat mengajukan kembali.
@endif @if ($perpStatusAsset === 'approved')
Perpanjangan sebelumnya disetujui. Tanggal kembali: {{ $latestPerpAsset->tanggal_kembali_baru ? \Carbon\Carbon::parse($latestPerpAsset->tanggal_kembali_baru)->format('d/m/Y') : '-' }} Anda dapat mengajukan perpanjangan baru.
@endif @php // Untuk data-item-id: pakai encrypted asset ID agar route perpanjangan // bisa membedakan per asset. Sesuaikan dengan route Anda. $perpEncryptedId = encrypt((string) $assetItem->id); @endphp {{-- [B] Guest/Head: pending --}} @elseif (($isViewerGuest || $isViewerHead) && $perpStatusAsset === 'pending')
Pengajuan perpanjangan Anda sedang menunggu persetujuan Admin IT. @if (!empty($latestPerpAsset->alasan_perpanjangan)) — Alasan: {{ $latestPerpAsset->alasan_perpanjangan }} @endif
{{-- [C] Guest/Head: approved --}} @elseif (($isViewerGuest || $isViewerHead) && $perpStatusAsset === 'approved')
Perpanjangan disetujui. Tanggal kembali baru: {{ $latestPerpAsset->tanggal_kembali_baru ? \Carbon\Carbon::parse($latestPerpAsset->tanggal_kembali_baru)->format('d/m/Y') : '-' }}
{{-- [D] Admin: ada pending → form approve/reject --}} @elseif ($canAdminActPerpAsset)
Alasan Pengajuan {{ $latestPerpAsset->alasan_perpanjangan ?? '-' }}
Tgl Kembali Lama {{ $latestPerpAsset->tanggal_kembali_lama ? \Carbon\Carbon::parse($latestPerpAsset->tanggal_kembali_lama)->format('d/m/Y') : '-' }}
Tgl Kembali Baru (Diminta) {{ $latestPerpAsset->tanggal_kembali_baru ? \Carbon\Carbon::parse($latestPerpAsset->tanggal_kembali_baru)->format('d/m/Y') : '-' }}
Diajukan {{ $latestPerpAsset->created_at ? \Carbon\Carbon::parse($latestPerpAsset->created_at)->format('d/m/Y H:i') : '-' }}
{{-- [E] Admin: lihat history (approved/rejected) --}} @elseif (($isViewerAdmin || $isViewerSuperAdmin) && $latestPerpAsset && $perpStatusAsset !== 'pending')
Perpanjangan {{ strtoupper($perpStatusAsset) }} @if (!empty($latestPerpAsset->catatan_admin)) — {{ $latestPerpAsset->catatan_admin }} @endif
@endif
{{-- end perpanjangan-wrapper --}} @endif @endforeach
Tidak ada item.
@if ($canApproveAdmin)
Barang Tambahan (Opsional)
Action Nama Barang Penerima Keterangan Qty Stock Tgl Pinjam Tgl Kembali
Belum ada barang tambahan.
@endif @if ($canApproveAdmin)
Catatan Admin IT
@endif
@if ( !$canApproveAdmin && ($isOnProgress || $isCompleted || $isBorrowed || $isRejected) && isset($opsionalItems) && $opsionalItems->isNotEmpty())
Barang Tambahan (Opsional)
@foreach ($opsionalItems as $opsIdx => $ops) @php $sOps = strtolower($ops->status_item ?? ''); $opsBadge = 'bg-secondary'; if ($sOps === 'pending') { $opsBadge = 'bg-primary'; } elseif (in_array($sOps, ['approved', 'approve', 'acc', 'disetujui'])) { $opsBadge = 'bg-success'; } elseif (in_array($sOps, ['reject', 'rejected', 'ditolak'])) { $opsBadge = 'bg-danger'; } // [TAMBAH] data perpanjangan per item opsional $latestPerpOps = isset($perpanjangans[$ops->id]) ? $perpanjangans[$ops->id]->sortByDesc('created_at')->first() : null; $perpStatusOps = $latestPerpOps->status ?? null; $canAjukanPerpOps = ($isViewerGuest || $isViewerHead) && $isBorrowed && in_array($sOps, ['approved', 'approve']); $canAdminActPerpOps= ($isViewerAdmin || $isViewerSuperAdmin) && $isBorrowed && $perpStatusOps === 'pending'; @endphp @endforeach
Action Nama Barang Penerima Keterangan Qty Diminta Qty Disetujui Tanggal Pinjam Tanggal Kembali Status
{{ strtoupper($ops->status_item ?? '-') }} {{-- [TAMBAH] Badge status perpanjangan opsional --}} @if ($isBorrowed && $latestPerpOps)
@if ($perpStatusOps === 'pending') Perpanjangan Pending @elseif ($perpStatusOps === 'approved') Diperpanjang @elseif ($perpStatusOps === 'rejected') Perp. Ditolak @endif
@endif {{-- -------------------------------------------------- --}}
@foreach ($opsionalAssets[$ops->id] ?? [] as $oa) @php $bpList = $opsionalConditions[$oa->id] ?? collect(); $oaAlreadyApproved = isset($opsionalAssetStatusMap[$oa->id]) && $opsionalAssetStatusMap[$oa->id] === 'approve'; $oaAlreadyReturned = isset($opsionalAssetStatusMap[$oa->id]) && in_array($opsionalAssetStatusMap[$oa->id], [ 'approve', 'reject', ]); $oaBpKembaliList = $opsionalAssetReturnData[$oa->id] ?? collect(); @endphp @if ($canReturn) DATA RETURN {{ $ops->nama_barang ?? '-' }} {{ $oa->kode_asset }} @if (!empty($oa->kondisi_asset)) @php $kondisiColor = match ($oa->kondisi_asset) { 'baik' => [ 'bg' => '#d1fae5', 'text' => '#10b981', 'border' => '#6ee7b7', ], 'rusak_ringan' => [ 'bg' => '#fef3c7', 'text' => '#f59e0b', 'border' => '#fcd34d', ], 'rusak_berat', 'hilang' => [ 'bg' => '#fee2e2', 'text' => '#ef4444', 'border' => '#fca5a5', ], default => [ 'bg' => '#f1f5f9', 'text' => '#6b7280', 'border' => '#cbd5e1', ], }; @endphp {{ strtoupper(str_replace('_', ' ', $oa->kondisi_asset)) }} @endif @if (!empty($oa->status_asset) && $oa->status_asset !== 'ready') @php $statusAssetColor = match ($oa->status_asset) { 'borrowed' => [ 'bg' => '#f5d0fe', 'text' => '#a21caf', 'border' => '#e9d5ff', ], 'approve' => [ 'bg' => '#d1fae5', 'text' => '#10b981', 'border' => '#6ee7b7', ], 'reject' => [ 'bg' => '#fee2e2', 'text' => '#ef4444', 'border' => '#fca5a5', ], default => [ 'bg' => '#f1f5f9', 'text' => '#6b7280', 'border' => '#cbd5e1', ], }; @endphp {{ strtoupper($oa->status_asset) }} @endif Tgl Ambil: {{ $ops->tanggal_ambil }} @if ($oaAlreadyApproved)
@if ($bpList->count() > 0)
Barang Pendukung
@foreach ($bpList as $bp) @php $oaBpKembali = $oaBpKembaliList->firstWhere( 'nama_barang_pendukung', $bp->nama_barang_pendukung, ); $bpStatusKembali = $oaBpKembali->status_barang_pendukung ?? null; $bpSudahApprove = $bpStatusKembali === 'approve'; $bpKondisiAwalColor = match ( $bp->kondisi_barang_pendukung ?? '' ) { 'baik' => [ 'bg' => '#d1fae5', 'text' => '#10b981', 'border' => '#6ee7b7', 'icon' => 'fa-check-circle', ], 'rusak_ringan' => [ 'bg' => '#fef3c7', 'text' => '#f59e0b', 'border' => '#fcd34d', 'icon' => 'fa-exclamation-triangle', ], 'rusak_berat' => [ 'bg' => '#fee2e2', 'text' => '#ef4444', 'border' => '#fca5a5', 'icon' => 'fa-times-circle', ], 'hilang' => [ 'bg' => '#fee2e2', 'text' => '#ef4444', 'border' => '#fca5a5', 'icon' => 'fa-question-circle', ], 'tidak_ada' => [ 'bg' => '#f1f5f9', 'text' => '#6b7280', 'border' => '#cbd5e1', 'icon' => 'fa-minus-circle', ], default => [ 'bg' => '#f1f5f9', 'text' => '#6b7280', 'border' => '#cbd5e1', 'icon' => 'fa-circle', ], }; @endphp @if ($bpSudahApprove)
@php $bpKondisiKembaliColor = match ( $oaBpKembali->kondisi_barang_pendukung ?? '' ) { 'baik' => [ 'bg' => '#d1fae5', 'text' => '#10b981', 'border' => '#6ee7b7', 'icon' => 'fa-check-circle', ], 'rusak_ringan' => [ 'bg' => '#fef3c7', 'text' => '#f59e0b', 'border' => '#fcd34d', 'icon' => 'fa-exclamation-triangle', ], 'rusak_berat' => [ 'bg' => '#fee2e2', 'text' => '#ef4444', 'border' => '#fca5a5', 'icon' => 'fa-times-circle', ], 'hilang' => [ 'bg' => '#fee2e2', 'text' => '#ef4444', 'border' => '#fca5a5', 'icon' => 'fa-question-circle', ], 'tidak_ada' => [ 'bg' => '#f1f5f9', 'text' => '#6b7280', 'border' => '#cbd5e1', 'icon' => 'fa-minus-circle', ], default => [ 'bg' => '#f1f5f9', 'text' => '#6b7280', 'border' => '#cbd5e1', 'icon' => 'fa-circle', ], }; @endphp
Kondisi Awal Saat Dipinjam {{ strtoupper(str_replace('_', ' ', $bp->kondisi_barang_pendukung ?? 'N/A')) }} — {{ $bp->nama_barang_pendukung ?? '-' }}
Kondisi Kembali (Dicek Admin) {{ strtoupper(str_replace('_', ' ', $oaBpKembali->kondisi_barang_pendukung ?? 'N/A')) }}
@else @php $oaBpIsRejected = $oaBpKembali && $oaBpKembali->status_barang_pendukung === 'reject'; $oaBpWrapperBg = $oaBpIsRejected ? '#fee2e2' : '#fff8e1'; $oaBpWrapperBorder = $oaBpIsRejected ? '#fca5a5' : '#fcd34d'; @endphp
@php $bpKondisiKembaliColor = $oaBpKembali ? match ( $oaBpKembali->kondisi_barang_pendukung ?? '' ) { 'baik' => [ 'bg' => '#d1fae5', 'text' => '#10b981', 'border' => '#6ee7b7', 'icon' => 'fa-check-circle', ], 'rusak_ringan' => [ 'bg' => '#fef3c7', 'text' => '#f59e0b', 'border' => '#fcd34d', 'icon' => 'fa-exclamation-triangle', ], 'rusak_berat' => [ 'bg' => '#fee2e2', 'text' => '#ef4444', 'border' => '#fca5a5', 'icon' => 'fa-times-circle', ], 'hilang' => [ 'bg' => '#fee2e2', 'text' => '#ef4444', 'border' => '#fca5a5', 'icon' => 'fa-question-circle', ], 'tidak_ada' => [ 'bg' => '#f1f5f9', 'text' => '#6b7280', 'border' => '#cbd5e1', 'icon' => 'fa-minus-circle', ], default => [ 'bg' => '#f1f5f9', 'text' => '#6b7280', 'border' => '#cbd5e1', 'icon' => 'fa-circle', ], } : null; @endphp
Kondisi Awal Saat Dipinjam {{ strtoupper(str_replace('_', ' ', $bp->kondisi_barang_pendukung ?? 'N/A')) }} — {{ $bp->nama_barang_pendukung ?? '-' }}
@if ($oaBpKembali && $bpKondisiKembaliColor)
Kondisi Kembali (Dicek Admin) {{ strtoupper(str_replace('_', ' ', $oaBpKembali->kondisi_barang_pendukung ?? 'N/A')) }}
@else
Belum diisi — silakan isi form di bawah
@endif
@error('opsional_barang_pendukung.' . $bp->id . '.kondisi_barang_pendukung')
{{ $message }}
@enderror
@error('opsional_barang_pendukung.' . $bp->id . '.status_barang_pendukung')
{{ $message }}
@enderror
@error('opsional_barang_pendukung.' . $bp->id . '.catatan')
{{ $message }}
@enderror
@endif @endforeach
@endif
@else
@error('opsional_assets.' . $oa->id . '.kondisi_asset')
{{ $message }}
@enderror
@error('opsional_assets.' . $oa->id . '.status_asset')
{{ $message }}
@enderror
@error('opsional_assets.' . $oa->id . '.catatan')
{{ $message }}
@enderror
@if ($bpList->count() > 0)
Barang Pendukung Opsional
@foreach ($bpList as $bp) @php $oaBpKembali = $oaBpKembaliList->firstWhere( 'nama_barang_pendukung', $bp->nama_barang_pendukung, ); $oaBpIsApproved = $oaBpKembali && $oaBpKembali->status_barang_pendukung === 'approve'; $oaBpIsRejected = $oaBpKembali && $oaBpKembali->status_barang_pendukung === 'reject'; $oaBpWrapperBg = $oaBpIsApproved ? '#f0fdf4' : ($oaBpIsRejected ? '#fee2e2' : '#fff8e1'); $oaBpWrapperBorder = $oaBpIsApproved ? '#10b981' : ($oaBpIsRejected ? '#ef4444' : '#f59e0b'); $bpKondisiAwalColor = match ( $bp->kondisi_barang_pendukung ?? '' ) { 'baik' => [ 'bg' => '#d1fae5', 'text' => '#10b981', 'border' => '#6ee7b7', 'icon' => 'fa-check-circle', ], 'rusak_ringan' => [ 'bg' => '#fef3c7', 'text' => '#f59e0b', 'border' => '#fcd34d', 'icon' => 'fa-exclamation-triangle', ], 'rusak_berat' => [ 'bg' => '#fee2e2', 'text' => '#ef4444', 'border' => '#fca5a5', 'icon' => 'fa-times-circle', ], 'hilang' => [ 'bg' => '#fee2e2', 'text' => '#ef4444', 'border' => '#fca5a5', 'icon' => 'fa-question-circle', ], 'tidak_ada' => [ 'bg' => '#f1f5f9', 'text' => '#6b7280', 'border' => '#cbd5e1', 'icon' => 'fa-minus-circle', ], default => [ 'bg' => '#f1f5f9', 'text' => '#6b7280', 'border' => '#cbd5e1', 'icon' => 'fa-circle', ], }; @endphp
Kondisi Awal Saat Dipinjam {{ strtoupper(str_replace('_', ' ', $bp->kondisi_barang_pendukung ?? 'N/A')) }} — {{ $bp->nama_barang_pendukung ?? '-' }} @if (!empty($bp->catatan)) {{ $bp->catatan }} @endif
@if ($oaBpKembali) @php $bpKondisiKembaliColor = match ( $oaBpKembali->kondisi_barang_pendukung ?? '' ) { 'baik' => [ 'bg' => '#d1fae5', 'text' => '#10b981', 'border' => '#6ee7b7', 'icon' => 'fa-check-circle', ], 'rusak_ringan' => [ 'bg' => '#fef3c7', 'text' => '#f59e0b', 'border' => '#fcd34d', 'icon' => 'fa-exclamation-triangle', ], 'rusak_berat' => [ 'bg' => '#fee2e2', 'text' => '#ef4444', 'border' => '#fca5a5', 'icon' => 'fa-times-circle', ], 'hilang' => [ 'bg' => '#fee2e2', 'text' => '#ef4444', 'border' => '#fca5a5', 'icon' => 'fa-question-circle', ], 'tidak_ada' => [ 'bg' => '#f1f5f9', 'text' => '#6b7280', 'border' => '#cbd5e1', 'icon' => 'fa-minus-circle', ], default => [ 'bg' => '#f1f5f9', 'text' => '#6b7280', 'border' => '#cbd5e1', 'icon' => 'fa-circle', ], }; @endphp
Kondisi Kembali (Dicek Admin) {{ strtoupper(str_replace('_', ' ', $oaBpKembali->kondisi_barang_pendukung ?? 'N/A')) }} @if (!empty($oaBpKembali->catatan)) {{ $oaBpKembali->catatan }} @endif
@else
Belum diisi — silakan isi form di bawah
@endif
@if ($oaBpIsApproved)
@else @error('opsional_barang_pendukung.' . $bp->id . '.kondisi_barang_pendukung')
{{ $message }}
@enderror @endif
@if ($oaBpIsApproved)
@else @error('opsional_barang_pendukung.' . $bp->id . '.status_barang_pendukung')
{{ $message }}
@enderror @endif
@if ($oaBpIsApproved)
@else @error('opsional_barang_pendukung.' . $bp->id . '.catatan')
{{ $message }}
@enderror @endif
@endforeach
@endif
@endif @else
@if ($oaAlreadyReturned) DATA RETURN @else BARANG PENDUKUNG @endif {{ $ops->nama_barang ?? '-' }} {{ $oa->kode_asset }} @if (!empty($oa->kondisi_asset)) @php $kondisiColor = match ($oa->kondisi_asset) { 'baik' => [ 'bg' => '#d1fae5', 'text' => '#10b981', 'border' => '#6ee7b7', ], 'rusak_ringan' => [ 'bg' => '#fef3c7', 'text' => '#f59e0b', 'border' => '#fcd34d', ], 'rusak_berat', 'hilang' => [ 'bg' => '#fee2e2', 'text' => '#ef4444', 'border' => '#fca5a5', ], default => [ 'bg' => '#f1f5f9', 'text' => '#6b7280', 'border' => '#cbd5e1', ], }; @endphp {{ strtoupper(str_replace('_', ' ', $oa->kondisi_asset)) }} @endif @if (!empty($oa->status_asset) && $oa->status_asset !== 'ready') @php $statusAssetColor = match ( $oa->status_asset ) { 'borrowed' => [ 'bg' => '#f5d0fe', 'text' => '#a21caf', 'border' => '#e9d5ff', ], 'approve' => [ 'bg' => '#d1fae5', 'text' => '#10b981', 'border' => '#6ee7b7', ], 'reject' => [ 'bg' => '#fee2e2', 'text' => '#ef4444', 'border' => '#fca5a5', ], default => [ 'bg' => '#f1f5f9', 'text' => '#6b7280', 'border' => '#cbd5e1', ], }; @endphp {{ strtoupper($oa->status_asset) }} @endif @if (!empty($ops->tanggal_ambil)) Tgl Ambil: {{ $ops->tanggal_ambil }} @endif
@if ($oaAlreadyReturned) @php $oaBpAwalList = $opsionalConditions->get( (string) $oa->id, collect(), ); $oaIsApproved = isset($opsionalAssetStatusMap[$oa->id]) && $opsionalAssetStatusMap[$oa->id] === 'approve'; $oaIsRejected = isset($opsionalAssetStatusMap[$oa->id]) && $opsionalAssetStatusMap[$oa->id] === 'reject'; @endphp
Hasil Return Asset: {{ $oa->status_asset ?? '-' }} @if (!empty($oa->catatan)) — {{ $oa->catatan }} @endif
@if ($oaBpAwalList->count() > 0)
Perbandingan Kondisi Barang Pendukung
@foreach ($oaBpAwalList as $bpAwal) @php $bpKembali = $oaBpKembaliList->firstWhere( 'nama_barang_pendukung', $bpAwal->nama_barang_pendukung, ); $kondisiAwalColor = match ( $bpAwal->kondisi_barang_pendukung ?? '' ) { 'baik' => [ 'bg' => '#d1fae5', 'text' => '#10b981', 'border' => '#6ee7b7', 'icon' => 'fa-check-circle', ], 'rusak_ringan' => [ 'bg' => '#fef3c7', 'text' => '#f59e0b', 'border' => '#fcd34d', 'icon' => 'fa-exclamation-triangle', ], 'rusak_berat' => [ 'bg' => '#fee2e2', 'text' => '#ef4444', 'border' => '#fca5a5', 'icon' => 'fa-times-circle', ], 'hilang' => [ 'bg' => '#fee2e2', 'text' => '#ef4444', 'border' => '#fca5a5', 'icon' => 'fa-question-circle', ], 'tidak_ada' => [ 'bg' => '#f1f5f9', 'text' => '#6b7280', 'border' => '#cbd5e1', 'icon' => 'fa-minus-circle', ], default => [ 'bg' => '#f1f5f9', 'text' => '#6b7280', 'border' => '#cbd5e1', 'icon' => 'fa-circle', ], }; $kondisiKembaliColor = $bpKembali ? match ( $bpKembali->kondisi_barang_pendukung ?? '' ) { 'baik' => [ 'bg' => '#d1fae5', 'text' => '#10b981', 'border' => '#6ee7b7', 'icon' => 'fa-check-circle', ], 'rusak_ringan' => [ 'bg' => '#fef3c7', 'text' => '#f59e0b', 'border' => '#fcd34d', 'icon' => 'fa-exclamation-triangle', ], 'rusak_berat' => [ 'bg' => '#fee2e2', 'text' => '#ef4444', 'border' => '#fca5a5', 'icon' => 'fa-times-circle', ], 'hilang' => [ 'bg' => '#fee2e2', 'text' => '#ef4444', 'border' => '#fca5a5', 'icon' => 'fa-question-circle', ], 'tidak_ada' => [ 'bg' => '#f1f5f9', 'text' => '#6b7280', 'border' => '#cbd5e1', 'icon' => 'fa-minus-circle', ], default => [ 'bg' => '#f1f5f9', 'text' => '#6b7280', 'border' => '#cbd5e1', 'icon' => 'fa-circle', ], } : null; $bpStatusKembali = $bpKembali->status_barang_pendukung ?? null; @endphp
{{ $bpAwal->nama_barang_pendukung ?? '-' }} @if ($bpStatusKembali) {{ strtoupper($bpStatusKembali) }} @endif
Kondisi Awal (Saat Dipinjam)
{{ strtoupper(str_replace('_', ' ', $bpAwal->kondisi_barang_pendukung ?? 'N/A')) }}
@if (!empty($bpAwal->catatan))
{{ $bpAwal->catatan }}
@endif
@if ($bpKembali && $kondisiKembaliColor)
Kondisi Kembali (Dicek Admin)
{{ strtoupper(str_replace('_', ' ', $bpKembali->kondisi_barang_pendukung ?? 'N/A')) }}
@if (!empty($bpKembali->catatan))
{{ $bpKembali->catatan }}
@endif
@else
Belum diisi — silakan isi form di bawah
@endif
@endforeach @else
Tidak ada barang pendukung pada asset ini.
@endif
@else @forelse ($bpList as $bp) @php $kondisiColor = match ( $bp->kondisi_barang_pendukung ?? '' ) { 'baik' => [ 'bg' => '#d1fae5', 'text' => '#10b981', 'border' => '#6ee7b7', 'icon' => 'fa-check-circle', ], 'rusak_ringan' => [ 'bg' => '#fef3c7', 'text' => '#f59e0b', 'border' => '#fcd34d', 'icon' => 'fa-exclamation-triangle', ], 'rusak_berat' => [ 'bg' => '#fee2e2', 'text' => '#ef4444', 'border' => '#fca5a5', 'icon' => 'fa-times-circle', ], 'hilang' => [ 'bg' => '#fee2e2', 'text' => '#ef4444', 'border' => '#fca5a5', 'icon' => 'fa-question-circle', ], 'tidak_ada' => [ 'bg' => '#f1f5f9', 'text' => '#6b7280', 'border' => '#cbd5e1', 'icon' => 'fa-minus-circle', ], default => [ 'bg' => '#f1f5f9', 'text' => '#6b7280', 'border' => '#cbd5e1', 'icon' => 'fa-circle', ], }; @endphp
{{ $bp->nama_barang_pendukung ?? '-' }}
Kondisi Awal (Saat Dipinjam)
{{ strtoupper(str_replace('_', ' ', $bp->kondisi_barang_pendukung ?? 'N/A')) }}
@if (!empty($bp->catatan))
{{ $bp->catatan }}
@endif
@empty
Tidak ada data barang pendukung.
@endforelse @endif @endif {{-- [TAMBAH] Section perpanjangan untuk barang opsional --}} @php $allPerpOpsItem = isset($perpanjangans[$ops->id]) ? $perpanjangans[$ops->id] : collect(); $isFirstOpsAsset = ($opsionalAssets[$ops->id] ?? collect())->first()?->id === $oa->id; $latestPerpOpsAsset = $allPerpOpsItem->sortByDesc('created_at')->first(); $perpStatusOpsAsset = $latestPerpOpsAsset->status ?? null; $canAjukanPerpOpsAsset = ($isViewerGuest || $isViewerHead) && $isBorrowed && in_array($sOps, ['approved', 'approve']); $canAdminActPerpOpsAsset = ($isViewerAdmin || $isViewerSuperAdmin) && $isBorrowed && $perpStatusOpsAsset === 'pending'; $showPerpSectionOpsAsset = $isBorrowed && ($latestPerpOpsAsset || $canAjukanPerpOpsAsset) && $isFirstOpsAsset; @endphp @if ($showPerpSectionOpsAsset)
{{-- Header label --}}
PERPANJANGAN {{ $ops->nama_barang ?? '-' }} {{ $oa->kode_asset }} {{-- Badge status --}} @if ($perpStatusOpsAsset === 'pending') Menunggu Persetujuan Admin @elseif ($perpStatusOpsAsset === 'approved') Disetujui @elseif ($perpStatusOpsAsset === 'rejected') Ditolak @endif {{-- Tanggal lama → baru --}} @if ($latestPerpOpsAsset) {{ $latestPerpOpsAsset->tanggal_kembali_lama ? \Carbon\Carbon::parse($latestPerpOpsAsset->tanggal_kembali_lama)->format('d/m/Y') : '-' }} {{ $latestPerpOpsAsset->tanggal_kembali_baru ? \Carbon\Carbon::parse($latestPerpOpsAsset->tanggal_kembali_baru)->format('d/m/Y') : '-' }} @endif
{{-- [A] Guest: ajukan / ajukan ulang --}} @if ($canAjukanPerpOpsAsset && ($perpStatusOpsAsset === null || $perpStatusOpsAsset === 'rejected' || $perpStatusOpsAsset === 'approved')) @if ($perpStatusOpsAsset === 'rejected')
Perpanjangan ditolak. @if (!empty($latestPerpOpsAsset->catatan_admin)) Alasan: {{ $latestPerpOpsAsset->catatan_admin }} @endif Anda dapat mengajukan kembali.
@endif @if ($perpStatusOpsAsset === 'approved')
Perpanjangan sebelumnya disetujui. Tanggal kembali: {{ $latestPerpOpsAsset->tanggal_kembali_baru ? \Carbon\Carbon::parse($latestPerpOpsAsset->tanggal_kembali_baru)->format('d/m/Y') : '-' }} Anda dapat mengajukan perpanjangan baru.
@endif @php $perpOpsEncryptedId = encrypt((string) $oa->id); @endphp {{-- [B] Guest/Head: pending --}} @elseif (($isViewerGuest || $isViewerHead) && $perpStatusOpsAsset === 'pending')
Pengajuan perpanjangan Anda sedang menunggu persetujuan Admin IT. @if (!empty($latestPerpOpsAsset->alasan_perpanjangan)) — Alasan: {{ $latestPerpOpsAsset->alasan_perpanjangan }} @endif
{{-- [C] Guest/Head: approved --}} @elseif (($isViewerGuest || $isViewerHead) && $perpStatusOpsAsset === 'approved')
Perpanjangan disetujui. Tanggal kembali baru: {{ $latestPerpOpsAsset->tanggal_kembali_baru ? \Carbon\Carbon::parse($latestPerpOpsAsset->tanggal_kembali_baru)->format('d/m/Y') : '-' }}
{{-- [D] Admin: ada pending → form approve/reject --}} @elseif ($canAdminActPerpOpsAsset)
Alasan Pengajuan {{ $latestPerpOpsAsset->alasan_perpanjangan ?? '-' }}
Tgl Kembali Lama {{ $latestPerpOpsAsset->tanggal_kembali_lama ? \Carbon\Carbon::parse($latestPerpOpsAsset->tanggal_kembali_lama)->format('d/m/Y') : '-' }}
Tgl Kembali Baru (Diminta) {{ $latestPerpOpsAsset->tanggal_kembali_baru ? \Carbon\Carbon::parse($latestPerpOpsAsset->tanggal_kembali_baru)->format('d/m/Y') : '-' }}
Diajukan {{ $latestPerpOpsAsset->created_at ? \Carbon\Carbon::parse($latestPerpOpsAsset->created_at)->format('d/m/Y H:i') : '-' }}
{{-- [E] Admin: lihat history (approved/rejected) --}} @elseif (($isViewerAdmin || $isViewerSuperAdmin) && $latestPerpOpsAsset && $perpStatusOpsAsset !== 'pending')
Perpanjangan {{ strtoupper($perpStatusOpsAsset) }} @if (!empty($latestPerpOpsAsset->catatan_admin)) — {{ $latestPerpOpsAsset->catatan_admin }} @endif
@endif
{{-- end perpanjangan-wrapper opsional --}} @endif {{-- ============================================================ --}} @endforeach
@endif @if ($canReturn)
Catatan Return
@error('catatan_return')
{{ $message }}
@enderror
@endif
@if ($canApproveAdmin)
@endif @if ($canReturn) @endif @if ($canApproveHead) @endif {{-- ══════════════════════════════════════════════════════════════════ [TAMBAH] MODAL: User ajukan perpanjangan ══════════════════════════════════════════════════════════════════ --}} {{-- ══════════════════════════════════════════════════════════════════ [TAMBAH] MODAL: Admin reject perpanjangan ══════════════════════════════════════════════════════════════════ --}} {{-- Modal Konflik Perpanjangan --}} {{-- Modal Pilih Asset Pengganti --}} @endsection @push('js') @endpush