Model refactoring, reducing number of static methods

This commit is contained in:
Torsten 2017-06-28 18:05:52 +02:00
parent 92a07b1684
commit bc5ec5edce
7 changed files with 145 additions and 48 deletions

View file

@ -70,7 +70,6 @@ class TippsController extends Controller
}
$rounds = null;

View file

@ -119,7 +119,6 @@ class UsersController extends Controller
if($round_id==-1) {
$round_id = Round::getLastLockedRoundId();
//Log::info("Last complete round id=" . $round_id);
if ($round_id==-1) {return redirect("/");}
}
@ -130,8 +129,29 @@ class UsersController extends Controller
$users = DB::table('users')->where('deleted',null)->get();
foreach($users as $user) {
$user->totalScore=0;
$user->dayScore=0;
$user->totalScore=0; // Summe Ranglisten-Punkte bis heute
$user->dayScore=0; // Heute gemachte Ranglisten-Punkte
$user->dayWinScore=0; // Tagessieg-Punkte, nur exakte Ergebnisse zählen
$user->dayWinHighestJoker=0; // Tagessieg-Punkte, nur exakte Ergebnisse zählen
$round=Round::where('id','=',$round_id)->first();
$games=Game::where('round_id','=',$round->id);
foreach($games as $game) {
$tipp = Tipps::where([['game_id','=',$game->id],['user_id','=',$user->id]])->first();
if ($tipp) {
$score = Tipp::getDayScoreLocal($game->score1,$game->score2,$tipp->score1,$tipp->score2,$tipp->joker);
$scorevalue = intdiv($score,100); // Jokeranteil herausrechnen
$jokervalue = $score - $scorevalue*100;
$user->dayWinScore+=$scorevalue;
if ( $jokervalue > $user->dayWinHighestJoker ) {
$user->dayWinHighestJoker=$jokervalue;
}
} else {
Log::info("No tipp found for game_id=".$game->id.", user_id=".$user->id);
}
}
}
$rounds=Round::where([['season_id','=',$currentSeason->id],['id','<=',$round_id]])->orderBy('id')->get();
@ -141,12 +161,13 @@ class UsersController extends Controller
$index=0;
foreach($games as $game) {
foreach($users as $user) {
$tipp = Tipp::where('game_id','=',$game->id)->where('user_id','=',$user->id)->first();
if ($tipp) {
// Ranglisten-Punkte berechen
$score = Tipp::getScoreLocal($game->score1,$game->score2,$tipp->score1,$tipp->score2,$tipp->joker);
$user->totalScore += $score;
if ($game->round_id == $round_id) {
$user->dayScore += $score;
}
@ -155,7 +176,6 @@ class UsersController extends Controller
$tippDisplay[$user->id][$game->id][1] = $tipp->score2 ==-1 ? 'x' : $tipp->score2;
$tippDisplay[$user->id][$game->id][2] = $tipp->joker;
}
}
$index+=1;
}

View file

@ -15,7 +15,7 @@ class Tipp extends Model
// get tendency Color
public static function getCol($user_id,$game_id) {
$tipp=Tipp::getTipp($user_id,$game_id);
$tipp = Tipp::getTipp($user_id,$game_id);
$game = Game::where('id',$tipp->game_id)->first();
$tippTendenz = $tipp->score1 - $tipp->score2;
@ -62,12 +62,9 @@ class Tipp extends Model
if ($tippTendenz==$gameTendenz) { $score=1; }
if ( ($tipp1 == $goals1) && ($tipp2 == $goals2) ) {
$bonus = max(0,$goals1 + $goals2 - 3);
$score= 2 + $bonus;
}
if ($joker==true) {
@ -79,6 +76,18 @@ class Tipp extends Model
return $score;
}
// Bei Tagessieg gilt nur wer am meisten genau richtig getippt hat,
// Bei Gleichstand wer den höchsten Jokersieg hat ( Jokersieg mit mehr Toren zählt mehr)
public static function getDayScoreLocal($goals1, $goals2, $tipp1, $tipp2, $joker) {
if ($tipp1==-1||$tipp2==-1||$goals1==-1||$goals2==-1) { return 0; } // Ungetippt oder Spiel hat noch kein Ergebnis
if ( ($tipp1 != $goals1) || ($tipp2 != $goals2) ) return 0;
$jokerValue=0;
if ($joker) {
$jokerValue = max(0, $goals1 + $goals2 - 3) + 1;
}
return 100 + $jokerValue;
}
public static function getTippScore($user_id,$game_id, $team=0) {

View file

@ -129,4 +129,8 @@ class User extends Authenticatable
return $dbDate;
}
public function hello() {
return "Hello";
}
}