@php $messages = [ 'submitted' => 'Terdapat pengajuan permit baru yang memerlukan persetujuan Anda.', 'resubmitted' => 'Permit telah direvisi dan diajukan ulang untuk persetujuan Anda.', 'approved_picker' => 'Permit telah disetujui oleh PIC Kerja.', 'approved_picare' => 'Permit telah disetujui oleh PIC Area.', 'approved_k3' => 'Permit telah disetujui oleh K3 dan mulai berlaku sampai dengan ' . (isset($permitData->masa_berlaku) ? \Carbon\Carbon::parse($permitData->masa_berlaku)->format('d M Y') : 'tanggal tidak tersedia') . '.', 'revision_picker' => 'Pengajuan permit Anda terdapat revisi dari tim PIC Kerja. Silakan lakukan penyesuaian sesuai catatan di bawah ini.', 'revision_picare' => 'Pengajuan permit Anda terdapat revisi dari tim PIC Area. Silakan lakukan penyesuaian sesuai catatan di bawah ini.', 'revision_k3' => 'Pengajuan permit Anda terdapat revisi dari tim K3. Silakan lakukan penyesuaian sesuai catatan di bawah ini.', 'rejected_picker' => 'Permit ditolak oleh PIC Kerja.', 'rejected_picare' => 'Permit ditolak oleh PIC Area.', 'rejected_k3' => 'Permit ditolak oleh K3.', 'completed' => 'Permit telah dinyatakan selesai.', 'completed_picker' => 'Permit telah dinyatakan selesai.', 'completed_picare' => 'Permit telah dinyatakan selesai.', 'completed_k3' => 'Permit telah dinyatakan selesai.', 'need_approval' => 'Terdapat permit yang memerlukan persetujuan Anda.', 'completion_requested' => 'Vendor telah mengajukan permohonan selesai untuk permit ini. Silakan lakukan verifikasi.', 'completion_resubmitted' => 'Vendor telah mengajukan ulang permohonan selesai untuk permit ini setelah ditolak sebelumnya. Silakan lakukan verifikasi kembali.', 'completion_approved_picker' => 'Permohonan selesai permit telah disetujui oleh PIC Kerja.', 'completion_approved_picare' => 'Permohonan selesai permit telah disetujui oleh PIC Area.', 'completion_approved_k3' => 'Permit telah dinyatakan selesai oleh K3.', 'completion_rejected_picker' => 'Permohonan selesai permit belum disetujui oleh PIC Kerja. Silakan periksa catatan di bawah ini.', 'completion_rejected_picare' => 'Permohonan selesai permit belum disetujui oleh PIC Area. Silakan periksa catatan di bawah ini.', 'completion_rejected_k3' => 'Permohonan selesai permit belum disetujui oleh K3. Silakan periksa catatan di bawah ini.', 'completion_need_approval' => 'Terdapat permit dengan permohonan selesai yang memerlukan persetujuan Anda.', ]; $messageText = $messages[$notificationType] ?? 'Ada update terkait permit.'; $statusLabels = [ 'P' => 'Pending', 'E' => 'Draft', 'R' => 'Revisi', 'T' => 'Ditolak', 'B' => 'Berlaku', 'S' => 'Selesai', ]; $statusLabel = $statusLabels[$permitData->status ?? 'P'] ?? 'Pending'; $revisionTypes = ['revision_picker', 'revision_picare', 'revision_k3']; $isRevision = in_array($notificationType, $revisionTypes); $vendorUser = isset($permitData->user_create) ? \Illuminate\Support\Facades\DB::table('users')->where('id', $permitData->user_create)->first() : null; $vendorName = $vendorUser ? trim($vendorUser->firstname . ' ' . $vendorUser->lastname) : 'Vendor'; $vendorRoleKey = $vendorUser && isset($vendorUser->idroles) ? strtolower($vendorUser->idroles) : ''; $vendorType = 'Tidak diketahui'; if ($vendorRoleKey !== '' && strpos($vendorRoleKey, 'veneks') !== false) { $vendorType = 'External'; } elseif ($vendorRoleKey !== '' && strpos($vendorRoleKey, 'venint') !== false) { $vendorType = 'Internal'; } // Ambil data PIC dan K3 untuk menampilkan status approval $picKerjaUser = isset($permitData->pic_kerja) ? \Illuminate\Support\Facades\DB::table('users')->where('id', $permitData->pic_kerja)->first() : null; $picAreaUser = isset($permitData->pic_area) ? \Illuminate\Support\Facades\DB::table('users')->where('id', $permitData->pic_area)->first() : null; // Status approval labels with elegant badge design $approvalLabels = [ 'P' => '⏳ Pending', 'TR' => '✓ Approved', 'T' => '✗ Rejected', 'R' => '↻ Revision', ]; // Status untuk completion approval with elegant badge design $completionLabels = [ 'P' => '⏳ Pending', 'TR' => '✓ Approved', 'T' => '✗ Belum Disetujui', ]; // Tentukan apakah ini completion flow atau approval flow $completionTypes = ['completion_requested', 'completion_resubmitted', 'completion_approved_picker', 'completion_approved_picare', 'completion_approved_k3', 'completion_rejected_picker', 'completion_rejected_picare', 'completion_rejected_k3', 'completion_need_approval']; $isCompletionFlow = in_array($notificationType, $completionTypes); // Tipe yang perlu menampilkan catatan (revisi dan rejection) $noteTypes = ['revision_picker', 'revision_picare', 'revision_k3', 'rejected_picker', 'rejected_picare', 'rejected_k3', 'completion_rejected_picker', 'completion_rejected_picare', 'completion_rejected_k3']; $showNote = in_array($notificationType, $noteTypes); // ===================================================================== // PERBAIKAN: Tentukan badge berdasarkan kolom STATUS permit, bukan kolom approval individual // Kolom status permit: E=Draft, P=Pending, B=Berlaku, T=Ditolak, S=Selesai, R=Revisi, C=Completed // Kolom approval individual (approval_pic_kerja, dll) hanya: P=Pending, T=Tolak, TR=Terima // ===================================================================== $permitStatus = $permitData->status ?? 'P'; // Ambil nilai approval dari database $picKerjaApprovalRaw = $permitData->approval_pic_kerja ?? 'P'; $picAreaApprovalRaw = $permitData->approval_pic_area ?? 'P'; $k3ApprovalRaw = $permitData->approval_k3 ?? 'P'; // Tentukan badge yang benar berdasarkan STATUS PERMIT (bukan approval individual) // Jika status permit = 'R' (Revisi), maka approval 'T' harus ditampilkan sebagai Revision // Jika status permit = 'T' (Ditolak), maka approval 'T' ditampilkan sebagai Rejected // Jika status permit = 'P' (Pending) dan ada approval 'T', cek dari notificationType $picKerjaApproval = $picKerjaApprovalRaw; $picAreaApproval = $picAreaApprovalRaw; $k3Approval = $k3ApprovalRaw; // Override badge berdasarkan status permit if ($permitStatus === 'R') { // Status permit = Revisi, semua approval 'T' harus ditampilkan sebagai 'R' (Revision) if ($picKerjaApprovalRaw === 'T') $picKerjaApproval = 'R'; if ($picAreaApprovalRaw === 'T') $picAreaApproval = 'R'; if ($k3ApprovalRaw === 'T') $k3Approval = 'R'; } elseif ($permitStatus === 'T') { // Status permit = Ditolak, semua approval 'T' tetap 'T' (Rejected) // Tidak perlu override, biarkan seperti aslinya } elseif ($permitStatus === 'P') { // Status permit = Pending, cek dari notificationType untuk menentukan badge // Ini untuk kasus resubmitted dimana status sudah kembali ke Pending // tapi kita ingin badge tetap menunjukkan Revision jika sebelumnya adalah revision $revisionTypes = ['revision_picker', 'revision_picare', 'revision_k3', 'resubmitted']; if (in_array($notificationType, $revisionTypes)) { if ($picKerjaApprovalRaw === 'T') $picKerjaApproval = 'R'; if ($picAreaApprovalRaw === 'T') $picAreaApproval = 'R'; if ($k3ApprovalRaw === 'T') $k3Approval = 'R'; } } @endphp