diff --git a/app/Http/Controllers/ScoreSheetController.php b/app/Http/Controllers/ScoreSheetController.php
new file mode 100644
index 0000000..8802452
--- /dev/null
+++ b/app/Http/Controllers/ScoreSheetController.php
@@ -0,0 +1,10 @@
+is_admin) {
+ return $next($request);
+ }
+
+ if (Auth::check() && Auth::user()->is_tab) {
+ return $next($request);
+ }
+
+ return redirect('/')->with('error', 'You do not have access to score tabulation.');
+
+ }
+}
diff --git a/app/Models/ScoreSheet.php b/app/Models/ScoreSheet.php
new file mode 100644
index 0000000..2d9ae42
--- /dev/null
+++ b/app/Models/ScoreSheet.php
@@ -0,0 +1,11 @@
+where('domain','=',$this->emailDomain())->get();
}
+
+ public function canTab() {
+ if ($this->is_admin) return true;
+ return $this->is_tab;
+ }
}
diff --git a/app/Policies/ScoreSheetPolicy.php b/app/Policies/ScoreSheetPolicy.php
new file mode 100644
index 0000000..bab4ca1
--- /dev/null
+++ b/app/Policies/ScoreSheetPolicy.php
@@ -0,0 +1,66 @@
+id();
+ $table->foreignIdFor(User::class)->constrained()->cascadeOnUpdate()->cascadeOnDelete();
+ $table->foreignIdFor(Entry::class)->constrained()->cascadeOnDelete()->cascadeOnUpdate();
+ $table->json('subscores');
+ $table->timestamps();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ */
+ public function down(): void
+ {
+ Schema::dropIfExists('score_sheets');
+ }
+};
diff --git a/database/seeders/ScoreSheetSeeder.php b/database/seeders/ScoreSheetSeeder.php
new file mode 100644
index 0000000..9f576fa
--- /dev/null
+++ b/database/seeders/ScoreSheetSeeder.php
@@ -0,0 +1,17 @@
+
-
+
Clear Filters
Apply Filters
diff --git a/resources/views/components/layout/navbar/menus/admin.blade.php b/resources/views/components/layout/navbar/menus/admin.blade.php
index 9322b24..da704bd 100644
--- a/resources/views/components/layout/navbar/menus/admin.blade.php
+++ b/resources/views/components/layout/navbar/menus/admin.blade.php
@@ -29,16 +29,6 @@
Scoring
Rooms
Judges
-
diff --git a/resources/views/components/layout/navbar/menus/tabulation.blade.php b/resources/views/components/layout/navbar/menus/tabulation.blade.php
new file mode 100644
index 0000000..4deecb4
--- /dev/null
+++ b/resources/views/components/layout/navbar/menus/tabulation.blade.php
@@ -0,0 +1,27 @@
+
+ {{--
diff --git a/resources/views/components/layout/navbar/navbar.blade.php b/resources/views/components/layout/navbar/navbar.blade.php
index 0a36a07..8a9201f 100644
--- a/resources/views/components/layout/navbar/navbar.blade.php
+++ b/resources/views/components/layout/navbar/navbar.blade.php
@@ -21,6 +21,9 @@
@if(Auth::user()->is_admin)
@include('components.layout.navbar.menus.admin')
@endif
+ @if(Auth::user()->canTab())
+ @include('components.layout.navbar.menus.tabulation')
+ @endif
diff --git a/resources/views/tabulation/choose_entry.blade.php b/resources/views/tabulation/choose_entry.blade.php
new file mode 100644
index 0000000..d8091f9
--- /dev/null
+++ b/resources/views/tabulation/choose_entry.blade.php
@@ -0,0 +1,18 @@
+
+ Choose Entry
+
+ Choose Entry
+
+
+
+
+
+ Select
+
+
+
+
+
+
+
+d
diff --git a/resources/views/test.blade.php b/resources/views/test.blade.php
index 40b0b49..765d45d 100644
--- a/resources/views/test.blade.php
+++ b/resources/views/test.blade.php
@@ -3,7 +3,13 @@
Test Page
@php
-
+ $scores =[
+ ['subcoreID' => 13, 'score' => 93],
+ ['subcoreID' => 23, 'score' => 91],
+ ['subcoreID' => 42, 'score' => 81],
+ ['subcoreID' => 78, 'score' => 16],
+ ['subcoreID' => 74, 'score' => 23],
+ ];
@endphp
diff --git a/routes/web.php b/routes/web.php
index 23ef2c9..77509b3 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -9,21 +9,33 @@ 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::post('/admin/scoring/assign_guide_to_audition',[\App\Http\Controllers\Admin\AuditionController::class,'scoringGuideUpdate']); // needs to move inside of admin group
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
- // Rooms
+ // Admin Rooms Routes
Route::prefix('rooms')->controller(\App\Http\Controllers\Admin\RoomController::class)->group(function() {
Route::get('/','index');
Route::get('/create','create');
@@ -36,7 +48,7 @@ Route::middleware(['auth','verified',CheckIfAdmin::class])->prefix('admin/')->gr
});
- // Scoring
+ // 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
@@ -47,7 +59,6 @@ Route::middleware(['auth','verified',CheckIfAdmin::class])->prefix('admin/')->gr
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');