90 lines
2.9 KiB
PHP
90 lines
2.9 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Admin;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Models\ScoringGuide;
|
|
use App\Models\SubscoreDefinition;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Auth;
|
|
use function abort;
|
|
use function dd;
|
|
use function request;
|
|
use function sendMessage;
|
|
|
|
class ScoringGuideController extends Controller
|
|
{
|
|
public function index()
|
|
{
|
|
if (! Auth::user()->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');
|
|
}
|
|
}
|