prefix('app/ticketing')->name('ticketing.')->group(function () { // Submitter portal (must come before /{ticket} to avoid conflict) Route::get('/my-tickets', [TicketController::class, 'myTickets'])->name('my-tickets'); // Settings Route::get('/settings', [TicketingSettingsController::class, 'index'])->name('settings'); Route::post('/settings/groups', [TicketingSettingsController::class, 'storeGroup'])->name('settings.groups.store'); Route::put('/settings/groups/{group}', [TicketingSettingsController::class, 'updateGroup'])->name('settings.groups.update'); Route::post('/settings/agents', [TicketingSettingsController::class, 'storeAgent'])->name('settings.agents.store'); Route::delete('/settings/agents/{access}', [TicketingSettingsController::class, 'destroyAgent'])->name('settings.agents.destroy'); Route::post('/settings/priorities', [TicketingSettingsController::class, 'storePriority'])->name('settings.priorities.store'); Route::put('/settings/priorities/{priority}', [TicketingSettingsController::class, 'updatePriority'])->name('settings.priorities.update'); Route::delete('/settings/priorities/{priority}', [TicketingSettingsController::class, 'destroyPriority'])->name('settings.priorities.destroy'); Route::post('/settings/projects', [TicketingSettingsController::class, 'storeProject'])->name('settings.projects.store'); Route::put('/settings/projects/{project}', [TicketingSettingsController::class, 'updateProject'])->name('settings.projects.update'); Route::delete('/settings/projects/{project}', [TicketingSettingsController::class, 'destroyProject'])->name('settings.projects.destroy'); Route::post('/settings/email', [TicketingSettingsController::class, 'storeEmailConnection'])->name('settings.email.store'); Route::put('/settings/email/{connection}', [TicketingSettingsController::class, 'updateEmailConnection'])->name('settings.email.update'); Route::delete('/settings/email/{connection}', [TicketingSettingsController::class, 'destroyEmailConnection'])->name('settings.email.destroy'); // Ticket routes Route::get('/', [TicketController::class, 'index'])->name('index'); Route::get('/create', [TicketController::class, 'create'])->name('create'); Route::post('/', [TicketController::class, 'store'])->name('store'); // Attachment show (before /{ticket} wildcard) Route::get('/attachments/{attachment}', [TicketAttachmentController::class, 'show'])->name('attachments.show'); Route::get('/{ticket}', [TicketController::class, 'show'])->name('show'); Route::get('/{ticket}/edit', [TicketController::class, 'edit'])->name('edit'); Route::put('/{ticket}', [TicketController::class, 'update'])->name('update'); Route::delete('/{ticket}', [TicketController::class, 'destroy'])->name('destroy'); // Messages & attachments Route::post('/{ticket}/messages', [TicketMessageController::class, 'store'])->name('messages.store'); Route::post('/{ticket}/attachments', [TicketAttachmentController::class, 'store'])->name('attachments.store'); });