@extends('layouts.app', ['class' => 'g-sidenav-show bg-gray-100']) @section('content') @include('layouts.navbars.auth.topnav', ['title' => ''])
List {{ $title_menu }}
{{-- alert --}} @include('components.alert')

@php $users_rules = $users_rules ?? []; $isSpvView = in_array('spv', $users_rules); $isPpicView = in_array('ppic', $users_rules) || in_array('admins', $users_rules); $canHeaderApprove = in_array('head', $users_rules) || in_array('ppic', $users_rules) || in_array('admins', $users_rules); $uniqueDepts = []; if ($isPpicView) { $uniqueDepts = collect($headers) ->pluck('nama_departemen') ->filter(fn($val) => !empty($val) && $val !== '-') ->unique() ->values(); $deptNotifCounts = collect($headers) ->groupBy(fn($header) => $header->nama_departemen ?: '-') ->map(fn($items) => $items->count()); } @endphp @if ($isPpicView && count($uniqueDepts) > 0)
@endif
@if ($isSpvView || in_array('admins', $users_rules)) @endif @php $rowNum = 1; @endphp @foreach ($headers as $header) @php $detailCollection = collect($header->details ?? []); $statusColors = [ 'entry' => '#6c757d', 'pending' => '#ffc107', 'finish' => '#28a745', 'parsial' => '#17a2b8', 'approve' => '#28a745', 'reject' => '#dc3545', 'cancel' => '#6c757d', 'draft' => '#6c757d', ]; $draftCount = $detailCollection ->filter(function ($d) { return in_array($d->status ?? '', ['draft', 'entry', '-', '']); }) ->count(); $headRejectCount = $detailCollection ->filter(function ($d) { return ($d->status ?? '') === 'reject' && !empty($d->appr_head_by) && empty($d->appr_ppic_by); }) ->count(); $headerDisplayStatus = $header->status ?? 'entry'; $statusColor = $statusColors[$headerDisplayStatus] ?? '#6c757d'; $canEditSpv = $isSpvView && $authorize->edit == '1' && ($draftCount > 0 || $headRejectCount > 0); $actionableDetails = collect(); if ($canHeaderApprove && !$isSpvView) { if (in_array('admins', $users_rules)) { $actionableDetails = $detailCollection->reject(function ($d) { $normalizedStatus = strtolower( trim((string) ($d->status ?? '')), ); return in_array( $normalizedStatus, ['approve', 'reject', 'cancel', 'draft', '-', ''], true, ); }); } elseif (in_array('ppic', $users_rules)) { $actionableDetails = $detailCollection->filter(function ($d) { $normalizedStatus = strtolower( trim((string) ($d->status ?? '')), ); return in_array( $normalizedStatus, ['pending ppic', 'parsial'], true, ); }); } elseif (in_array('head', $users_rules)) { $actionableDetails = $detailCollection->filter(function ($d) { $normalizedStatus = strtolower( trim((string) ($d->status ?? '')), ); return $normalizedStatus === 'pending head'; }); } } $actionablePayload = $actionableDetails ->map(function ($d) { return [ 'id' => (int) $d->id, 'nama_barang' => $d->nama_barang, 'qty' => $d->qty, 'satuan' => $d->satuan_nama ?? ($d->satuan ?? ''), 'status' => $d->status ?? '', ]; }) ->values(); $canShowApprovalButtons = $actionablePayload->count() > 0; @endphp @if ($isSpvView || in_array('admins', $users_rules)) @endif @endforeach
No No PRA PR Pemohon Departemen Tgl PengajuanStatusAction
{{ $rowNum++ }} {{ $header->no_prapr }} {{ $header->user?->full_name ?? '-' }} {{ $header->nama_departemen ?? '-' }} {{ date('d M y', strtotime($header->tanggal_pengajuan)) }} {{ strtoupper($headerDisplayStatus) }}
@if ($canEditSpv) @endif @php $postingDetails = $detailCollection ->filter(fn($d) => ($d->isactive ?? '1') === '1') ->map(function ($d) { $status = (string) ($d->status ?? ''); $normalizedStatus = strtolower(trim($status)); $isDraftLike = in_array( $normalizedStatus, ['draft', 'entry', '-', ''], true, ); $isHeadRejected = $status === 'reject' && !empty($d->appr_head_by) && empty($d->appr_ppic_by); return [ 'id' => (int) $d->id, 'nama_barang' => $d->nama_barang, 'qty' => $d->qty, 'satuan' => $d->satuan_nama, 'status' => $status, 'revisable' => $isDraftLike || $isHeadRejected, ]; }) ->values(); @endphp @php $canShowPostingButton = $postingDetails->contains( fn($d) => !empty($d['revisable']), ); @endphp @if ($isSpvView && $postingDetails->count() > 0 && $canShowPostingButton) @endif @if (!$isSpvView && $canHeaderApprove && $canShowApprovalButtons) @if (($header->pending_count ?? 0) > 0) @endif @endif
@php $isSpvView = in_array('spv', $users_rules ?? []); @endphp @if ($isSpvView) @else @endif @endsection @push('js') @endpush