diff --git a/app/Http/Controllers/NominationEnsembles/ScobdaNominationSeatingController.php b/app/Http/Controllers/NominationEnsembles/ScobdaNominationSeatingController.php index 72ae571..5fb81f6 100644 --- a/app/Http/Controllers/NominationEnsembles/ScobdaNominationSeatingController.php +++ b/app/Http/Controllers/NominationEnsembles/ScobdaNominationSeatingController.php @@ -5,6 +5,7 @@ namespace App\Http\Controllers\NominationEnsembles; use App\Http\Controllers\Controller; use App\Models\NominationEnsemble; use App\Models\NominationEnsembleEntry; +use App\Models\Student; use function redirect; @@ -12,10 +13,29 @@ class ScobdaNominationSeatingController extends Controller implements Nomination { public function index() { + $shirtReportType = request()->get('shirtReportType') || null; $ensembles = NominationEnsemble::all(); $ensemble = null; + $shirtCounts = ($shirtReportType == 'full') ? $this->totalShirtCount() : null; - return view('nomination_ensembles.scobda.admin.seating.index', compact('ensembles', 'ensemble')); + return view('nomination_ensembles.scobda.admin.seating.index', + compact('ensembles', 'ensemble', 'shirtReportType', 'shirtCounts')); + } + + protected function totalShirtCount() + { + $acceptedNominationEntries = NominationEnsembleEntry::where('data->accepted', true)->with('student')->get(); + $possibleSizes = Student::$shirtSizes; + $shirtCounts = ['none' => 0]; + foreach ($possibleSizes as $shortSize => $size) { + $shirtCounts[$shortSize] = 0; + } + foreach ($acceptedNominationEntries as $entry) { + $shirtSize = $entry->student->optional_data['shirt_size'] ?? 'none'; + $shirtCounts[$shirtSize] += 1; + } + + return $shirtCounts; } public function show(NominationEnsemble $ensemble) diff --git a/database/seeders/ScobdaNominationEnsembleAndEntrySeeder.php b/database/seeders/ScobdaNominationEnsembleAndEntrySeeder.php index d53668f..2d2a1bd 100644 --- a/database/seeders/ScobdaNominationEnsembleAndEntrySeeder.php +++ b/database/seeders/ScobdaNominationEnsembleAndEntrySeeder.php @@ -57,7 +57,11 @@ class ScobdaNominationEnsembleAndEntrySeeder extends Seeder $faker = Faker::create(); $schools = School::all(); foreach ($schools as $school) { - $students = Student::factory()->count(10)->create(['school_id' => $school->id, 'grade' => 5]); + $students = Student::factory()->count(10)->create([ + 'school_id' => $school->id, + 'grade' => 5, + 'optional_data' => ['shirt_size' => $faker->randomElement(['S', 'M', 'L', 'XL', '2XL'])], + ]); $n = 1; foreach ($students as $student) { $nomData = [ diff --git a/resources/views/nomination_ensembles/scobda/admin/seating/index.blade.php b/resources/views/nomination_ensembles/scobda/admin/seating/index.blade.php index 5b0c752..44f48e6 100644 --- a/resources/views/nomination_ensembles/scobda/admin/seating/index.blade.php +++ b/resources/views/nomination_ensembles/scobda/admin/seating/index.blade.php @@ -14,53 +14,42 @@ @endforeach +
Shirts Needed
+