/** * Bootstrap the application services. * * @return void */ public function boot() { // Create a new waiting room when a Contest is saved. Contest::created(function ($contest) { $waitingRoom = new WaitingRoom(); $waitingRoom->contest_id = $contest->getKey(); // Default sign up period of one week. $waitingRoom->signup_start_date = Carbon::now(); $waitingRoom->signup_end_date = Carbon::now()->addWeeks(1)->endOfDay(); $waitingRoom->save(); }); }
/** * Run the database seeds. * * @return void */ public function run() { // Add Admin Users $admins = ['*****@*****.**', '*****@*****.**', '*****@*****.**', '*****@*****.**', '*****@*****.**', '*****@*****.**', '*****@*****.**', '*****@*****.**']; foreach ($admins as $admin) { Artisan::call('add:user', ['email' => $admin, '--role' => 'admin']); } // Add Contestant Users $waitingRooms = WaitingRoom::all(); $totalRooms = count($waitingRooms); $seedContestants = $this->northstar->getAllUsers(['limit' => 100]); foreach ($seedContestants as $contestant) { $index = mt_rand(0, $totalRooms - 1); // Using first or create if someone is already an admin. $user = User::firstOrCreate(['id' => $contestant->id]); $user->waitingRooms()->save($waitingRooms[$index]); } }
/** * Split the waiting room. * * @param \Illuminate\Http\Request $request * @param \Gladiator\Models\WaitingRoom $room * @return \Illuminate\Http\Response */ public function split(SplitRequest $request, WaitingRoom $room) { $split = $room->getSplit($request->competition_max); $contest = Contest::find($room->contest_id); $room->saveSplit($contest, $split, $request); return redirect()->route('contests.show', $room->contest_id)->with('status', 'Waiting Room has been split!'); }