Files
Inventory/config/routes.php

124 lines
6.0 KiB
PHP

<?php
/**
* Application Routes
*/
use App\Core\Router;
use App\Controllers\AuthController;
use App\Controllers\DashboardController;
use App\Controllers\AssetController;
use App\Controllers\InventoryController;
use App\Controllers\ReportController;
use App\Controllers\UserController;
use App\Controllers\CategoryController;
use App\Controllers\LocationController;
use App\Controllers\DepartmentController;
use App\Controllers\FileController;
use App\Controllers\ExportController;
use App\Controllers\ImportController;
$router = Router::getInstance();
// Authentication routes
$router->get('/login', [AuthController::class, 'showLogin']);
$router->post('/login', [AuthController::class, 'login']);
$router->post('/logout', [AuthController::class, 'logout']);
$router->get('/password/forgot', [AuthController::class, 'showForgotPassword']);
$router->post('/password/forgot', [AuthController::class, 'forgotPassword']);
$router->get('/password/reset', [AuthController::class, 'showResetPassword']);
$router->post('/password/reset', [AuthController::class, 'resetPassword']);
// Protected routes (require authentication)
$router->group(['middleware' => 'auth'], function($router) {
// Dashboard
$router->get('/', [DashboardController::class, 'index']);
$router->get('/dashboard', [DashboardController::class, 'index']);
// Assets
$router->get('/assets', [AssetController::class, 'index']);
$router->get('/assets/create', [AssetController::class, 'create']);
$router->post('/assets', [AssetController::class, 'store']);
$router->get('/assets/{id}', [AssetController::class, 'show']);
$router->get('/assets/{id}/edit', [AssetController::class, 'edit']);
$router->post('/assets/{id}', [AssetController::class, 'update']);
$router->post('/assets/{id}/delete', [AssetController::class, 'delete']);
$router->post('/assets/{id}/assign', [AssetController::class, 'assign']);
$router->post('/assets/{id}/checkout', [AssetController::class, 'checkout']);
$router->post('/assets/{id}/checkin', [AssetController::class, 'checkin']);
// Asset files
$router->post('/assets/{id}/files', [FileController::class, 'upload']);
$router->get('/files/{id}/download', [FileController::class, 'download']);
$router->post('/files/{id}/delete', [FileController::class, 'delete']);
// Inventory
$router->get('/inventories', [InventoryController::class, 'index']);
$router->get('/inventories/create', [InventoryController::class, 'create']);
$router->post('/inventories', [InventoryController::class, 'store']);
$router->get('/inventories/{id}', [InventoryController::class, 'show']);
$router->post('/inventories/{id}/close', [InventoryController::class, 'close']);
$router->post('/inventories/{id}/scan', [InventoryController::class, 'scan']);
$router->get('/inventories/{id}/report', [InventoryController::class, 'report']);
// Reports
$router->get('/reports', [ReportController::class, 'index']);
$router->get('/reports/assets', [ReportController::class, 'assets']);
$router->get('/reports/warranty', [ReportController::class, 'warranty']);
$router->get('/reports/retired', [ReportController::class, 'retired']);
$router->get('/reports/location', [ReportController::class, 'location']);
$router->get('/reports/category', [ReportController::class, 'category']);
// Exports
$router->get('/exports/csv', [ExportController::class, 'csv']);
$router->get('/exports/xlsx', [ExportController::class, 'xlsx']);
$router->get('/exports/labels', [ExportController::class, 'labels']);
// Imports
$router->get('/imports/csv', [ImportController::class, 'show']);
$router->post('/imports/csv', [ImportController::class, 'import']);
// Master data
$router->get('/categories', [CategoryController::class, 'index']);
$router->get('/categories/create', [CategoryController::class, 'create']);
$router->post('/categories', [CategoryController::class, 'store']);
$router->get('/categories/{id}/edit', [CategoryController::class, 'edit']);
$router->post('/categories/{id}', [CategoryController::class, 'update']);
$router->post('/categories/{id}/delete', [CategoryController::class, 'delete']);
$router->get('/locations', [LocationController::class, 'index']);
$router->get('/locations/create', [LocationController::class, 'create']);
$router->post('/locations', [LocationController::class, 'store']);
$router->get('/locations/{id}/edit', [LocationController::class, 'edit']);
$router->post('/locations/{id}', [LocationController::class, 'update']);
$router->post('/locations/{id}/delete', [LocationController::class, 'delete']);
$router->get('/departments', [DepartmentController::class, 'index']);
$router->get('/departments/create', [DepartmentController::class, 'create']);
$router->post('/departments', [DepartmentController::class, 'store']);
$router->get('/departments/{id}/edit', [DepartmentController::class, 'edit']);
$router->post('/departments/{id}', [DepartmentController::class, 'update']);
$router->post('/departments/{id}/delete', [DepartmentController::class, 'delete']);
// Admin routes
$router->group(['middleware' => 'admin'], function($router) {
$router->get('/users', [UserController::class, 'index']);
$router->get('/users/create', [UserController::class, 'create']);
$router->post('/users', [UserController::class, 'store']);
$router->get('/users/{id}/edit', [UserController::class, 'edit']);
$router->post('/users/{id}', [UserController::class, 'update']);
$router->post('/users/{id}/delete', [UserController::class, 'delete']);
$router->post('/users/{id}/toggle', [UserController::class, 'toggleStatus']);
});
});
// Error routes
$router->get('/404', function() {
http_response_code(404);
require APP_PATH . '/Views/errors/404.php';
});
$router->get('/500', function() {
http_response_code(500);
require APP_PATH . '/Views/errors/500.php';
});