getMessage() . " in " . $exception->getFile() . " on line " . $exception->getLine()); $isAjax = !empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest'; if ($isAjax || (isset($_SERVER['HTTP_ACCEPT']) && strpos($_SERVER['HTTP_ACCEPT'], 'application/json') !== false)) { http_response_code(500); header('Content-Type: application/json'); echo json_encode([ 'status' => 'error', 'message' => 'เกิดข้อผิดพลาดในระบบ โปรดติดต่อผู้ดูแลระบบ' ]); exit; } http_response_code(500); $error_message = 'เกิดข้อผิดพลาด: ' . $exception->getMessage() . ' ในไฟล์ ' . $exception->getFile() . ' บรรทัดที่ ' . $exception->getLine(); // Check if error view exists $errorView = __DIR__ . '/../views/error.php'; if (file_exists($errorView)) { require $errorView; } else { echo "
{$error_message}
"; } exit; }); // Load Router use App\Core\Router; $router = new Router(); // Routes definition $router->add('GET', '/', 'DashboardController', 'index'); $router->add('GET', '/login', 'AuthController', 'login'); $router->add('POST', '/login', 'AuthController', 'authenticate'); $router->add('GET', '/logout', 'AuthController', 'logout'); $router->add('GET', '/trip/create', 'TripController', 'create'); $router->add('POST', '/trip/create', 'TripController', 'store'); $router->add('GET', '/trip/search-docs', 'TripController', 'searchDocs'); $router->add('GET', '/trip/edit', 'TripController', 'edit'); $router->add('POST', '/trip/edit', 'TripController', 'update'); $router->add('POST', '/trip/delete', 'TripController', 'delete'); $router->add('POST', '/trip/request-cancel', 'TripController', 'requestCancel'); $router->add('POST', '/trip/request-revise', 'TripController', 'requestRevise'); $router->add('GET', '/trip/approvals', 'ApprovalController', 'index'); $router->add('POST', '/trip/approvals/process', 'ApprovalController', 'process'); $router->add('GET', '/report', 'ReportController', 'index'); $router->add('GET', '/report/export', 'ReportController', 'export'); $router->add('GET', '/settings', 'SettingsController', 'index'); $router->add('GET', '/settings/google-sheets', 'SettingsController', 'googleSheets'); $router->add('POST', '/settings/google-sheets/save', 'SettingsController', 'googleSheetsSave'); $router->add('GET', '/settings/google-sheets/sync', 'SettingsController', 'googleSheetsSync'); $router->add('POST', '/settings/google-sheets/test', 'SettingsController', 'googleSheetsTest'); $router->add('GET', '/settings/hierarchy', 'SettingsController', 'approvalHierarchy'); $router->add('GET', '/settings/search-user', 'SettingsController', 'searchUser'); $router->add('POST', '/settings/hierarchy/add', 'SettingsController', 'addHierarchy'); $router->add('POST', '/settings/hierarchy/remove', 'SettingsController', 'removeHierarchy'); $router->add('GET', '/settings/line-notify', 'SettingsController', 'lineNotify'); $router->add('POST', '/settings/line-notify/save', 'SettingsController', 'saveLineNotify'); $router->add('POST', '/settings/line-notify/test', 'SettingsController', 'lineNotifyTest'); $router->add('GET', '/settings/telegram-notify', 'SettingsController', 'telegramNotify'); $router->add('POST', '/settings/telegram-notify/save', 'SettingsController', 'saveTelegramNotify'); $router->add('POST', '/settings/telegram-notify/test', 'SettingsController', 'telegramNotifyTest'); $router->add('GET', '/settings/pdf-designer', 'SettingsController', 'pdfDesigner'); $router->add('GET', '/settings/pdf-designer/preview', 'SettingsController', 'previewPdf'); $router->add('POST', '/settings/pdf-designer/upload', 'SettingsController', 'uploadPdfTemplate'); $router->add('POST', '/settings/pdf-designer/save', 'SettingsController', 'savePdfLayout'); $router->add('POST', '/settings/pdf-designer/delete', 'SettingsController', 'deletePdfTemplate'); $router->add('GET', '/trip/print', 'TripController', 'printPdf'); // Roles $router->add('GET', '/roles', 'RoleController', 'index'); $router->add('GET', '/roles/search', 'RoleController', 'search'); $router->add('POST', '/roles/assign', 'RoleController', 'assign'); $router->add('POST', '/roles/remove', 'RoleController', 'remove'); $router->add('GET', '/reports', 'ReportController', 'index'); $router->add('GET', '/reports/export', 'ReportController', 'export'); $router->add('GET', '/audit', 'AuditController', 'index'); $router->add('GET', '/manual', 'ManualController', 'index'); $router->dispatch($_SERVER['REQUEST_URI'], $_SERVER['REQUEST_METHOD']);