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

+
@if($ensemble) + @include('nomination_ensembles.scobda.admin.seating.seating_card') + @endif + @if($shirtReportType ?? NULL == 'full') - - {{ $ensemble->name }} - - @if($ensemble->data['seated'] ?? false) - - - Clear Seats - - @else - - - Seat Ensemble - - @endif - - - + Total Shirt Needs - @foreach($ensemble->data['instruments'] as $instrument) - @php($seatOn = 1) - @continue(! $acceptedNominations->has($instrument)) - - {{ $instrument }} - Student Name - School (Nom Rank) - - @foreach($acceptedNominations[$instrument] as $nom) + + + Shirt Size + Total Needed + + + + @foreach($shirtCounts as $size => $count) - {{ $seatOn }} - {{ $nom->student->full_name() }} - {{ $nom->student->school->name }} ({{ $nom->data['rank'] }}) - + {{ $size }} + {{ $count }} - @php($seatOn++) @endforeach - @endforeach + + @endif +
diff --git a/resources/views/nomination_ensembles/scobda/admin/seating/seating_card.blade.php b/resources/views/nomination_ensembles/scobda/admin/seating/seating_card.blade.php new file mode 100644 index 0000000..14d74b9 --- /dev/null +++ b/resources/views/nomination_ensembles/scobda/admin/seating/seating_card.blade.php @@ -0,0 +1,41 @@ + + + {{ $ensemble->name }} + + @if($ensemble->data['seated'] ?? false) + + + Clear Seats + + @else + + + Seat Ensemble + + @endif + + + + + @foreach($ensemble->data['instruments'] as $instrument) + @php($seatOn = 1) + @continue(! $acceptedNominations->has($instrument)) + + {{ $instrument }} + Student Name + School (Nom Rank) + + @foreach($acceptedNominations[$instrument] as $nom) + + {{ $seatOn }} + {{ $nom->student->full_name() }} + {{ $nom->student->school->name }} ({{ $nom->data['rank'] }}) + + + @php($seatOn++) + @endforeach + @endforeach + +