is_admin) abort(403); $guides = ScoringGuide::orderBy('name')->get(); return view('admin.scoring.index',['guides'=>$guides]); } public function store() { if (! Auth::user()->is_admin) abort(403); request()->validate([ 'name' => ['required','unique:scoring_guides'] ]); $guide = ScoringGuide::create([ 'name' => request('name') ]); return redirect('/admin/scoring'); } public function edit(ScoringGuide $guide) { if (! Auth::user()->is_admin) abort(403); $subscores = SubscoreDefinition::where('scoring_guide_id',$guide->id)->orderBy('display_order')->get(); return view('admin.scoring.edit',['guide'=>$guide,'subscores'=>$subscores]); } public function update(ScoringGuide $guide) { if (! Auth::user()->is_admin) abort(403); request()->validate([ 'name' => ['required','unique:scoring_guides'] ]); $guide->update([ 'name' => request('name') ]); return redirect('/admin/scoring/guides/' . $guide->id . '/edit' )->with('success','Scoring guide updated'); } public function subscore_store(Request $request, ScoringGuide $guide) { if (! Auth::user()->is_admin) abort(403); if (!$guide->exists()) abort(409); $validateData = request()->validate([ 'name' => ['required'], 'max_score' => ['required','integer'], 'weight'=>['required','integer'], 'display_order'=>['required','integer'], 'tiebreak_order'=>['required','integer'], 'for_seating'=>['nullable','boolean'], 'for_advance'=>['nullable','boolean'], ]); $for_seating = $request->has('for_seating') ? (bool) $request->input('for_seating') : false; $for_advance = $request->has('for_advance') ? (bool) $request->input('for_advance') : false; $subscore = SubscoreDefinition::create([ 'scoring_guide_id' => $guide->id, 'name' => $validateData['name'], 'max_score' => $validateData['max_score'], 'weight' => $validateData['weight'], 'display_order' => $validateData['display_order'], 'tiebreak_order' => $validateData['tiebreak_order'], 'for_seating' => $for_seating, 'for_advance' => $for_advance, ]); return redirect('/admin/scoring/guides/' . $guide->id . '/edit' )->with('success','Subscore added'); } }