{{ now()->format('Y-m-d H:i:s') }} - Ref#{{ Str::random(16) }} ͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌  ‌‌‌‌‌‌‌‌‌‌‌‌‌‌
@php // Hitung summary $totalDocs = count($data); $expiredCount = 0; $soonExpiredCount = 0; $extendCount = 0; // Sorting: Expired -> Extend -> Segera Expired $sortedData = collect($data)->map(function($item) { // Jika dokumen alat dijadwalkan untuk pengurusan, tanggal reminder email memakai tgl_urus. $tglUrus = $item->tgl_urus ?? null; $pilihTgl = (string) ($item->pilih_tgl ?? '0'); $useTglUrus = !empty($tglUrus) && in_array($pilihTgl, ['1', '2'], true); $baseDate = $useTglUrus ? $tglUrus : $item->tanggal_expired; $expDate = \Carbon\Carbon::parse($baseDate); $hasExtend = !empty($item->extend) && $item->extend > 0; if ($hasExtend && !$useTglUrus) { $expDate = $expDate->copy()->addWeeks($item->extend); } $item->calculated_expired_date = $expDate; $item->is_expired = $expDate->copy()->endOfDay()->isPast(); $item->has_extend = $hasExtend; return $item; })->sort(function($a, $b) { // Priority: 1. Expired tanpa extend, 2. Expired dengan extend, 3. Segera dengan extend, 4. Segera tanpa extend $aScore = 0; $bScore = 0; if ($a->is_expired && !$a->has_extend) $aScore = 1; elseif ($a->is_expired && $a->has_extend) $aScore = 2; elseif (!$a->is_expired && $a->has_extend) $aScore = 3; else $aScore = 4; if ($b->is_expired && !$b->has_extend) $bScore = 1; elseif ($b->is_expired && $b->has_extend) $bScore = 2; elseif (!$b->is_expired && $b->has_extend) $bScore = 3; else $bScore = 4; if ($aScore !== $bScore) return $aScore - $bScore; // Jika sama, urutkan berdasarkan tanggal reminder (yang lebih dulu di atas) return $a->calculated_expired_date->timestamp - $b->calculated_expired_date->timestamp; })->values(); foreach ($sortedData as $item) { if ($item->is_expired) { $expiredCount++; } else { $soonExpiredCount++; } if ($item->has_extend) { $extendCount++; } } // Replace data with sorted data $data = $sortedData; @endphp
MSG-{{ now()->format('YmdHisu') }}-{{ Str::random(20) }} ​​​​​​​​​​ ͏͏͏͏͏͏͏͏͏͏͏͏ ‌ ‌ ‌ ‌ ‌ ‌  ‌‌‌‌‌‌‌‌‌‌