233 lines
9.1 KiB
PHP
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();
|
|
?>
|