feat: complete administration and reporting

This commit is contained in:
2026-08-04 17:40:52 +01:00
parent d829f34580
commit 7a4ac48aaf
42 changed files with 2595 additions and 76 deletions

View File

@@ -1,11 +1,17 @@
<?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\DashboardController;
use App\Http\Controllers\GlobalCalendarController;
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;
@@ -43,7 +49,21 @@ Route::middleware(['auth', 'verified'])->group(function () {
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');