Functional form to create nomination ensemble under scobda rules.
This commit is contained in:
parent
ff8f9afee0
commit
f7bb1547cc
|
|
@ -5,6 +5,8 @@ namespace App\Http\Controllers\NominationEnsembles;
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use App\Models\NominationEnsemble;
|
use App\Models\NominationEnsemble;
|
||||||
|
|
||||||
|
use function redirect;
|
||||||
|
|
||||||
class ScobdaNominationEnsembleController extends Controller implements NominationEnsembleController
|
class ScobdaNominationEnsembleController extends Controller implements NominationEnsembleController
|
||||||
{
|
{
|
||||||
public function index()
|
public function index()
|
||||||
|
|
@ -24,7 +26,36 @@ class ScobdaNominationEnsembleController extends Controller implements Nominatio
|
||||||
|
|
||||||
public function store()
|
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)
|
public function edit(NominationEnsemble $ensemble)
|
||||||
|
|
|
||||||
|
|
@ -63,7 +63,7 @@ class AppServiceProvider extends ServiceProvider
|
||||||
$this->app->singleton(CreateEntry::class, CreateEntry::class);
|
$this->app->singleton(CreateEntry::class, CreateEntry::class);
|
||||||
$this->app->singleton(UpdateEntry::class, UpdateEntry::class);
|
$this->app->singleton(UpdateEntry::class, UpdateEntry::class);
|
||||||
$this->app->singleton(SetHeadDirector::class, SetHeadDirector::class);
|
$this->app->singleton(SetHeadDirector::class, SetHeadDirector::class);
|
||||||
$this->app->singleton(NominationEnsembleController::class, ScobdaNominationEnsembleController::class);
|
$this->app->bind(NominationEnsembleController::class, ScobdaNominationEnsembleController::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,29 @@
|
||||||
<x-layout.app>
|
<x-layout.app>
|
||||||
<x-slot:page_title>Nomination Ensembles</x-slot:page_title>
|
<x-slot:page_title>Nomination Ensembles</x-slot:page_title>
|
||||||
|
|
||||||
|
<x-layout.page-section-container>
|
||||||
|
<x-layout.page-section>
|
||||||
|
<x-slot:section_name>Add Nomination Ensemble</x-slot:section_name>
|
||||||
|
<x-form.form method="POST" action="{{ route('nomination.admin.ensemble.store') }}" class="mb-6 mt-3">
|
||||||
|
<x-form.body-grid columns="9" class="max-w-full">
|
||||||
|
<x-form.field name="ensemble_name" label_text="Ensemble Name" colspan="3" autofocus />
|
||||||
|
<x-form.field name="entry_deadline" label_text="Entry Deadline" type="date" colspan="2"/>
|
||||||
|
<x-form.field name="min_grade" label_text="Minimum Grade" type="number" colspan="2"/>
|
||||||
|
<x-form.field name="max_grade" label_text="Maximum Grade" type="number" colspan="2"/>
|
||||||
|
<x-form.field name="max_nominations" label_text="Maximum Nominations per School" type="number" colspan="3"/>
|
||||||
|
<x-form.field name="target_size" label_text="Target Ensemble Size" type="number" colspan="3"/>
|
||||||
|
<x-form.select name="rounding_direction" colspan="3">
|
||||||
|
<x-slot:label>Round</x-slot:label>
|
||||||
|
<option value="up">Up</option>
|
||||||
|
<option value="down">Down</option>
|
||||||
|
</x-form.select>
|
||||||
|
<x-form.textarea name="instrument_list" colspan="9">
|
||||||
|
<x-slot:label>Instrument List (comma separated)</x-slot:label>
|
||||||
|
</x-form.textarea>
|
||||||
|
</x-form.body-grid>
|
||||||
|
<x-form.footer submit-button-text="Create Ensemble"/>
|
||||||
|
</x-form.form>
|
||||||
|
</x-layout.page-section>
|
||||||
|
</x-layout.page-section-container>
|
||||||
|
|
||||||
</x-layout.app>
|
</x-layout.app>
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,12 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
use App\Http\Controllers\NominationEnsembles\NominationEnsembleController;
|
||||||
|
use App\Http\Middleware\CheckIfAdmin;
|
||||||
|
use Illuminate\Support\Facades\Route;
|
||||||
|
|
||||||
|
Route::middleware(['auth', 'verified', CheckIfAdmin::class])->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');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
@ -10,6 +10,7 @@ require __DIR__.'/admin.php';
|
||||||
require __DIR__.'/judging.php';
|
require __DIR__.'/judging.php';
|
||||||
require __DIR__.'/tabulation.php';
|
require __DIR__.'/tabulation.php';
|
||||||
require __DIR__.'/user.php';
|
require __DIR__.'/user.php';
|
||||||
|
require __DIR__.'/nominationEnsemble.php';
|
||||||
|
|
||||||
Route::get('/test', [TestController::class, 'flashTest'])->middleware('auth', 'verified');
|
Route::get('/test', [TestController::class, 'flashTest'])->middleware('auth', 'verified');
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue