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

233 lines
9.1 KiB
PHP

<?php
session_start();
/**
* Entry Point for Hospital Payroll Management System
*/
// Define application root
define('APP_ROOT', dirname(__DIR__));
// Require basic configuration
require_once APP_ROOT . '/config/app.php';
require_once APP_ROOT . '/config/database.php';
// Very basic autoloader for our MVC structure
spl_autoload_register(function ($className) {
$path = APP_ROOT . '/' . str_replace('\\', '/', $className) . '.php';
if (file_exists($path)) {
require_once $path;
}
});
// Simple Router
$requestUri = $_SERVER['REQUEST_URI'];
$requestMethod = $_SERVER['REQUEST_METHOD'];
// Remove the base directory from the request URI to get the relative path
$baseDir = parse_url(BASE_URL, PHP_URL_PATH) ?? '';
if ($baseDir !== '' && strpos($requestUri, $baseDir) === 0) {
$uri = substr($requestUri, strlen($baseDir));
} else {
$uri = $requestUri;
}
$uri = strtok($uri, '?'); // Remove query string
$uri = trim($uri, '/');
$controllerName = 'app\\Controllers\\AuthController';
$methodName = 'index';
if ($uri === '' || $uri === 'login') {
if ($requestMethod === 'POST') {
$controllerName = 'app\\Controllers\\AuthController';
$methodName = 'login';
} else {
$controllerName = 'app\\Controllers\\AuthController';
$methodName = 'index';
}
} elseif ($uri === 'logout') {
$controllerName = 'app\\Controllers\\AuthController';
$methodName = 'logout';
} elseif ($uri === 'dashboard') {
$controllerName = 'app\\Controllers\\DashboardController';
$methodName = 'index';
} elseif ($uri === 'payroll') {
$controllerName = 'app\\Controllers\\PayrollController';
$methodName = 'index';
} elseif ($uri === 'payroll/store') {
$controllerName = 'app\\Controllers\\PayrollController';
$methodName = 'store';
} elseif ($uri === 'payroll/clear') {
$controllerName = 'app\\Controllers\\PayrollController';
$methodName = 'clearData';
} elseif (preg_match('#^payroll/details(?:/(\d+))?$#', $uri, $matches)) {
$_GET['id'] = $matches[1] ?? ($_GET['id'] ?? null);
$controllerName = 'app\\Controllers\\PayrollController';
$methodName = 'details';
} elseif ($uri === 'payroll/copy-previous') {
$controllerName = 'app\\Controllers\\PayrollController';
$methodName = 'copyPreviousMonth';
} elseif ($uri === 'payroll/employee/add') {
$controllerName = 'app\\Controllers\\PayrollController';
$methodName = 'addEmployee';
} elseif ($uri === 'payroll/employee/delete') {
$controllerName = 'app\\Controllers\\PayrollController';
$methodName = 'deleteEmployee';
} elseif (preg_match('#^payroll/employee/edit(?:/(\d+))?$#', $uri, $matches)) {
$_GET['id'] = $matches[1] ?? ($_GET['id'] ?? null);
$controllerName = 'app\\Controllers\\PayrollController';
$methodName = 'editEmployee';
} elseif ($uri === 'payroll/saveEmployee') {
$controllerName = 'app\\Controllers\\PayrollController';
$methodName = 'saveEmployee';
} elseif ($uri === 'payroll/updateStatus' && $_SERVER['REQUEST_METHOD'] === 'POST') {
$controllerName = 'app\\Controllers\\PayrollController';
$methodName = 'updateStatus';
} elseif (preg_match('#^payroll/deleteEmployee/(\d+)$#', $uri, $matches)) {
$_GET['id'] = $matches[1] ?? ($_GET['id'] ?? null);
$controllerName = 'app\\Controllers\\PayrollController';
$methodName = 'editEmployee';
} elseif ($uri === 'payroll/employee/update') {
$controllerName = 'app\\Controllers\\PayrollController';
$methodName = 'updateEmployee';
} elseif (preg_match('#^employee/image(?:/([\w\d_-]+))?$#', $uri, $matches)) {
$_GET['national_id'] = $matches[1] ?? null;
$controllerName = 'app\\Controllers\\HrController';
$methodName = 'image';
} elseif ($uri === 'settings/income') {
$controllerName = 'app\\Controllers\\SettingController';
if ($requestMethod === 'POST') {
$methodName = 'storeIncome';
} else {
$methodName = 'income';
}
} elseif ($uri === 'settings/income/update') {
$controllerName = 'app\\Controllers\\SettingController';
$methodName = 'updateIncome';
} elseif ($uri === 'settings/deduction') {
$controllerName = 'app\\Controllers\\SettingController';
if ($requestMethod === 'POST') {
$methodName = 'storeDeduction';
} else {
$methodName = 'deduction';
}
} elseif ($uri === 'settings/deduction/update') {
$controllerName = 'app\\Controllers\\SettingController';
$methodName = 'updateDeduction';
} elseif ($uri === 'settings/officer-types') {
$controllerName = 'app\\Controllers\\SettingController';
if ($requestMethod === 'POST') {
$methodName = 'storeOfficerType';
} else {
$methodName = 'officerTypes';
}
} elseif ($uri === 'settings/officer-types/update') {
$controllerName = 'app\\Controllers\\SettingController';
$methodName = 'updateOfficerType';
} elseif ($uri === 'settings/officer-types/toggle') {
$controllerName = 'app\\Controllers\\SettingController';
$methodName = 'toggleOfficerTypeStatus';
} elseif ($uri === 'settings/officer-types/delete') {
$controllerName = 'app\\Controllers\\SettingController';
$methodName = 'deleteOfficerType';
} elseif ($uri === 'settings/system/search-officer') {
$controllerName = 'app\\Controllers\\SettingController';
$methodName = 'searchOfficer';
} elseif ($uri === 'settings/system/save') {
$controllerName = 'app\\Controllers\\SettingController';
$methodName = 'saveSystemSettings';
} elseif ($uri === 'settings/system/upload-tax-signature') {
$controllerName = 'app\\Controllers\\SettingController';
$methodName = 'uploadTaxSignature';
} elseif ($uri === 'settings/system') {
$controllerName = 'app\\Controllers\\SettingController';
if ($requestMethod === 'POST') {
$methodName = 'uploadSignature';
} else {
$methodName = 'system';
}
} elseif ($uri === 'users') {
$controllerName = 'app\\Controllers\\UserController';
if ($requestMethod === 'POST') {
$methodName = 'store';
} else {
$methodName = 'index';
}
} elseif ($uri === 'users/update') {
$controllerName = 'app\\Controllers\\UserController';
$methodName = 'update';
} elseif ($uri === 'users/toggle_status') {
$controllerName = 'app\\Controllers\\UserController';
$methodName = 'toggle_status';
} elseif ($uri === 'users/logs') {
$controllerName = 'app\\Controllers\\UserController';
$methodName = 'logs';
} elseif ($uri === 'profile') {
$controllerName = 'app\\Controllers\\ProfileController';
$methodName = 'index';
} elseif ($uri === 'profile/update-password') {
$controllerName = 'app\\Controllers\\ProfileController';
$methodName = 'updatePassword';
} elseif ($uri === 'manual') {
$controllerName = 'app\\Controllers\\ManualController';
$methodName = 'index';
} elseif ($uri === 'reports') {
$controllerName = 'app\\Controllers\\ReportController';
$methodName = 'index';
} elseif (preg_match('#^reports/slip/([\w\d_-]+)/(\d{2})/(\d{4})$#', $uri, $matches)) {
$_GET['national_id'] = $matches[1];
$_GET['month'] = $matches[2];
$_GET['year'] = $matches[3];
$controllerName = 'app\\Controllers\\ReportController';
$methodName = 'printSlip';
} elseif ($uri === 'reports/tax-bulk') {
$controllerName = 'app\\Controllers\\ReportController';
$methodName = 'printTaxBulk';
} elseif ($uri === 'reports/salary') {
$controllerName = 'app\\Controllers\\ReportController';
$methodName = 'salaryReport';
} elseif ($uri === 'reports/salary/export') {
$controllerName = 'app\\Controllers\\ReportController';
$methodName = 'exportExcel';
} elseif (preg_match('#^reports/tax/([\w\d_-]+)/(\d{4})$#', $uri, $matches)) {
$_GET['national_id'] = $matches[1];
$_GET['year'] = $matches[2];
$controllerName = 'app\\Controllers\\ReportController';
$methodName = 'printTax';
} elseif ($uri === 'import') {
$controllerName = 'app\\Controllers\\ImportController';
$methodName = 'index';
} elseif ($uri === 'import/upload') {
$controllerName = 'app\\Controllers\\ImportController';
$methodName = 'upload';
} elseif ($uri === 'kiosk') {
$controllerName = 'app\\Controllers\\KioskController';
$methodName = 'index';
} elseif ($uri === 'kiosk/search') {
$controllerName = 'app\\Controllers\\KioskController';
$methodName = 'search';
} elseif (preg_match('#^kiosk/print/slip/([\w\d_-]+)/(\d{2})/(\d{4})$#', $uri, $matches)) {
$_GET['national_id'] = $matches[1];
$_GET['month'] = $matches[2];
$_GET['year'] = $matches[3];
$controllerName = 'app\\Controllers\\KioskController';
$methodName = 'printSlip';
} elseif ($uri === 'kiosk/print/slipBulk') {
$controllerName = 'app\\Controllers\\KioskController';
$methodName = 'printSlipBulk';
} elseif (preg_match('#^kiosk/print/tax/([\w\d_-]+)/(\d{4})$#', $uri, $matches)) {
$_GET['national_id'] = $matches[1];
$_GET['year'] = $matches[2];
$controllerName = 'app\\Controllers\\KioskController';
$methodName = 'printTax';
} else {
// Basic 404
http_response_code(404);
echo "<h1>404 Not Found</h1>";
echo "<p>The page you are looking for does not exist.</p>";
exit;
}
$controller = new $controllerName();
$controller->$methodName();
?>