@php $pengajuanRoute = $puRouteBases['truser'] ?? 'user'; $displayItems = $table_detail_d ?? collect(); $sessionUsername = strtolower(trim((string) (session('username') ?? ''))); $modelUsername = strtolower(trim((string) ($currentUser->username ?? ''))); $usernameFromId = $currentUserId ? strtolower((string) (\Illuminate\Support\Facades\DB::table('users')->where('id', $currentUserId)->value('username') ?? '')) : ''; $currentUsername = $sessionUsername !== '' && !is_numeric($sessionUsername) ? $sessionUsername : ($modelUsername !== '' && !is_numeric($modelUsername) ? $modelUsername : $usernameFromId); $hrdUserIds = \Illuminate\Support\Facades\DB::table('users') ->where(function ($q) { $q->whereRaw("FIND_IN_SET('hrdxxx', REPLACE(LOWER(idroles), ' ', ''))") ->orWhereRaw("FIND_IN_SET('hrd', REPLACE(LOWER(idroles), ' ', ''))"); })->pluck('id')->map(fn ($id) => (int) $id)->all(); $hrdUsernames = \Illuminate\Support\Facades\DB::table('users') ->where(function ($q) { $q->whereRaw("FIND_IN_SET('hrdxxx', REPLACE(LOWER(idroles), ' ', ''))") ->orWhereRaw("FIND_IN_SET('hrd', REPLACE(LOWER(idroles), ' ', ''))"); })->pluck('username')->map(fn ($u) => strtolower((string) $u))->all(); $isCurrentViewerHrd = ($currentUserId && in_array((int) $currentUserId, $hrdUserIds, true)) || ($currentUsername !== '' && in_array($currentUsername, $hrdUsernames, true)); $isCurrentViewerAdmin = $isAdmin; $isHrdSubmission = function ($item) use ($hrdUserIds, $hrdUsernames) { $uid = isset($item->user_id) ? (string) $item->user_id : ''; $uidInt = is_numeric($uid) ? (int) $uid : null; $createdBy = strtolower((string) ($item->user_create ?? '')); if ($uidInt !== null && in_array($uidInt, $hrdUserIds, true)) return true; if ($uid !== '' && !is_numeric($uid) && in_array(strtolower($uid), $hrdUsernames, true)) return true; return $createdBy !== '' && in_array($createdBy, $hrdUsernames, true); }; $isVisibleForCurrentUser = function ($item) use ($currentUserId, $currentUsername, $isHrdSubmission, $isCurrentViewerHrd, $isCurrentViewerAdmin) { if ($isCurrentViewerAdmin) return true; $uid = isset($item->user_id) ? (string) $item->user_id : ''; $createdBy = strtolower((string) ($item->user_create ?? '')); $isHrd = $isHrdSubmission($item); $byUserId = $currentUserId && $uid !== '' && is_numeric($uid) && (int) $uid === (int) $currentUserId; $byLegacyUserId = $currentUsername !== '' && $uid !== '' && !is_numeric($uid) && strtolower($uid) === $currentUsername; $byUserCreate = $currentUsername !== '' && $createdBy === $currentUsername; if ($isCurrentViewerHrd && $isHrd && ($byUserId || $byLegacyUserId || $byUserCreate)) return true; if ($isHrd) return false; return $byUserId || $byLegacyUserId || $byUserCreate; }; $getPelaksanaLabel = function ($item) { $wt = strtolower(trim((string) ($item->work_type ?? ''))); if ($wt === 'vendor') return 'Vendor'; if ($wt === 'internal') return 'Internal'; return '-'; }; if ($displayItems->isEmpty()) { $displayItems = \Illuminate\Support\Facades\DB::table('tr_non_periodic') ->leftJoin('ms_area', 'tr_non_periodic.area_id', '=', 'ms_area.id') ->select('tr_non_periodic.*', 'ms_area.nama_area as area_name') ->orderBy('tr_non_periodic.created_at', 'desc') ->get(); } $areaMap = \Illuminate\Support\Facades\DB::table('ms_area') ->pluck('nama_area', 'id'); $displayItems = $displayItems->filter(fn ($item) => $isVisibleForCurrentUser($item))->map(function ($item) use ($areaMap) { if (empty($item->area_name) && !empty($item->area_id)) { $item->area_name = $areaMap->get((int) $item->area_id) ?? $areaMap->get((string) $item->area_id); } return $item; })->values(); $statusField = 'request_status'; $verifikasiItems = $displayItems->filter(fn ($i) => strtolower($i->{$statusField} ?? '') === 'verifikasi'); $verifikasiCount = $verifikasiItems->count(); $pendingCount = $displayItems->filter(fn ($i) => in_array(strtolower($i->{$statusField} ?? ''), ['review','pending','approved']) && empty($i->hrd_approval_date))->count(); $progressCount = $displayItems->filter(function ($i) use ($statusField) { $s = strtolower($i->{$statusField} ?? ''); return (in_array($s, ['review','approved']) && !empty($i->hrd_approval_date)) || in_array($s, ['pengadaan','pengerjaan','revisi']); })->count(); $completedCount = $displayItems->where($statusField, 'completed')->count(); $historyItems = $displayItems->filter(function ($item) use ($statusField) { $statusValue = strtolower($item->{$statusField} ?? ''); // Normalize status if (in_array($statusValue, ['reject'])) { $statusValue = 'rejected'; } elseif (in_array($statusValue, ['canceled', 'cancelled'])) { $statusValue = 'cancel'; } return in_array($statusValue, ['completed', 'rejected', 'cancel']); }); $draftItems = $displayItems->filter(function ($item) use ($statusField) { return strtolower($item->{$statusField} ?? '') === 'draft'; }); $trackingItems = $displayItems->filter(function ($item) use ($statusField) { $statusValue = strtolower($item->{$statusField} ?? ''); return in_array($statusValue, ['pending', 'review', 'pengadaan', 'pengerjaan', 'revisi', 'verifikasi']) || (!empty($item->head_approval_date) && in_array($statusValue, ['approved'])); }); @endphp {{-- Header + Add Button --}}
Total Pengajuan
Menunggu Verifikasi
Dalam Proses
Selesai
Pekerjaan yang diselesaikan petugas dan memerlukan verifikasi Anda
| Aksi | ID Trans | Tanggal Pengajuan | Area | Deskripsi | Pelaksana | Dokumentasi |
|---|---|---|---|---|---|---|
|
|
{{ $detail->id_trans ?: '-' }} | {{ $displayDate }} | {{ $detail->area_name ?? $detail->area ?? '-' }} | {{ Str::limit($detail->job_description ?? '-', 50) }} | {{ $getPelaksanaLabel($detail) }} | @if($allDocs->count() > 0) @include('transc.auto.partials._docs_modal', ['detail' => $detail, 'allDocs' => $allDocs]) @else Belum ada dokumentasi @endif |
| Belum ada pekerjaan yang perlu diverifikasi. | ||||||
| Aksi | ID Trans | Tanggal Pengajuan | Area | Deskripsi | Pelaksana | Status |
|---|---|---|---|---|---|---|
|
@if ($primary != '')
@if (($authorize->edit ?? '0') == '1')
{{-- Hapus Draft --}}
@endif
|
{{ $detail->id_trans ?: '-' }} | {{ $detail->created_at ? \Illuminate\Support\Carbon::parse($detail->created_at)->format('d-m-Y') : '-' }} | {{ $detail->area_name ?? $detail->area ?? $detail->area_id ?? '-' }} | {{ $detail->job_description ?? $detail->description ?? '-' }} | {{ $getPelaksanaLabel($detail) }} | {{ $status ?: 'draft' }} |
| Aksi | Area | Deskripsi | Progress |
|---|---|---|---|
| {{-- No column removed per UX request --}} | {{ $detail->area_name ?? $detail->area ?? $detail->area_id ?? '-' }} | {{ $detail->job_description ?? $detail->description ?? '-' }} |
@if($isRejected)
Ditolak / Dibatalkan
@else
Pending
{{ $datePending }}
Review
{{ $dateReview }}
Pengadaan
{{ $datePengadaan !== '-' ? $datePengadaan : ($currentStep == 'pengadaan' ? 'Proses...' : '-') }}
Pengerjaan
{{ $datePengerjaan !== '-' ? $datePengerjaan : ($currentStep == 'pengerjaan' ? 'Proses...' : '-') }}
Complete
-
|
| Aksi | ID Trans | Tanggal Pengajuan | Area | Deskripsi | Pelaksana | Status | Dokumentasi |
|---|---|---|---|---|---|---|---|
|
@if ($primary != '')
@if (($authorize->edit ?? '0') == '1')
@endif
@endif
|
{{ $detail->id_trans ?: '-' }} | {{ \Carbon\Carbon::parse($detail->created_at)->format('d-m-Y') ?? '-' }} | {{ $detail->area_name ?? $detail->area ?? '-' }} | {{ $detail->job_description ?? '-' }} | {{ $getPelaksanaLabel($detail) }} | {{ $status ?: '-' }} |
@if ($status === 'completed')
@if ($histDocs->count() > 0)
Belum ada
@if (($authorize->edit ?? '0') == '1' || $isCurrentViewerHrd || $isCurrentViewerAdmin)
@endif
@endif
@else
-
@endif
|