Files
2026-09-16 23:20:08 +07:00

61 lines
2.3 KiB
PHP

<?php
if (session_status() === PHP_SESSION_NONE) {
session_start();
}
if (isset($_GET['year'])) {
$_SESSION['budget_year'] = (int)$_GET['year'];
}
$active_year = $_SESSION['budget_year'] ?? 2569;
// config.php
$host = 'localhost';
$db = 'asset_tracker';
$user = 'root';
$pass = '@Samui@10742';
try {
$pdo = new PDO("mysql:host=$host;dbname=$db;charset=utf8mb4", $user, $pass, [
PDO::ATTR_ERRMODE => 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 '<span class="badge bg-success"><i class="bi bi-check-circle"></i> เสร็จสิ้น</span>';
}
if (empty($dueDate)) {
return '<span class="badge bg-secondary">ยังไม่ระบุวัน</span>';
}
$today = new DateTime();
$due = new DateTime($dueDate);
$diff = $today->diff($due)->days * ($today > $due ? -1 : 1);
if ($diff < 0) {
return '<span class="badge bg-danger"><i class="bi bi-exclamation-triangle"></i> ล่าช้า (' . abs($diff) . ' วัน)</span>';
} elseif ($diff <= 15) {
return '<span class="badge bg-warning text-dark"><i class="bi bi-clock-history"></i> ใกล้กำหนด (เหลือ ' . $diff . ' วัน)</span>';
} else {
return '<span class="badge bg-success"><i class="bi bi-calendar-check"></i> ตรงเวลา (เหลือ ' . $diff . ' วัน)</span>';
}
}