Align target deadlines in early warning and reports

This commit is contained in:
Dwi Swandhana
2026-04-29 09:55:00 +07:00
parent bb680d41d3
commit d8c6ab7b55
10 changed files with 237 additions and 6909 deletions
@@ -36,6 +36,16 @@ use Carbon\Carbon;
class FrontpageController extends Controller
{
protected function resolveTargetDays($modaliti2)
{
return (!empty($modaliti2) && is_numeric($modaliti2) && intval($modaliti2) > 0)
? intval($modaliti2)
: 1;
}
protected function getTargetDeadline(Carbon $startAt, $targetDays)
{
return $startAt->copy()->addDays(intval($targetDays))->endOfDay();
}
protected function buildMikroViewData($master, array $extra = [])
{
$data = [
@@ -236,16 +246,15 @@ class FrontpageController extends Controller
$earlyWarnings = [];
foreach ($rawEarlyWarnings as $row) {
$targetDays = 1;
if (!empty($row->modaliti2) && is_numeric($row->modaliti2) && intval($row->modaliti2) > 0) {
$targetDays = intval($row->modaliti2);
}
$targetDays = $this->resolveTargetDays($row->modaliti2);
$waktuDaftar = Carbon::parse($row->daftar);
$targetSelesai = $waktuDaftar->copy()->addDays($targetDays);
$targetSelesai = $this->getTargetDeadline($waktuDaftar, $targetDays);
$sisaMenit = $now->diffInMinutes($targetSelesai, false);
$batasWarningMenit = $targetDays > 1 ? 1440 : 60;
$isMelewatiTarget = $now->gt($targetSelesai);
if ($sisaMenit <= 60) {
if ($isMelewatiTarget || $sisaMenit <= $batasWarningMenit) {
$earlyWarnings[] = [
'id' => $row->id,
'mikro_master' => $this->resolveMikroMasterFromPoliId($row->poli_id),
@@ -260,7 +269,7 @@ class FrontpageController extends Controller
'target_hari' => $targetDays,
'target_selesai' => $targetSelesai->format('Y-m-d H:i:s'),
'sisa_menit' => $sisaMenit,
'warning_label' => $sisaMenit <= 0 ? 'Melewati Target' : 'Kurang dari 1 Jam'
'warning_label' => $isMelewatiTarget ? 'Melewati Target' : ($targetDays > 1 ? 'Kurang dari 1 Hari' : 'Kurang dari 1 Jam')
];
}
}