219 lines
11 KiB
PHP
219 lines
11 KiB
PHP
<?php
|
|
|
|
use App\Http\Controllers\DashboardController;
|
|
use App\Http\Controllers\EntryController;
|
|
use App\Http\Controllers\FilterController;
|
|
use App\Http\Controllers\JudgingController;
|
|
use App\Http\Controllers\SchoolController;
|
|
use App\Http\Controllers\StudentController;
|
|
use App\Http\Controllers\Tabulation\DoublerDecisionController;
|
|
use App\Http\Controllers\TestController;
|
|
use App\Http\Controllers\UserController;
|
|
use App\Http\Middleware\CheckIfAdmin;
|
|
use App\Http\Middleware\CheckIfCanJudge;
|
|
use App\Http\Middleware\CheckIfCanTab;
|
|
use Illuminate\Support\Facades\Auth;
|
|
use Illuminate\Support\Facades\Route;
|
|
|
|
|
|
|
|
Route::get('/test', [TestController::class, 'flashTest'])->middleware('auth', 'verified');
|
|
|
|
Route::view('/', 'welcome')->middleware('guest')->name('home');
|
|
Route::get('/results', [App\Http\Controllers\ResultsPage::class, '__invoke'])->name('results');
|
|
|
|
|
|
|
|
// Judging Routes
|
|
Route::middleware(['auth', 'verified', CheckIfCanJudge::class])->prefix('judging')->controller(JudgingController::class)->group(function () {
|
|
Route::get('/', 'index');
|
|
Route::get('/audition/{audition}', 'auditionEntryList');
|
|
Route::get('/entry/{entry}', 'entryScoreSheet');
|
|
Route::post('/entry/{entry}', 'saveScoreSheet');
|
|
Route::patch('/entry/{entry}', 'updateScoreSheet');
|
|
});
|
|
|
|
// Tabulation Routes
|
|
Route::middleware(['auth', 'verified', CheckIfCanTab::class])->group(function () {
|
|
|
|
// Score Management
|
|
Route::prefix('scores/')->controller(\App\Http\Controllers\Tabulation\ScoreController::class)->group(function () {
|
|
Route::get('/choose_entry', 'chooseEntry')->name('scores.chooseEntry');
|
|
Route::get('/entry', 'entryScoreSheet')->name('scores.entryScoreSheet');
|
|
Route::post('/entry/{entry}', 'saveEntryScoreSheet')->name('scores.saveEntryScoreSheet');
|
|
Route::delete('/{score}', [\App\Http\Controllers\Tabulation\ScoreController::class, 'destroyScore'])->name('scores.destroy');
|
|
});
|
|
|
|
// Generic Tabulation Routes
|
|
Route::prefix('tabulation/')->controller(\App\Http\Controllers\Tabulation\TabulationController::class)->group(function () {
|
|
Route::get('/status', 'status');
|
|
Route::match(['get', 'post'], '/auditions/{audition}', 'auditionSeating')->name('tabulation.audition.seat');
|
|
Route::post('/auditions/{audition}/publish-seats', 'publishSeats')->name('tabulation.seat.publish');
|
|
Route::post('/auditions/{audition}/unpublish-seats', 'unpublishSeats')->name('tabulation.seat.unpublish');
|
|
});
|
|
|
|
// Doubler decision routes
|
|
Route::prefix('doubler-decision')->controller(DoublerDecisionController::class)->group(function () {
|
|
Route::post('{entry}/accept', 'accept')->name('doubler.accept');
|
|
Route::post('{entry}/decline', 'decline')->name('doubler.decline');
|
|
});
|
|
|
|
});
|
|
|
|
// Admin Routes
|
|
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
|
|
|
|
// 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::post('/reorder-display', 'reorder_display')->name('admin.scoring.reorder_display');
|
|
Route::post('/reorder-tiebreak', 'reorder_tiebreak')->name('admin.scoring.reorder_tiebreak');
|
|
});
|
|
|
|
// 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');
|
|
Route::get('/create', 'create');
|
|
Route::post('/', 'store');
|
|
Route::get('/{entry}/edit', 'edit');
|
|
Route::patch('/{entry}', 'update');
|
|
|
|
});
|
|
|
|
// 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');
|
|
Route::get('/', 'index');
|
|
Route::get('/create', 'create');
|
|
Route::get('/{school}/edit', 'edit');
|
|
Route::patch('/{school}', 'update');
|
|
Route::post('/', 'store');
|
|
Route::delete('/domain/{domain}', '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');
|
|
});
|
|
});
|
|
|
|
// Dashboard Related Routes
|
|
Route::middleware(['auth', 'verified'])->group(function () {
|
|
Route::get('/dashboard', [DashboardController::class, 'dashboard'])->name('dashboard');
|
|
Route::get('/profile', [DashboardController::class, 'profile']);
|
|
Route::get('/my_school', [DashboardController::class, 'my_school']);
|
|
});
|
|
|
|
// Entry Related Routes
|
|
Route::middleware(['auth', 'verified', 'can:create,App\Models\Entry'])->controller(EntryController::class)->group(function () {
|
|
Route::get('/entries', 'index');
|
|
Route::get('/entries/create', 'create');
|
|
Route::post('/entries', 'store');
|
|
Route::delete('/entries/{entry}', 'destroy');
|
|
});
|
|
|
|
// User Related Routes
|
|
Route::middleware(['auth', 'verified'])->controller(UserController::class)->group(function () {
|
|
Route::patch('/users/{user}/set_school', 'set_school');
|
|
Route::patch('/users/{$user}', 'update');
|
|
});
|
|
|
|
// Student Related Routes
|
|
Route::middleware(['auth', 'verified', 'can:create,App\Models\Student'])->controller(StudentController::class)->group(function () {
|
|
Route::get('/students', 'index');
|
|
Route::post('students', 'store');
|
|
Route::get('/students/{student}/edit', 'edit');
|
|
Route::patch('/students/{student}', 'update');
|
|
Route::delete('/students/{student}', 'destroy');
|
|
});
|
|
|
|
// School Related Routes
|
|
Route::middleware(['auth', 'verified'])->controller(SchoolController::class)->group(function () {
|
|
Route::get('/schools/create', 'create');
|
|
Route::post('/schools', 'store');
|
|
Route::get('/schools/{school}/edit', 'edit');
|
|
Route::get('/schools/{school}', 'show');
|
|
Route::patch('/schools/{school}', 'update');
|
|
});
|
|
|
|
// Filter Related Routes
|
|
Route::prefix('filters')->middleware(['auth', 'verified'])->controller(FilterController::class)->group(function () {
|
|
Route::post('/admin_entry_filter', 'adminEntryFilter');
|
|
Route::get('/admin_entry_filter/clear', 'clearAdminEntryFilter');
|
|
});
|
|
|
|
//Route::get('/my_school', [SchoolController::class, 'my_school'])->middleware('auth','verified');
|
|
//Route::get('/schools/create', [SchoolController::class, 'create'])->middleware('auth','verified');
|
|
//Route::post('/schools', [SchoolController::class, 'store'])->middleware('auth','verified');
|
|
//Route::get('/schools/{school}/edit', [SchoolController::class, 'edit'])->middleware('auth','verified');
|
|
//Route::get('/schools/{school}', [SchoolController::class, 'show'])->middleware('auth','verified');
|
|
//Route::patch('/schools/{school}', [SchoolController::class, 'update'])->middleware('auth','verified');
|