all()); $validated = request()->validate([ 'ensemble_name' => 'required|unique:nomination_ensembles,name', '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; $data['rounding_direction'] = $validated['rounding_direction']; $ensemble->data = $data; $ensemble->save(); return redirect()->route('nomination.admin.ensemble.index')->with('success', 'Nomination Ensemble has been created.'); } public function edit(NominationEnsemble $ensemble) { // TODO: Implement edit() method. } public function update(NominationEnsemble $ensemble) { $validated = request()->validate([ 'ensemble_name' => [ 'required', Rule::unique('nomination_ensembles', 'name')->ignore($ensemble->id), ], '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->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; $data['rounding_direction'] = $validated['rounding_direction']; $ensemble->data = $data; $ensemble->save(); return redirect()->route('nomination.admin.ensemble.index')->with('success', 'Nomination Ensemble has been modified.'); } public function destroy(NominationEnsemble $ensemble) { $ensemble->delete(); // TODO: Delete associated nomionations. return redirect()->route('nomination.admin.ensemble.index')->with('success', 'Nomination Ensemble has been deleted.'); } }