79 lines
2.7 KiB
PHP
79 lines
2.7 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Admin;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Http\Requests\EditSplitScoreDefinitionRequest;
|
|
use App\Models\Audition;
|
|
use App\Models\SplitScoreDefinition;
|
|
use Illuminate\Http\Request;
|
|
|
|
class SplitScoreDefinitionController extends Controller
|
|
{
|
|
public function index()
|
|
{
|
|
$splitScores = SplitScoreDefinition::all();
|
|
|
|
return view('admin.split_score_definitions.index', compact('splitScores'));
|
|
}
|
|
|
|
public function create()
|
|
{
|
|
$availableAuditions = Audition::doesntHave('splitScoreDefinition')->get();
|
|
|
|
return view('admin.split_score_definitions.create', compact('availableAuditions'));
|
|
}
|
|
|
|
public function store(Request $request)
|
|
{
|
|
$validated = $request->validate([
|
|
'audition_id' => 'required|exists:auditions,id|unique:split_score_definitions,audition_id',
|
|
]);
|
|
$newSplit = SplitScoreDefinition::create([
|
|
'audition_id' => $validated['audition_id'],
|
|
'splits' => [],
|
|
]);
|
|
|
|
return redirect()->route('admin.split_score_definitions.edit', $newSplit)->with('success',
|
|
'Split score definition created');
|
|
}
|
|
|
|
public function edit(SplitScoreDefinition $splitScoreDefinition)
|
|
{
|
|
$subscores = $splitScoreDefinition->audition->scoringGuide->subscores;
|
|
$judges = $splitScoreDefinition->audition->room->judges;
|
|
|
|
return view('admin.split_score_definitions.edit', compact('splitScoreDefinition', 'subscores', 'judges'));
|
|
}
|
|
|
|
public function update(EditSplitScoreDefinitionRequest $request, SplitScoreDefinition $splitScoreDefinition)
|
|
{
|
|
$savedSplits = $splitScoreDefinition->splits;
|
|
if ($request->validated()['split'] ?? false) {
|
|
$newSplit = [];
|
|
$submittedSplitData = $request->validated()['split'];
|
|
foreach ($submittedSplitData as $splitName => $splitData) {
|
|
$name = $splitName;
|
|
$judges = array_values($splitData['judges'] ?? []);
|
|
$subscores = array_values($splitData['subscores'] ?? []);
|
|
$newSplit[$name] = ['judges' => $judges, 'subscores' => $subscores];
|
|
}
|
|
$splitScoreDefinition->splits = $newSplit;
|
|
$splitScoreDefinition->save();
|
|
|
|
}
|
|
if ($request->validated()['new_split'] ?? false) {
|
|
$savedSplits[$request->validated()['new_split']] = ['judges' => [], 'subscores' => []];
|
|
$splitScoreDefinition->splits = $savedSplits;
|
|
$splitScoreDefinition->save();
|
|
}
|
|
|
|
return redirect()->route('admin.split_score_definitions.edit', $splitScoreDefinition);
|
|
}
|
|
|
|
public function destroy(SplitScoreDefinition $scoreDefinition)
|
|
{
|
|
|
|
}
|
|
}
|