auditionadmin/routes/web.php

163 lines
6.9 KiB
PHP

<?php
use App\Http\Controllers\Admin\AuditionController;
use App\Http\Controllers\DashboardController;
use App\Http\Controllers\EntryController;
use App\Http\Controllers\FilterController;
use App\Http\Controllers\SchoolController;
use App\Http\Controllers\StudentController;
use App\Http\Controllers\TestController;
use App\Http\Controllers\UserController;
use App\Http\Middleware\CheckIfAdmin;
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');
// Score Tabulation Routes
Route::middleware(['auth','verified',CheckIfCanTab::class])->prefix('tabulation/')->group(function() {
// Generic Tabulation Routes
Route::controller(\App\Http\Controllers\Tabulation\TabulationController::class)->group(function() {
Route::get('/enter_scores','chooseEntry');
Route::get('/record_noshow','chooseEntry');
});
});
// 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 Rooms Routes
Route::prefix('rooms')->controller(\App\Http\Controllers\Admin\RoomController::class)->group(function() {
Route::get('/','index');
Route::get('/create','create');
Route::post('/','store');
Route::post('/{room}/edit','edit');
Route::patch('/{room}','update');
Route::delete('/{room}','destroy');
Route::get('/judging_assignments','judgingAssignment'); // Screen to assign judges to rooms
Route::match(['post', 'delete'], '/{room}/judge', 'updateJudgeAssignment');
});
// Admin Scoring Guides
Route::prefix('scoring')->controller(\App\Http\Controllers\Admin\ScoringGuideController::class)->group(function() {
Route::get('/','index'); // Scoring Setup Homepage
Route::post('/guides','store'); // Save a new scoring guide
Route::get('/guides/{guide}/edit','edit'); // Edit scoring guide
Route::patch('/guides/{guide}/edit','update'); // Save changes to audition guide (rename)
Route::post('/guides/{guide}/subscore','subscore_store'); // Save a new subscore
Route::post('/reorder-display','reorder_display');
Route::post('/reorder-tiebreak','reorder_tiebreak');
});
// Admin Auditions Routes
Route::prefix('auditions')->controller(\App\Http\Controllers\Admin\AuditionController::class)->group(function() {
Route::get('/','index')->name('adminAuditionIndex');
Route::get('/create','create');
Route::post('/','store');
Route::get('/{audition}/edit','edit');
Route::patch('/{audition}','update');
Route::post('/reorder','reorder');
Route::delete('/{audition}','destroy');
});
// 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::get('/','index');
Route::get('/{school}/edit','edit');
Route::patch('/{school}','update');
});
// 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');