getStartMessage()); $activeSeason = Season::getCurrent(); $rounds = Round::all()->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(); } } } Log::info($a->getEndMessage()); } //Duplicate from Tipps model //TODO: Refactor usage to use only the Tipps version public static function createAllTips(){ $a=new TimeLogger("TippsController::createAllTipps()"); Log::info($a->getStartMessage()); $users = DB::table('users')->where('deleted',null)->get(); foreach($users as $user) { TippsController::createTipps($user->id); } Log::info($a->getEndMessage()); } 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. fehlende Tipp Eintraege einfügen $lastLockedRoundId=Round::getLastLockedRoundId(); $rounds = Round::where('season_id', '=', $activeSeason->id)->get(); $max_identical_jokertipps=$activeSeason->maxIdenticalJokertipps(); return view('tipps.index', compact('rounds', 'activeSeason', 'user', 'max_identical_jokertipps')); } 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(); $game = Game::where('id', $tipp->game_id)->first(); $round= Round::where('id',$game->round_id)->first(); //if (Round::hasLockedGame($round->id)) { return redirect('/tipps'); } // Für Schlauberger, die die Tippmaske auflassen. $tipp->score1= request('score1'); $tipp->score2= request('score2'); if (request()->has('joker')) { $tipp->joker=true; Log::info("Request has joker"); } else { $tipp->joker = false; Log::info("Request has NO joker"); } // Neuerung 2020-01-09: Joker nur speichern, wenn Ergebnis nicht schon zu oft "gejokert" wurde. Log::info("Checking for joker"); if ($tipp->joker) { Log::info("Joker found."); $jokertipps=Tipp::getJokerUsageArray($user->id,$game->round_id); $key=$tipp->score1.":".$tipp->score2; Log::info("Key(Gamescore):".$key); if (array_key_exists($key,$jokertipps)) { Log::info("Key found in jokertipps array"); $value=$jokertipps[$key]; Log::info("Stored value:".$value); $limit=Season::getCurrent()->maxIdenticalJokertipps(); if (intval($value)>=intval($limit)) { Log::info("**JOKERLIMIT REACHED FOR GAMESCORE:".$key); return redirect('/tipps/joker_impossible'); } } } $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(); } } } $tippLink="/tipps#"; $r=\App\Round::getFirstTippableRound(); if($r) $tippLink=$tippLink.$r->id; // Redirect to the Rounds Index return redirect($tippLink); } public static function joker_impossible() { return view('tipps.joker_impossible'); } }