auditionadmin/routes/admin.php

118 lines
6.9 KiB
PHP

<?php
// Admin Routes
use App\Http\Middleware\CheckIfAdmin;
use Illuminate\Support\Facades\Route;
Route::middleware(['auth', 'verified', CheckIfAdmin::class])->prefix('admin/')->group(function () {
Route::view('/', 'admin.dashboard');
Route::post('/auditions/roomUpdate', [\App\Http\Controllers\Admin\AuditionController::class, 'roomUpdate']); // Endpoint for JS assigning auditions to rooms
Route::post('/scoring/assign_guide_to_audition', [\App\Http\Controllers\Admin\AuditionController::class, 'scoringGuideUpdate']); // Endpoint for JS assigning scoring guides to auditions
Route::get('/settings', [\App\Http\Controllers\Admin\AuditionSettings::class, 'index'])->name('audition-settings');
Route::post('/settings', [\App\Http\Controllers\Admin\AuditionSettings::class, 'save'])->name('audition-settings-save');
// Admin Ensemble Routes
Route::prefix('ensembles')->controller(\App\Http\Controllers\Admin\EnsembleController::class)->group(function () {
Route::get('/', 'index')->name('admin.ensembles.index');
Route::post('/', 'store')->name('admin.ensembles.store');
Route::delete('/{ensemble}', 'destroy')->name('admin.ensembles.destroy');
Route::post('/updateEnsembleRank', 'updateEnsembleRank')->name('admin.ensembles.updateEnsembleRank');
Route::patch('/{ensemble}', 'updateEnsemble')->name('admin.ensembles.updateEnsemble');
Route::get('/seating-limits', 'seatingLimits')->name('admin.ensembles.seatingLimits');
Route::get('/seating-limits/{ensemble}', 'seatingLimits')->name('admin.ensembles.seatingLimits.ensemble');
Route::post('/seating-limits/{ensemble}', 'seatingLimitsSet')->name('admin.ensembles.seatingLimits.ensemble.set');
});
// Admin Event Routes
Route::prefix('events')->controller(\App\Http\Controllers\Admin\EventController::class)->group(function () {
Route::get('/', 'index')->name('admin.events.index');
Route::post('/', 'store')->name('admin.events.store');
Route::delete('/{event}', 'destroy')->name('admin.events.destroy');
});
// Admin Rooms Routes
Route::prefix('rooms')->controller(\App\Http\Controllers\Admin\RoomController::class)->group(function () {
Route::get('/', 'index')->name('admin.rooms.index');
Route::get('/create', 'create')->name('admin.rooms.create');
Route::post('/', 'store')->name('admin.rooms.store');
Route::post('/{room}/edit', 'edit')->name('admin.rooms.edit');
Route::patch('/{room}', 'update')->name('admin.rooms.update');
Route::delete('/{room}', 'destroy')->name('admin.rooms.destroy');
Route::get('/judging_assignments', 'judgingAssignment')->name('admin.rooms.judgingAssignment'); // Screen to assign judges to rooms
Route::match(['post', 'delete'], '/{room}/judge', 'updateJudgeAssignment')->name('admin.rooms.updateJudgeAssignment');
});
// Admin Scoring Guides
Route::prefix('scoring')->controller(\App\Http\Controllers\Admin\ScoringGuideController::class)->group(function () {
Route::get('/', 'index')->name('admin.scoring.index'); // Scoring Setup Homepage
Route::post('/guides', 'store')->name('admin.scoring.store'); // Save a new scoring guide
Route::get('/guides/{guide}/edit', 'edit')->name('admin.scoring.edit'); // Edit scoring guide
Route::patch('/guides/{guide}/edit', 'update')->name('admin.scoring.update'); // Save changes to audition guide (rename)
Route::post('/guides/{guide}/subscore', 'subscore_store')->name('admin.scoring.subscore_store'); // Save a new subscore
Route::patch('/guides/{guide}/subscore/{subscore}', 'subscore_update')->name('admin.scoring.subscore_update'); // Modify a subscore
Route::delete('/guides/{guide}/subscore/{subscore}', 'subscore_destroy')->name('admin.scoring.subscore_destroy'); // Delete a subscore
Route::post('/reorder-display', 'reorder_display')->name('admin.scoring.reorder_display');
Route::post('/reorder-tiebreak', 'reorder_tiebreak')->name('admin.scoring.reorder_tiebreak');
Route::delete('/guides/{guide}', 'destroy')->name('admin.scoring.destroy'); // Delete a scoring guide
});
// Admin Auditions Routes
Route::prefix('auditions')->controller(\App\Http\Controllers\Admin\AuditionController::class)->group(function () {
Route::get('/', 'index')->name('admin.auditions.index');
Route::get('/create', 'create')->name('admin.auditions.create');
Route::post('/', 'store')->name('admin.auditions.store');
Route::get('/{audition}/edit', 'edit')->name('admin.auditions.edit');
Route::patch('/{audition}', 'update')->name('admin.auditions.update');
Route::post('/reorder', 'reorder')->name('admin.auditions.reorder');
Route::delete('/{audition}', 'destroy')->name('admin.auditions.destroy');
Route::get('/run_draw', 'prepareDraw')->name('admin.auditions.prepareDraw');
Route::post('/run_draw', 'runDraw')->name('admin.auditions.runDraw');
});
// Admin Entries Routes
Route::prefix('entries')->controller(\App\Http\Controllers\Admin\EntryController::class)->group(function () {
Route::get('/', 'index')->name('admin.entries.index');
Route::get('/create', 'create');
Route::post('/', 'store');
Route::get('/{entry}/edit', 'edit')->name('admin.entries.edit');
Route::patch('/{entry}', 'update');
Route::delete('/{entry}', 'destroy')->name('admin.entries.destroy');
});
// Admin Student Routes
Route::prefix('students')->controller(\App\Http\Controllers\Admin\StudentController::class)->group(function () {
Route::get('/', 'index');
Route::get('/create', 'create');
Route::post('/', 'store');
Route::get('/{student}/edit', 'edit');
Route::patch('/{student}', 'update');
});
// Admin School Routes
Route::prefix('schools')->controller(\App\Http\Controllers\Admin\SchoolController::class)->group(function () {
Route::post('/{school}/add_domain', 'add_domain')->name('admin.schools.add_domain');
Route::get('/', 'index')->name('admin.schools.index');
Route::get('/{school}', 'show')->name('admin.schools.show');
Route::get('/create', 'create')->name('admin.schools.create');
Route::get('/{school}/edit', 'edit')->name('admin.schools.edit');
Route::patch('/{school}', 'update')->name('admin.schools.update');
Route::post('/', 'store')->name('admin.schools.store');
Route::delete('/domain/{domain}', 'destroy_domain')->name('admin.schools.destroy_domain');
});
// Admin User Routes
Route::prefix('users')->controller(\App\Http\Controllers\Admin\UserController::class)->group(function () {
Route::get('/', 'index');
Route::get('/create', 'create');
Route::post('/', 'store');
Route::get('/{user}/edit', 'edit');
Route::patch('/{user}', 'update');
Route::delete('/{user}', 'destroy');
});
});