85 lines
5.9 KiB
PHP
85 lines
5.9 KiB
PHP
<?php
|
|
|
|
use App\Http\Controllers\Admin\NotificationTemplateController;
|
|
use App\Http\Controllers\Admin\ReservationPolicyController;
|
|
use App\Http\Controllers\Admin\SnipeItController;
|
|
use App\Http\Controllers\Admin\UserController;
|
|
use App\Http\Controllers\ApprovalController;
|
|
use App\Http\Controllers\AssetController;
|
|
use App\Http\Controllers\AuditController;
|
|
use App\Http\Controllers\Auth\MicrosoftAuthController;
|
|
use App\Http\Controllers\DashboardController;
|
|
use App\Http\Controllers\GlobalCalendarController;
|
|
use App\Http\Controllers\HealthController;
|
|
use App\Http\Controllers\NotificationController;
|
|
use App\Http\Controllers\OperationController;
|
|
use App\Http\Controllers\ReportController;
|
|
use App\Http\Controllers\ReservationController;
|
|
use Illuminate\Support\Facades\Route;
|
|
|
|
Route::get('/', fn () => redirect()->route(auth()->check() ? 'dashboard' : 'login'))->name('home');
|
|
Route::get('health/live', [HealthController::class, 'live'])->name('health.live');
|
|
Route::get('health/ready', [HealthController::class, 'ready'])->name('health.ready');
|
|
|
|
Route::middleware('throttle:10,1')->group(function () {
|
|
Route::get('auth/microsoft/redirect', [MicrosoftAuthController::class, 'redirect'])
|
|
->middleware('guest')
|
|
->name('auth.microsoft.redirect');
|
|
Route::get('auth/microsoft/callback', [MicrosoftAuthController::class, 'callback'])->name('auth.microsoft.callback');
|
|
});
|
|
|
|
Route::middleware(['auth', 'verified'])->group(function () {
|
|
Route::get('dashboard', DashboardController::class)->name('dashboard');
|
|
Route::get('equipamentos', [AssetController::class, 'index'])->name('assets.index');
|
|
Route::get('notificacoes', [NotificationController::class, 'index'])->name('notifications.index');
|
|
Route::post('notificacoes/ler-todas', [NotificationController::class, 'readAll'])->name('notifications.read-all');
|
|
Route::post('notificacoes/{notification}/ler', [NotificationController::class, 'read'])->name('notifications.read');
|
|
Route::get('requisicoes', [ReservationController::class, 'index'])->name('reservations.index');
|
|
Route::get('requisicoes/calendario', [ReservationController::class, 'calendar'])->name('reservations.calendar');
|
|
Route::get('requisicoes/nova', [ReservationController::class, 'create'])->name('reservations.create');
|
|
Route::post('requisicoes', [ReservationController::class, 'store'])->name('reservations.store');
|
|
Route::post('requisicoes/{reservation:uuid}/cancelar', [ReservationController::class, 'cancel'])->name('reservations.cancel');
|
|
Route::post('requisicoes/{reservation:uuid}/responder', [ReservationController::class, 'respondToInformation'])->name('reservations.respond');
|
|
|
|
Route::middleware('can:approve-reservations')->prefix('aprovacoes')->name('approvals.')->group(function () {
|
|
Route::get('/', [ApprovalController::class, 'index'])->name('index');
|
|
Route::post('{reservation:uuid}/aprovar', [ApprovalController::class, 'approve'])->name('approve');
|
|
Route::post('{reservation:uuid}/rejeitar', [ApprovalController::class, 'reject'])->name('reject');
|
|
Route::post('{reservation:uuid}/pedir-esclarecimentos', [ApprovalController::class, 'requestInformation'])->name('request-information');
|
|
Route::post('{reservation:uuid}/itens/{item}/substituir', [ApprovalController::class, 'substitute'])->name('substitute');
|
|
});
|
|
|
|
Route::middleware('can:operate-inventory')->prefix('operacoes')->name('operations.')->group(function () {
|
|
Route::get('/', [OperationController::class, 'index'])->name('index');
|
|
Route::post('{reservation:uuid}/preparar', [OperationController::class, 'prepare'])->name('prepare');
|
|
Route::post('{reservation:uuid}/entregar', [OperationController::class, 'deliver'])->name('deliver');
|
|
Route::post('{reservation:uuid}/devolver', [OperationController::class, 'returnEquipment'])->name('return');
|
|
Route::post('{reservation:uuid}/concluir', [OperationController::class, 'complete'])->name('complete');
|
|
Route::post('{reservation:uuid}/falta', [OperationController::class, 'noShow'])->name('no-show');
|
|
Route::post('{reservation:uuid}/atraso', [OperationController::class, 'overdue'])->name('overdue');
|
|
Route::post('{reservation:uuid}/itens/{item}/incidente', [OperationController::class, 'incident'])->name('incident');
|
|
});
|
|
|
|
Route::middleware('can:view-global-calendar')->get('calendario-global', GlobalCalendarController::class)->name('calendar.global');
|
|
Route::middleware('can:view-reports')->prefix('relatorios')->name('reports.')->group(function () {
|
|
Route::get('/', [ReportController::class, 'index'])->name('index');
|
|
Route::get('exportar', [ReportController::class, 'export'])->name('export');
|
|
});
|
|
Route::middleware('can:view-audit')->get('auditoria', [AuditController::class, 'index'])->name('audit.index');
|
|
|
|
Route::middleware('can:administer')->prefix('administracao')->name('admin.')->group(function () {
|
|
Route::get('utilizadores', [UserController::class, 'index'])->name('users.index');
|
|
Route::post('utilizadores', [UserController::class, 'store'])->name('users.store');
|
|
Route::put('utilizadores/{user}', [UserController::class, 'update'])->name('users.update');
|
|
Route::get('regras', [ReservationPolicyController::class, 'edit'])->name('policy.edit');
|
|
Route::put('regras', [ReservationPolicyController::class, 'update'])->name('policy.update');
|
|
Route::get('notificacoes/modelos', [NotificationTemplateController::class, 'edit'])->name('notification-templates.edit');
|
|
Route::put('notificacoes/modelos', [NotificationTemplateController::class, 'update'])->name('notification-templates.update');
|
|
Route::get('snipe-it', [SnipeItController::class, 'index'])->name('snipe-it.index');
|
|
Route::post('snipe-it/testar', [SnipeItController::class, 'testConnection'])->name('snipe-it.test');
|
|
Route::post('snipe-it/sincronizar', [SnipeItController::class, 'sync'])->name('snipe-it.sync');
|
|
});
|
|
});
|
|
|
|
require __DIR__.'/settings.php';
|