46 lines
3.4 KiB
PHP
46 lines
3.4 KiB
PHP
<?php
|
|
|
|
use Dashboard\Ticketing\Http\Controllers\TicketAttachmentController;
|
|
use Dashboard\Ticketing\Http\Controllers\TicketController;
|
|
use Dashboard\Ticketing\Http\Controllers\TicketMessageController;
|
|
use Dashboard\Ticketing\Http\Controllers\TicketingSettingsController;
|
|
use Illuminate\Support\Facades\Route;
|
|
|
|
Route::middleware(['web', 'auth', 'app.access:ticketing'])->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');
|
|
});
|