public function postCompetition(Request $request) { // validate inputs $this->validate($request, ['start' => 'required|date|after:today', 'number' => 'required|integer', 'length' => 'required|integer']); // if correct -> get all periods of the competition $periods = Period::all(); // delete all periods foreach ($periods as $period) { $period->delete(); } // determine start of period 1 and the competition $date = new DateTime($request->start); // number of periods $number = $request->number; // length of 1 period $length = $request->length; // create periods based on information from above for ($i = 1; $i <= $number; $i++) { $period = new Period(); $period->id = $i; $period->start = $date; $period->save(); // add the period length to the datetime variable $period->end = $date->add(new DateInterval('P' . $length . 'D')); $period->save(); } $title = 'admin competition'; // get competition information $numberOfCodes = WinningCode::all()->count(); $numberOfRewards = Reward::all()->count(); $numberOfUsers = User::all()->count(); $numberOfWinners = Winner::all()->count(); // general start of the competition $start = Period::orderBy('start', 'asc')->get()->first()->start; // general end of the competition $end = Period::orderBy('end', 'desc')->get()->first()->end; // number of periods in the competition $periodCount = Period::all()->count(); return view('admin.home', compact('title', 'numberOfCodes', 'numberOfRewards', 'numberOfUsers', 'numberOfWinners', 'start', 'end', 'periodCount')); }