61 lines
2.3 KiB
PHP
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>';
|
|
}
|
|
}
|