get(); return view('admin.ensembles.index',compact('events')); } public function store(Request $request) { if(! Auth::user()->is_admin) abort(403); request()->validate([ 'name' => 'required', 'code' => ['required','max:6'], 'event_id' => ['required','exists:events,id'] ]); Ensemble::create([ 'name' => request('name'), 'code' => request('code'), 'event_id' => request('event_id'), ]); return redirect()->route('admin.ensembles.index')->with('success','Ensemble created successfully'); } public function destroy(Request $request, Ensemble $ensemble) { if(! Auth::user()->is_admin) abort(403); $ensemble->delete(); return redirect()->route('admin.ensembles.index')->with('success', 'Ensemble deleted successfully'); } public function updateEnsemble(Request $request, Ensemble $ensemble) { if(! Auth::user()->is_admin) abort(403); request()->validate([ 'name' => 'required', 'code' => 'required|max:6' ]); $ensemble->update([ 'name' => request('name'), 'code' => request('code') ]); return redirect()->route('admin.ensembles.index')->with('success','Ensemble updated successfully'); } public function seatingLimits(Ensemble $ensemble) { $ensembles = Ensemble::with('event')->orderBy('event_id')->get(); if ($ensemble->exists()) { $ensemble->load('seatingLimits'); } return view('admin.ensembles.seatingLimits',compact('ensemble','ensembles')); } public function seatingLimitsSet(Request $request, Ensemble $ensemble) { $request->validate([ 'audition' => 'required', 'audition.*' => ['integer','min:0'] ]); foreach($ensemble->auditions as $audition) { SeatingLimit::upsert( [[ 'ensemble_id' => $ensemble->id, 'audition_id' => $audition->id, 'maximum_accepted' => $request->audition[$audition->id] ]], uniqueBy: ['ensemble_id','audition_id'], update: ['maximum_accepted'] ); } return redirect()->route('admin.ensembles.seatingLimits')->with('success', 'Seating limits set for ' . $ensemble->name); } public function updateEnsembleRank(Request $request) { if(! Auth::user()->is_admin) abort(403); $order = $request->input('order'); $eventId = $request->input('event_id'); foreach ($order as $item) { Ensemble::where('id', $item['id']) ->where('event_id', $eventId) ->update(['rank' => $item['rank']]); } return response()->json(['status' => 'success']); } }