77 lines
3.3 KiB
PHP
77 lines
3.3 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
// Handle PHP built-in web server static files directly
|
|
if (php_sapi_name() === 'cli-server') {
|
|
$path = parse_url($_SERVER['REQUEST_URI'] ?? '', PHP_URL_PATH);
|
|
$file = __DIR__ . $path;
|
|
if ($path !== '/' && file_exists($file) && !is_dir($file)) {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
// Error reporting settings
|
|
error_reporting(E_ALL);
|
|
ini_set('display_errors', '1');
|
|
|
|
// Register Autoloader & Global Helpers
|
|
require_once __DIR__ . '/../app/Core/Autoloader.php';
|
|
require_once __DIR__ . '/../app/Core/Helpers.php';
|
|
\App\Core\Autoloader::register();
|
|
\App\Core\Autoloader::addNamespace('App', __DIR__ . '/../app');
|
|
|
|
// Load environment configuration
|
|
\App\Core\Config::load(__DIR__ . '/../.env');
|
|
|
|
// Initialize Database Schema & Seed Data
|
|
\App\Core\Database\Database::initSchema();
|
|
|
|
// Initialize Request, Response, and Router
|
|
$request = new \App\Core\Http\Request();
|
|
$response = new \App\Core\Http\Response();
|
|
$router = new \App\Core\Routing\Router();
|
|
|
|
// Define Routes
|
|
// Authentication
|
|
$router->get('/login', [\App\Controllers\AuthController::class, 'loginForm']);
|
|
$router->post('/login', [\App\Controllers\AuthController::class, 'login']);
|
|
$router->post('/quick-login', [\App\Controllers\AuthController::class, 'quickLogin']);
|
|
$router->get('/register', [\App\Controllers\AuthController::class, 'registerForm']);
|
|
$router->post('/register', [\App\Controllers\AuthController::class, 'register']);
|
|
$router->post('/logout', [\App\Controllers\AuthController::class, 'logout']);
|
|
|
|
// Daily Food & Canteen Sessions
|
|
$router->get('/', [\App\Controllers\SessionController::class, 'index']);
|
|
$router->get('/sessions/create', [\App\Controllers\SessionController::class, 'createForm']);
|
|
$router->post('/sessions', [\App\Controllers\SessionController::class, 'store']);
|
|
$router->get('/sessions/history', [\App\Controllers\SessionController::class, 'history']);
|
|
$router->get('/sessions/{id}', [\App\Controllers\SessionController::class, 'show']);
|
|
$router->post('/sessions/{id}/status', [\App\Controllers\SessionController::class, 'updateStatus']);
|
|
$router->post('/sessions/{id}/add-menu', [\App\Controllers\SessionController::class, 'addMenu']);
|
|
$router->post('/sessions/{id}/delete-menu', [\App\Controllers\SessionController::class, 'deleteMenu']);
|
|
$router->post('/sessions/{id}/settle-prices', [\App\Controllers\SessionController::class, 'settlePrices']);
|
|
|
|
// Employee Self-Orders
|
|
$router->post('/employee-orders', [\App\Controllers\EmployeeOrderController::class, 'store']);
|
|
$router->post('/employee-orders/{id}/toggle-paid', [\App\Controllers\EmployeeOrderController::class, 'togglePaid']);
|
|
$router->post('/employee-orders/{id}/delete', [\App\Controllers\EmployeeOrderController::class, 'delete']);
|
|
|
|
// Coworkers & Balances
|
|
$router->get('/employees', [\App\Controllers\EmployeeController::class, 'index']);
|
|
|
|
// 404 Fallback
|
|
$router->setNotFound(function ($req, $res) {
|
|
return $res->setStatusCode(404)->setContent(
|
|
'<div style="text-align:center; padding: 4rem; font-family: sans-serif;">
|
|
<h1>404 - Page Not Found</h1>
|
|
<p>The page or food session you requested does not exist.</p>
|
|
<p><a href="/" style="color: #4f46e5; text-decoration: none; font-weight: 600;">← Back to Food Sessions</a></p>
|
|
</div>'
|
|
);
|
|
});
|
|
|
|
// Dispatch and send response
|
|
$result = $router->dispatch($request, $response);
|
|
$result->send();
|