Minimum and maximum grades on student creation and edit forms should include grades for nomination ensembles.

This commit is contained in:
Matt Young 2025-02-09 19:39:24 -06:00
parent ca06563b1c
commit c4818876b2
2 changed files with 14 additions and 10 deletions

View File

@ -7,6 +7,7 @@ use App\Models\Audition;
use App\Models\AuditLogEntry; use App\Models\AuditLogEntry;
use App\Models\Entry; use App\Models\Entry;
use App\Models\Event; use App\Models\Event;
use App\Models\NominationEnsemble;
use App\Models\School; use App\Models\School;
use App\Models\Student; use App\Models\Student;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
@ -14,6 +15,8 @@ use Illuminate\Support\Facades\Auth;
use function abort; use function abort;
use function auth; use function auth;
use function compact; use function compact;
use function max;
use function min;
use function request; use function request;
use function to_route; use function to_route;
use function view; use function view;
@ -54,8 +57,8 @@ class StudentController extends Controller
if (! Auth::user()->is_admin) { if (! Auth::user()->is_admin) {
abort(403); abort(403);
} }
$minGrade = Audition::min('minimum_grade'); $minGrade = min(Audition::min('minimum_grade'), NominationEnsemble::min('minimum_grade'));
$maxGrade = Audition::max('maximum_grade'); $maxGrade = max(Audition::max('maximum_grade'), NominationEnsemble::max('maximum_grade'));
$schools = School::orderBy('name')->get(); $schools = School::orderBy('name')->get();
return view('admin.students.create', ['schools' => $schools, 'minGrade' => $minGrade, 'maxGrade' => $maxGrade]); return view('admin.students.create', ['schools' => $schools, 'minGrade' => $minGrade, 'maxGrade' => $maxGrade]);
@ -105,8 +108,8 @@ class StudentController extends Controller
if (! Auth::user()->is_admin) { if (! Auth::user()->is_admin) {
abort(403); abort(403);
} }
$minGrade = Audition::min('minimum_grade'); $minGrade = min(Audition::min('minimum_grade'), NominationEnsemble::min('minimum_grade'));
$maxGrade = Audition::max('maximum_grade'); $maxGrade = max(Audition::max('maximum_grade'), NominationEnsemble::max('maximum_grade'));
$schools = School::orderBy('name')->get(); $schools = School::orderBy('name')->get();
$student->loadCount('entries'); $student->loadCount('entries');
$entries = $student->entries; $entries = $student->entries;

View File

@ -1,4 +1,4 @@
@php use App\Models\Audition;use Illuminate\Support\Facades\Auth; @endphp @php use App\Models\Audition;use App\Models\NominationEnsemble;use Illuminate\Support\Facades\Auth; @endphp
<x-layout.app> <x-layout.app>
<x-slot:page_title>Students</x-slot:page_title> <x-slot:page_title>Students</x-slot:page_title>
@ -8,13 +8,13 @@
<x-slot:section_name>Add Student</x-slot:section_name> <x-slot:section_name>Add Student</x-slot:section_name>
<x-form.form method="POST" action="{{ route('students.store') }}" class="mb-6 mt-3"> <x-form.form method="POST" action="{{ route('students.store') }}" class="mb-6 mt-3">
<x-form.body-grid columns="8" class="max-w-full"> <x-form.body-grid columns="8" class="max-w-full">
<x-form.field name="first_name" label_text="First Name" colspan="3" autofocus /> <x-form.field name="first_name" label_text="First Name" colspan="3" autofocus/>
<x-form.field name="last_name" label_text="Last Name" colspan="3"/> <x-form.field name="last_name" label_text="Last Name" colspan="3"/>
<x-form.select name="grade"> <x-form.select name="grade">
<x-slot:label>Grade</x-slot:label> <x-slot:label>Grade</x-slot:label>
@php($n = Audition::min('minimum_grade')) @php($n = min(Audition::min('minimum_grade'),NominationEnsemble::min('minimum_grade')))
@php($maxGrade = Audition::max('maximum_grade')) @php($maxGrade = max(Audition::max('maximum_grade'), NominationEnsemble::max('maximum_grade')))
@while($n <= $maxGrade) @while($n <= $maxGrade)
<option value="{{ $n }}">{{ $n }}</option> <option value="{{ $n }}">{{ $n }}</option>
@php($n++); @php($n++);
@ -54,7 +54,7 @@
</x-table.th> </x-table.th>
</tr> </tr>
</thead> </thead>
<x-table.body > <x-table.body>
@foreach($students as $student) @foreach($students as $student)
<tr> <tr>
<x-table.td first>{{ $student->full_name(true) }}</x-table.td> <x-table.td first>{{ $student->full_name(true) }}</x-table.td>
@ -65,7 +65,8 @@
<x-table.td class="hidden md:table-cell">{{ $student->entries_count }}</x-table.td> <x-table.td class="hidden md:table-cell">{{ $student->entries_count }}</x-table.td>
<x-table.td for_button> <x-table.td for_button>
@if( $student->entries_count === 0) @if( $student->entries_count === 0)
<form method="POST" action="{{ route('students.destroy',$student) }}" class="inline"> <form method="POST" action="{{ route('students.destroy',$student) }}"
class="inline">
@csrf @csrf
@method('DELETE') @method('DELETE')
<x-table.button <x-table.button