diff --git a/app/Http/Controllers/NominationEnsembles/ScobdaNominationEnsembleController.php b/app/Http/Controllers/NominationEnsembles/ScobdaNominationEnsembleController.php index 31ffbef..599930f 100644 --- a/app/Http/Controllers/NominationEnsembles/ScobdaNominationEnsembleController.php +++ b/app/Http/Controllers/NominationEnsembles/ScobdaNominationEnsembleController.php @@ -5,6 +5,8 @@ namespace App\Http\Controllers\NominationEnsembles; use App\Http\Controllers\Controller; use App\Models\NominationEnsemble; +use function redirect; + class ScobdaNominationEnsembleController extends Controller implements NominationEnsembleController { public function index() @@ -24,7 +26,36 @@ class ScobdaNominationEnsembleController extends Controller implements Nominatio public function store() { - // TODO: Implement store() method. + //dd(request()->all()); + $validated = request()->validate([ + 'ensemble_name' => 'required', + 'entry_deadline' => 'required|date', + 'min_grade' => 'required|numeric|min:0', + 'max_grade' => 'required|numeric|gte:min_grade', + 'max_nominations' => 'required|numeric|min:1', + 'target_size' => 'required|numeric|min:1', + 'rounding_direction' => 'required|in:up,down', + 'instrument_list' => 'required|string', + ], [ + 'maximum_grade.gte' => 'The maximum grade must be greater than the minimum grade.', + 'rounding_direction.in' => 'The rounding direction must be either "up" or "down".', + ]); + $instrument_list = preg_replace('/\s*,\s*/', ',', $validated['instrument_list']); + $instrument_array = explode(',', $instrument_list); + + $ensemble = new NominationEnsemble(); + $ensemble->name = $validated['ensemble_name']; + $ensemble->entry_deadline = $validated['entry_deadline']; + $ensemble->minimum_grade = $validated['min_grade']; + $ensemble->maximum_grade = $validated['max_grade']; + $data = []; + $data['max_nominations'] = $validated['max_nominations']; + $data['target_size'] = $validated['target_size']; + $data['instruments'] = $instrument_array; + $ensemble->data = $data; + $ensemble->save(); + + return redirect()->route('nomination.admin.ensemble.index')->with('success', 'Nomination Ensemble has been created.'); } public function edit(NominationEnsemble $ensemble) diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 479e157..0819dc3 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -63,7 +63,7 @@ class AppServiceProvider extends ServiceProvider $this->app->singleton(CreateEntry::class, CreateEntry::class); $this->app->singleton(UpdateEntry::class, UpdateEntry::class); $this->app->singleton(SetHeadDirector::class, SetHeadDirector::class); - $this->app->singleton(NominationEnsembleController::class, ScobdaNominationEnsembleController::class); + $this->app->bind(NominationEnsembleController::class, ScobdaNominationEnsembleController::class); } /** diff --git a/resources/views/nomination_ensembles/scobda/index.blade.php b/resources/views/nomination_ensembles/scobda/index.blade.php index 11614a8..3550819 100644 --- a/resources/views/nomination_ensembles/scobda/index.blade.php +++ b/resources/views/nomination_ensembles/scobda/index.blade.php @@ -1,4 +1,29 @@ Nomination Ensembles + + + Add Nomination Ensemble + + + + + + + + + + Round + + + + + Instrument List (comma separated) + + + + + + + diff --git a/routes/nominationEnsemble.php b/routes/nominationEnsemble.php new file mode 100644 index 0000000..6c94980 --- /dev/null +++ b/routes/nominationEnsemble.php @@ -0,0 +1,12 @@ +prefix('nomination/admin/')->group(function () { + Route::prefix('ensemble/')->controller(NominationEnsembleController::class)->group(function () { + Route::get('/', 'index')->name('nomination.admin.ensemble.index'); + Route::post('/', 'store')->name('nomination.admin.ensemble.store'); + }); +}); diff --git a/routes/web.php b/routes/web.php index de4abbe..8ca8d03 100644 --- a/routes/web.php +++ b/routes/web.php @@ -10,6 +10,7 @@ require __DIR__.'/admin.php'; require __DIR__.'/judging.php'; require __DIR__.'/tabulation.php'; require __DIR__.'/user.php'; +require __DIR__.'/nominationEnsemble.php'; Route::get('/test', [TestController::class, 'flashTest'])->middleware('auth', 'verified');