114 lines
4.4 KiB
PHP
114 lines
4.4 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\NominationEnsembles;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Models\NominationEnsemble;
|
|
use Illuminate\Validation\Rule;
|
|
|
|
use function redirect;
|
|
|
|
class ScobdaNominationEnsembleController extends Controller implements NominationEnsembleController
|
|
{
|
|
public function index()
|
|
{
|
|
$ensembles = NominationEnsemble::all();
|
|
|
|
return view('nomination_ensembles.scobda.admin.ensembles.index', compact('ensembles'));
|
|
}
|
|
|
|
public function show(NominationEnsemble $ensemble)
|
|
{
|
|
// TODO: Implement show() method.
|
|
}
|
|
|
|
public function create()
|
|
{
|
|
// TODO: Implement create() method.
|
|
}
|
|
|
|
public function store()
|
|
{
|
|
//dd(request()->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.');
|
|
}
|
|
}
|