From 02e44a4363795e90945aa0d9d816ad66f24d99d5 Mon Sep 17 00:00:00 2001 From: Torsten Date: Wed, 16 Aug 2017 14:00:25 +0200 Subject: [PATCH] Cached ranking, for rankscore, rankscore_total, dayscore winner --- .../app/Http/Controllers/UsersController.php | 87 +++++++++++-------- .../resources/views/users/ranking2.blade.php | 9 +- 2 files changed, 60 insertions(+), 36 deletions(-) diff --git a/pfosten/app/Http/Controllers/UsersController.php b/pfosten/app/Http/Controllers/UsersController.php index 059ea982..c18ca9ad 100755 --- a/pfosten/app/Http/Controllers/UsersController.php +++ b/pfosten/app/Http/Controllers/UsersController.php @@ -306,11 +306,28 @@ class UsersController extends Controller $roundtipps[$key]['user_id'] = $entry->user_id; $roundtipps[$key]['rankscore']=0; - $roundtipps[$key]['dayscore']=Tipp::getDayScoreLocal($entry->game_score1,$entry->game_score2,$entry->tipp_score1,$entry->tipp_score2,$entry->joker); + $roundtipps[$key]['dayscore']=0; $roundtipps[$key]['earliest_kickoff']=$entry->game_kickoff; } - $roundtipps[$key]['rankscore']+=Tipp::getScoreLocal($entry->game_score1,$entry->game_score2,$entry->tipp_score1,$entry->tipp_score2,$entry->joker); + $roundtipps[$key]['rankscore']+=Tipp::getScoreLocal($entry->game_score1,$entry->game_score2,$entry->tipp_score1,$entry->tipp_score2,$entry->joker); // Für alle 4 Spiele + if ($user_id==1) {Log::info("Calculating rankscore for round_id ".$round_id." to ".$roundtipps[$key]['rankscore']);} + + + // START: Add Up Dayscore Win Values for each round + $tipp_hits = intdiv($roundtipps[$key]['dayscore'],100); + $joker_value = $roundtipps[$key]['dayscore'] - $tipp_hits*100; + + $current_score=Tipp::getDayScoreLocal($entry->game_score1,$entry->game_score2,$entry->tipp_score1,$entry->tipp_score2,$entry->joker); + $current_tipp_hit = intdiv($current_score,100); + $current_joker_value = $current_score - ( $current_tipp_hit * 100 ); + + $hits_total = $tipp_hits + $current_tipp_hit; + $current_joker_value = max($joker_value,$current_joker_value); + $roundtipps[$key]["dayscore"] = $hits_total * 100 + $current_joker_value; + // END: Add Up Dayscore Win Values + + if ($entry->game_kickoff < $roundtipps[$key]['earliest_kickoff']) { $roundtipps[$key]['earliest_kickoff']=$entry->game_kickoff; } @@ -318,14 +335,6 @@ class UsersController extends Controller array_push($roundtipps[$key]['results'], $entry->game_score1, $entry->game_score2); } - //dd($roundtipps); - //dd($user_ids); - //dd($round_ids); - - //Log::info($user_ids); - //Log::info($round_ids); - - Log::info("max_round_id=".$max_round_id); // Aufbau der Rankingliste in rankingDisplay, sowie aufaddieren der jeweiligen Punkte. @@ -335,28 +344,30 @@ class UsersController extends Controller $payout_sum = 0; foreach($round_ids as $round_id) { + if ($user_id==1) { Log::info("Accumulating display data for round_id ".$round_id); } $key = $round_id . "_" . $user_id; - if ($user_id==1) { Log::info("Processing round: ".$round_id);} + if ($user_id==1) { Log::info("Dayscore round: ".$round_id." = ".$roundtipps[$key]['dayscore']);} + if ($user_id==1) { Log::info("Rankscore round: ".$round_id." = ".$roundtipps[$key]['rankscore']);} if (!array_key_exists($user_id, $rankingDisplay)) { $rankingDisplay[$user_id] = array(); + $rankingDisplay[$user_id]["user_id"] = $user_id; - /* - if ($user_id==1) { - Log::info("round_id=".$round_id.", rankscore from var=".$roundtipps[$key]["rankscore"]. ", old_total=" .$rankscore_total); - } - */ - $rankingDisplay[$user_id]["user_id"]=$user_id; - $rankingDisplay[$user_id]["dayscore"] = 0; - $rankingDisplay[$user_id]["user_name"] = $roundtipps[$key]["user_name"]; + $rankingDisplay[$user_id]["user_name"] = $roundtipps[$key]["user_name"]; $rankingDisplay[$user_id]["is_dayscorewinner"] = 0; + + if ($user_id==1) { Log::info("rankscore after user init for display round_id ".$round_id." = ".$roundtipps[$key]["rankscore"]);} } - $rankingDisplay[$user_id]["rankscore"] = $rankscore_total + $roundtipps[$key]["rankscore"]; $rankscore_total=$rankingDisplay[$user_id]["rankscore"]; + $rankingDisplay[$user_id]["rankscore"] = $roundtipps[$key]["rankscore"]; // Summe Rangwertung alle 4 Spiele/Tipps der letzten durchlaufenen Runde, NICHT in init stellen !! + $rankingDisplay[$user_id]["dayscore"] = $roundtipps[$key]["dayscore"]; // Dayscore der letzten durchlaufenen Runde, NICHT in init stellen !! - $rankingDisplay[$user_id]["tipp_score1"] = $roundtipps[$key]["tipps"][0]; - $rankingDisplay[$user_id]["tipp_score2"] = $roundtipps[$key]["tipps"][1]; - $rankingDisplay[$user_id]["joker1"] = $roundtipps[$key]["tipps"][2]; + $rankingDisplay[$user_id]["rankscore_total"] = $rankscore_total + $roundtipps[$key]["rankscore"]; + $rankscore_total=$rankingDisplay[$user_id]["rankscore_total"]; + + $rankingDisplay[$user_id]["tipp_score1"] = $roundtipps[$key]["tipps"][0]; + $rankingDisplay[$user_id]["tipp_score2"] = $roundtipps[$key]["tipps"][1]; + $rankingDisplay[$user_id]["joker1"] = $roundtipps[$key]["tipps"][2]; $rankingDisplay[$user_id]["result_score1"] = $rankingDisplay[$user_id]["result_score2"] = $roundtipps[$key]["results"][1]; @@ -366,10 +377,9 @@ class UsersController extends Controller $roundtipps[$key]["tipps"][0],$roundtipps[$key]["tipps"][1], $roundtipps[$key]["tipps"][2]); - $rankingDisplay[$user_id]["tipp_score3"] = $roundtipps[$key]["tipps"][3]; $rankingDisplay[$user_id]["tipp_score4"] = $roundtipps[$key]["tipps"][4]; - $rankingDisplay[$user_id]["joker2"] = $roundtipps[$key]["tipps"][5]; + $rankingDisplay[$user_id]["joker2"] = $roundtipps[$key]["tipps"][5]; // Determine coloration for Game2 $rankingDisplay[$user_id]["trendCol2"] = Tipp::trendCol($roundtipps[$key]["results"][2],$roundtipps[$key]["results"][3], $roundtipps[$key]["tipps"][3],$roundtipps[$key]["tipps"][4], @@ -390,11 +400,8 @@ class UsersController extends Controller $rankingDisplay[$user_id]["trendCol4"] = Tipp::trendCol($roundtipps[$key]["results"][6],$roundtipps[$key]["results"][7], $roundtipps[$key]["tipps"][9],$roundtipps[$key]["tipps"][10], $roundtipps[$key]["tipps"][11]); - } - //TODO: Loop: Determine DayScoreWinner, Rank (multiple identical possible), Sort rankingDisplay array - } $userids = array_keys($rankingDisplay); @@ -402,33 +409,45 @@ class UsersController extends Controller $games=Game::where('round_id','=',$max_round_id)->get(); $all_rounds=Round::where('season_id','=',$currentSeason->id)->get(); - + // Sortieren nach Rankscore $entries = array(); usort($rankingDisplay, array($this,"cmp2")); foreach($rankingDisplay as $entry) { array_push($entries, $entry); } - $rankingDisplay = $entries; + // Ranknr identifizieren, inkl, geteilter Rankplatzierungen $lastScore=-1; $lastrank=0; + $highest_dayscore=0; foreach($rankingDisplay as $key => $user) { - if ($user["rankscore"]==$lastScore) { + if ($user["rankscore_total"]==$lastScore) { $rankingDisplay[$key]["rank"] = $lastrank; } else { $lastrank +=1; $rankingDisplay[$key]["rank"] = $lastrank; - $lastScore = $user["rankscore"]; + $lastScore = $user["rankscore_total"]; + } + + if ($user["dayscore"]>$highest_dayscore) { $highest_dayscore = $user["dayscore"]; } + } + + Log::info("Searching for dayscore winners. Highest dayscore=".$highest_dayscore); + // is_dayscorewinner setzen (Tagessieg) + foreach($rankingDisplay as $key => $user) { + if ($user["dayscore"]>0 && $user["dayscore"]==$highest_dayscore) { + $rankingDisplay[$key]["is_dayscorewinner"]=1; + Log::info("Setting dayscorewin for player:".$user["user_name"]); } } - + return view('users.ranking2', compact('all_rounds','rankingDisplay','userids','round','games')); } public function cmp2($user1, $user2) { - return ($user1['rankscore'] < $user2['rankscore']); + return ($user1['rankscore_total'] < $user2['rankscore_total']); } diff --git a/pfosten/resources/views/users/ranking2.blade.php b/pfosten/resources/views/users/ranking2.blade.php index 0144c8df..0294d5d3 100755 --- a/pfosten/resources/views/users/ranking2.blade.php +++ b/pfosten/resources/views/users/ranking2.blade.php @@ -131,15 +131,19 @@ Joker - + +
+ Debug (DayWinScore) +
+ @foreach($rankingDisplay as $entry)   {{ $entry["rank"] }} 
 {{ $entry["user_name"] }}   +  {{ $entry["rankscore_total"] }}   {{ $entry["rankscore"] }}  -  {{ $entry["dayscore"] }}   {{ $entry["tipp_score1"] }}   {{ $entry["tipp_score2"] }} 
@@ -152,6 +156,7 @@  {{$entry["tipp_score7"] }}   {{$entry["tipp_score8"] }} 
+  {{ $entry["dayscore"] }}  @endforeach