diff --git a/app/Http/Controllers/NominationEnsembles/MeobdaNominationAdminController.php b/app/Http/Controllers/NominationEnsembles/MeobdaNominationAdminController.php
index 45bd749..e6a7f6a 100644
--- a/app/Http/Controllers/NominationEnsembles/MeobdaNominationAdminController.php
+++ b/app/Http/Controllers/NominationEnsembles/MeobdaNominationAdminController.php
@@ -6,6 +6,10 @@ use App\Http\Controllers\Controller;
use App\Models\NominationEnsemble;
use App\Models\NominationEnsembleEntry;
use App\Models\School;
+use App\Models\Student;
+use Illuminate\Validation\Rule;
+
+use function redirect;
class MeobdaNominationAdminController extends Controller implements NominationAdminController
{
@@ -81,7 +85,7 @@ class MeobdaNominationAdminController extends Controller implements NominationAd
compact('nominations', 'schools', 'filterData', 'ensembles', 'sections', 'splits'));
}
- public function show(NominationEnsembleEntry $entry)
+ public function show(NominationEnsembleEntry $nominationEnsembleEntry)
{
// TODO: Implement show() method.
}
@@ -96,18 +100,69 @@ class MeobdaNominationAdminController extends Controller implements NominationAd
// TODO: Implement store() method.
}
- public function edit(NominationEnsembleEntry $entry)
+ public function edit(NominationEnsembleEntry $nominationEnsembleEntry)
{
- // TODO: Implement edit() method.
+ $students = Student::with('school')->get()
+ ->sortBy('school.name');
+
+ $instrumentation = $this->get_ensemble_instrumentation($nominationEnsembleEntry->ensemble);
+
+ return view('nomination_ensembles.meobda.admin.nomination-edit',
+ compact('nominationEnsembleEntry', 'students', 'instrumentation'));
}
- public function update(NominationEnsembleEntry $entry)
+ public function update(NominationEnsembleEntry $nominationEnsembleEntry)
{
- // TODO: Implement update() method.
+ $ensemble = $nominationEnsembleEntry->ensemble;
+ $validSplits = $ensemble->data['split_names'];
+ $validInstruments = [];
+ foreach ($ensemble->data['instruments'] as $instrument) {
+ $validInstruments[] = $instrument['name'];
+ }
+ $validData = request()->validate([
+ 'instrument' => Rule::in($validInstruments),
+ 'split' => Rule::in($validSplits),
+ 'seat' => 'integer',
+ ]);
+ $data = $nominationEnsembleEntry->data;
+ $data['instrument'] = $validData['instrument'];
+ $data['split'] = $validData['split'];
+ $data['seat'] = $validData['seat'];
+ $nominationEnsembleEntry->update([
+ 'data' => $data,
+ ]);
+
+ return redirect()->back();
}
- public function destroy(NominationEnsembleEntry $entry)
+ public function destroy(NominationEnsembleEntry $nominationEnsembleEntry)
{
// TODO: Implement destroy() method.
}
+
+ private function get_ensemble_instrumentation(NominationEnsemble $ensemble)
+ {
+ $entries = NominationEnsembleEntry::where('nomination_ensemble_id', $ensemble->id)->get();
+ $splits = $ensemble->data['split_names'];
+ $instruments = [];
+ foreach ($ensemble->data['instruments'] as $instrument) {
+ $instruments[] = $instrument['name'];
+ }
+ $counts = [];
+ foreach ($splits as $split) {
+ $counts[$split] = [];
+ foreach ($instruments as $instrument) {
+ $counts[$split][$instrument] = 0;
+ }
+ }
+
+ foreach ($entries as $entry) {
+ if (! isset($entry->data['split'])) {
+ continue;
+ }
+ $counts[$entry->data['split']][$entry->data['instrument']] += 1;
+ }
+
+ return $counts;
+ }
}
diff --git a/app/Http/Controllers/NominationEnsembles/NominationAdminController.php b/app/Http/Controllers/NominationEnsembles/NominationAdminController.php
index a1db51c..d6e26ef 100644
--- a/app/Http/Controllers/NominationEnsembles/NominationAdminController.php
+++ b/app/Http/Controllers/NominationEnsembles/NominationAdminController.php
@@ -8,15 +8,15 @@ interface NominationAdminController
{
public function index();
- public function show(NominationEnsembleEntry $entry);
+ public function show(NominationEnsembleEntry $nominationEnsembleEntry);
public function create();
public function store();
- public function edit(NominationEnsembleEntry $entry);
+ public function edit(NominationEnsembleEntry $nominationEnsembleEntry);
- public function update(NominationEnsembleEntry $entry);
+ public function update(NominationEnsembleEntry $nominationEnsembleEntry);
- public function destroy(NominationEnsembleEntry $entry);
+ public function destroy(NominationEnsembleEntry $nominationEnsembleEntry);
}
diff --git a/app/Http/Controllers/NominationEnsembles/ScobdaNominationAdminController.php b/app/Http/Controllers/NominationEnsembles/ScobdaNominationAdminController.php
index 99196f7..c659254 100644
--- a/app/Http/Controllers/NominationEnsembles/ScobdaNominationAdminController.php
+++ b/app/Http/Controllers/NominationEnsembles/ScobdaNominationAdminController.php
@@ -14,7 +14,7 @@ class ScobdaNominationAdminController extends Controller implements NominationAd
return view('nomination_ensembles.scobda.admin.index', compact('nominations'));
}
- public function show(NominationEnsembleEntry $entry)
+ public function show(NominationEnsembleEntry $nominationEnsembleEntry)
{
// TODO: Implement show() method.
}
@@ -29,17 +29,17 @@ class ScobdaNominationAdminController extends Controller implements NominationAd
// TODO: Implement store() method.
}
- public function edit(NominationEnsembleEntry $entry)
+ public function edit(NominationEnsembleEntry $nominationEnsembleEntry)
{
// TODO: Implement edit() method.
}
- public function update(NominationEnsembleEntry $entry)
+ public function update(NominationEnsembleEntry $nominationEnsembleEntry)
{
// TODO: Implement update() method.
}
- public function destroy(NominationEnsembleEntry $entry)
+ public function destroy(NominationEnsembleEntry $nominationEnsembleEntry)
{
// TODO: Implement destroy() method.
}
diff --git a/resources/views/nomination_ensembles/meobda/admin/nomination-edit.blade.php b/resources/views/nomination_ensembles/meobda/admin/nomination-edit.blade.php
new file mode 100644
index 0000000..26d434a
--- /dev/null
+++ b/resources/views/nomination_ensembles/meobda/admin/nomination-edit.blade.php
@@ -0,0 +1,54 @@
+
+
+ Edit Nomination
+
+
+
+
+ Instrument
+ @foreach($nominationEnsembleEntry->ensemble->data['instruments'] as $instrument)
+
+ @endforeach
+
+ @error('instrument')
+ {{ $message }}
+ @enderror
+
+ Split
+
+ @foreach($nominationEnsembleEntry->ensemble->data['split_names'] as $splitName)
+
+ @endforeach
+
+
+ @error('split')
+ {{ $message }}
+ @enderror
+
+
+
+
+
+ Current Instrumentation (before any changes)
+
+
+
+
+ @foreach($nominationEnsembleEntry->ensemble->data['split_names'] as $split)
+ {{$split}}
+ @endforeach
+
+
+
+ @foreach($nominationEnsembleEntry->ensemble->data['instruments'] as $instrument)
+
+ {{$instrument['name']}}
+ @foreach($nominationEnsembleEntry->ensemble->data['split_names'] as $split)
+ {{ $instrumentation[$split][$instrument['name']] }}
+ @endforeach
+
+ @endforeach
+
+
+
+
diff --git a/resources/views/nomination_ensembles/meobda/admin/nominations.blade.php b/resources/views/nomination_ensembles/meobda/admin/nominations.blade.php
index f989ccb..7795e02 100644
--- a/resources/views/nomination_ensembles/meobda/admin/nominations.blade.php
+++ b/resources/views/nomination_ensembles/meobda/admin/nominations.blade.php
@@ -12,7 +12,7 @@
@foreach($schools as $school)
@endforeach
@@ -23,7 +23,7 @@
@foreach ($sections as $value => $name)
@endforeach
@@ -63,6 +63,7 @@
Nominated For
Split
Seat
+
@@ -71,9 +72,15 @@
{{ $nomination->id }}
{{ $nomination->student->full_name('fl') }}
{{ $nomination->student->school->name }}
- {{ $nomination->ensemble->name }} - {{ $nomination->data['instrument'] }}
+ {{ $nomination->ensemble->name }}
+ - {{ $nomination->data['instrument'] }}
{{ $nomination->data['split'] ?? '---' }}
{{ $nomination->data['seat'] ?? '---' }}
+
+
+ [ EDIT ]
+
+
@endforeach
diff --git a/routes/nominationEnsemble.php b/routes/nominationEnsemble.php
index 4e417f9..c77d1fd 100644
--- a/routes/nominationEnsemble.php
+++ b/routes/nominationEnsemble.php
@@ -19,6 +19,8 @@ Route::middleware(['auth', 'verified', CheckIfAdmin::class])->prefix('nomination
Route::prefix('nominations/')->controller(NominationAdminController::class)->group(function () {
Route::get('/', 'index')->name('nomination.admin.index');
+ Route::get('/{nominationEnsembleEntry}/edit', 'edit')->name('nomination.admin.edit');
+ Route::patch('/{nominationEnsembleEntry}', 'update')->name('nomination.admin.update');
});
Route::prefix('seating/')->controller(NominationSeatingController::class)->group(function () {