PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
]);
} catch (PDOException $e) {
die("Database Connection Failed: " . $e->getMessage());
}
// ฟังก์ชันคำนวณ % Progress ตามขั้นตอน Workflow
function getProgressByStatus($status)
{
return match ($status) {
'รอการยืนยันแผน' => 15,
'อยู่ระหว่างดำเนินการ' => 50,
'ใบส่งซื้อ/ทำสัญญา' => 85,
'ดำเนินการเสร็จสิ้น' => 100,
default => 0
};
}
// ฟังก์ชันประเมินสถานะ Timeline สี (เขียว, เหลือง, แดง)
function getTimelineBadge($dueDate, $status)
{
if ($status === 'ดำเนินการเสร็จสิ้น') {
return ' เสร็จสิ้น';
}
if (empty($dueDate)) {
return 'ยังไม่ระบุวัน';
}
$today = new DateTime();
$due = new DateTime($dueDate);
$diff = $today->diff($due)->days * ($today > $due ? -1 : 1);
if ($diff < 0) {
return ' ล่าช้า (' . abs($diff) . ' วัน)';
} elseif ($diff <= 15) {
return ' ใกล้กำหนด (เหลือ ' . $diff . ' วัน)';
} else {
return ' ตรงเวลา (เหลือ ' . $diff . ' วัน)';
}
}