where('season_id', '=', $activeSeason->id); foreach($rounds as $round) { $games=Game::all()->where('round_id','=',$round->id); foreach($games as $game) { // Tipp erzeugen wenn noch nicht vorhanden $tipp = DB::table('tipps')->where([ ['game_id','=',$game->id], ['user_id','=',$user_id]] )->first(); if (! $tipp) { //Log::info('Creating missing tip: game_id=' . $game->id . ", user_id=" . $user->id); $tipp=Tipp::create([ 'user_id' => $user_id, 'game_id'=> $game->id, 'score1'=> -1, 'score2'=> -1, 'joker'=> false ]); $tipp->save(); } } } } public static function createAllTips(){ $users = DB::table('users')->where('deleted',null)->get(); foreach($users as $user) { TippsController::createTipps($user->id); } } public function index() { if (Auth::guest()) { return redirect("/"); } $user = Auth::user(); $activeSeason = Season::getCurrent(); if (!$activeSeason) { return redirect('/'); } if (! User::payment_date($user->id, $activeSeason->id)) { return view('users.no_payment'); } $rounds = null; TippsController::createTipps($user->id); // ggfs. fehlender Tipp Eintraege einfügen if ($activeSeason) { $activeSeasonId = Season::getCurrent()->id; $rounds = Round::all()->where('season_id', '=', $activeSeasonId); } return view('tipps.index', compact('rounds', 'activeSeason', 'user')); } public function edit($tipp_id) { $tipp = Tipp::where('id','=',$tipp_id)->first(); $game = Game::where('id','=',$tipp->game_id)->first(); return view('tipps.edit',compact('tipp','game')); } public function store() { // Validate form $this->validate(request(), [ 'id' => 'required', 'score1' => 'required', 'score2' => 'required', 'round_id' => 'required' ]); $user=Auth::user(); // Fetch, modify, save Tipp $tipp = Tipp::where('id', request('id'))->first(); $tipp->score1= request('score1'); $tipp->score2= request('score2'); if (request()->has('joker')) { if (Round::hasLockedGame(request('round_id'))==false) { // Jokermod nur wenn Runde noch nicht begonnen hat $tipp->joker=true; } else { $tipp->joker = false; } } $tipp->save(); // Joker gesetzt ? Dann Jokerflag für alle Tipps der selben Runde entfernen if ($tipp->joker){ Log::info("Checking for joker strip"); $game=Game::where('id','=',$tipp->game_id)->first(); $round_id=$game->round_id; $games = DB::table('games')->where('round_id', '=', request('round_id'))->get(); foreach ($games as $game) { $tipp = Tipp::where('user_id', $user->id)->where('game_id', $game->id)->first(); Log::info("Testing game_id " . $game->id); if ($tipp->id != request('id')) { Log::info("Resetting game_id " . $game->id); $tipp->joker = false; $tipp->save(); } } } // Redirect to the Rounds Index return redirect('/tipps'); } }