From 98ebdb6c93b519e82bc6c521f394427b9980ad29 Mon Sep 17 00:00:00 2001 From: Torsten Date: Sat, 30 Sep 2017 13:14:46 +0200 Subject: [PATCH] Show player matches for single userId --- .../Controllers/Leagues/LeaguesController.php | 22 ++++++++- pfosten/app/leagues/League.php | 45 +++++++++++++++++++ pfosten/app/leagues/Match.php | 34 +++++++++++--- pfosten/resources/views/layouts/nav.blade.php | 2 +- .../resources/views/leagues/chart.blade.php | 34 ++++++++++++++ .../views/leagues/playermatches.blade.php | 30 +++++++++++++ pfosten/routes/web.php | 5 ++- 7 files changed, 163 insertions(+), 9 deletions(-) create mode 100755 pfosten/resources/views/leagues/chart.blade.php create mode 100755 pfosten/resources/views/leagues/playermatches.blade.php diff --git a/pfosten/app/Http/Controllers/Leagues/LeaguesController.php b/pfosten/app/Http/Controllers/Leagues/LeaguesController.php index 3b8e23fd..8a94d03e 100644 --- a/pfosten/app/Http/Controllers/Leagues/LeaguesController.php +++ b/pfosten/app/Http/Controllers/Leagues/LeaguesController.php @@ -198,11 +198,31 @@ class LeaguesController extends Controller $matchesTotal[$match->round_id][$league->id] = $lg; } } - } + } return view ('leagues.matches', compact('season', 'matchesTotal','leagues','leagueNames','roundNames')); } + public static function showLeagueRanking($rank, $maxRoundId=-1) { + $season = Season::getCurrent(); + $leagues = array_reverse(League::getRanking($rank)); + $leagueNames = League::getNames(); + $userNames = User::getNames(); + + $leagueScores = League::getRanking($rank); + return view ('leagues.chart',compact('season','leagues', 'leagueNames', 'userNames','leagueScores')); + } + + public static function showSingleUserMatches($userId) { + $season = Season::getCurrent(); + $leagueNames = League::getNames(); + $roundNames = Round::getNames(); + $matches = Match::getMatchResultsForUser($userId); + + $user = User::where('id','=', $userId)->first(); + $userName = $user->name; + return view ('leagues.playermatches',compact('season','leagueNames','roundNames','matches','userName')); + } } \ No newline at end of file diff --git a/pfosten/app/leagues/League.php b/pfosten/app/leagues/League.php index 3f393f9f..84cd2b24 100644 --- a/pfosten/app/leagues/League.php +++ b/pfosten/app/leagues/League.php @@ -5,6 +5,7 @@ namespace App\Leagues; use Illuminate\Database\Eloquent\Model; use App\Season; +use App\Round; use DB; use Log; @@ -59,4 +60,48 @@ class League extends Model return $league->start_round_id; } + + + public static function cmpScore($score1, $score2) { + return ($score1[1] < $score2[1]); + } + + public static function getRanking($rank) { + $season = Season::getCurrent(); + $leagues = League::where('rank','=',$rank)->where('season_id','=', $season->id)->orderBy('id')->get(); + + error_log("LeagueCount:".sizeof($leagues)); + + $leagueScores=array(); + foreach($leagues as $league) { + $memberIds = LeagueMember::getMembers($league->id); + + $memberScores =array(); + foreach($memberIds as $memberId) { + $tpl=array(); + $tpl[0]=$memberId; + $tpl[1]=0; + $tpl[2]=0; // goals + $tpl[3]=0; // countergoals + $memberScores[$memberId] = $tpl; + } + + $matches=Match::getMatchResults($league->id,-1); + foreach ($matches as $match) { + if (!Round::isCompleted($match->round_id)) { continue; } + $memberScores[$match->user1_id][1] += $match->user1_league_score; + $memberScores[$match->user1_id][2] += $match->user1_rankscore; + $memberScores[$match->user1_id][3] += $match->user2_rankscore; + $memberScores[$match->user2_id][1] += $match->user2_league_score; + $memberScores[$match->user2_id][2] += $match->user2_rankscore; + $memberScores[$match->user2_id][3] += $match->user1_rankscore; + } + usort($memberScores, array('App\Leagues\League','cmpScore')); + + $leagueScores[$league->id]=$memberScores; + + } + return $leagueScores; + } + } diff --git a/pfosten/app/leagues/Match.php b/pfosten/app/leagues/Match.php index e2ca1c44..241db1a8 100644 --- a/pfosten/app/leagues/Match.php +++ b/pfosten/app/leagues/Match.php @@ -155,13 +155,9 @@ class Match extends Model public static function getMatchResults($leagueId, $maxRoundId=-1) { $roundtipps = Tipp::getRoundTipps($maxRoundId); $roundtipps = $roundtipps["roundtipps"]; - $startRoundId = League::getStartRoundId($leagueId); $matches = Match::getLeagueMatches($leagueId, $maxRoundId); - if ($maxRoundId==-1) {$maxRoundId=Round::getLastLockedRoundId();} - - $matchResults=array(); - $members = LeagueMember::getMembers($leagueId); + if ($maxRoundId==-1) {$maxRoundId=Round::getLastCompleteRoundId();} foreach($matches as $key => $match) { if (!Round::isCompleted($match->round_id)) continue; @@ -175,9 +171,12 @@ class Match extends Model $matches[$key]->user1_rankscore = $user1_score; $matches[$key]->user2_rankscore = $user2_score; + //$matches[$key]->user1_hits = $roundtipps[$user1_key][] + if ($user1_score > $user2_score) { $matches[$key]->user1_league_score = 3; $matches[$key]->user2_league_score = 0; + } else if ($user1_score < $user2_score){ $matches[$key]->user1_league_score = 0; @@ -187,8 +186,31 @@ class Match extends Model $matches[$key]->user2_league_score = 1; } -// error_log($match->user1_id." vs ".$match->user2_id. " =>" . $user1_score.":".$user2_score); } return $matches; } + + public static function getMatchResultsForUser($userId, $maxRoundId=-1) { + $season = Season::getCurrent(); + $leagues = League::where('season_id','=',$season->id)->get(); + + $matchList=array(); + + foreach($leagues as $league) { + $member=LeagueMember::where('league_id','=',$league->id)->where('user_id','=',$userId)->first(); + if ($member) { + // $userId ist member dieser League + $matchResults = Match::getMatchResults($league->id,$maxRoundId); + foreach($matchResults as $result) { + if ($result->user1_id == $userId || $result->user2_id==$userId) { + array_push($matchList, $result); + } + } + } + } + + return $matchList; + + } + } diff --git a/pfosten/resources/views/layouts/nav.blade.php b/pfosten/resources/views/layouts/nav.blade.php index f1b95277..6e5685d7 100644 --- a/pfosten/resources/views/layouts/nav.blade.php +++ b/pfosten/resources/views/layouts/nav.blade.php @@ -25,7 +25,7 @@ Spieler-Liga   diff --git a/pfosten/resources/views/leagues/chart.blade.php b/pfosten/resources/views/leagues/chart.blade.php new file mode 100755 index 00000000..97ac86b0 --- /dev/null +++ b/pfosten/resources/views/leagues/chart.blade.php @@ -0,0 +1,34 @@ +@extends('layouts.layout') + +@section('content') +
+
+ +

{{ $season->name }}

+ + @foreach($leagueScores as $leagueId => $playerTuples) +

{{ $leagueNames[$leagueId] }}

+ + + + + + + + + + @foreach($playerTuples as $player) + + + + + + @endforeach + +
PunkteSpielerTorverhältnis
  {{$player[1]}}    {{$userNames[$player[0]]}}    {{$player[2]}}:{{$player[3]}}  
+

 

+ + @endforeach +
+
+@endsection diff --git a/pfosten/resources/views/leagues/playermatches.blade.php b/pfosten/resources/views/leagues/playermatches.blade.php new file mode 100755 index 00000000..f4c8292d --- /dev/null +++ b/pfosten/resources/views/leagues/playermatches.blade.php @@ -0,0 +1,30 @@ +@extends('layouts.layout') + +@section('content') +
+
+ +

{{ $userName }}

+ + + + + + + + + + @foreach($matches as $match) + + + + + + + + + @endforeach +
Liga / GruppeRundeSpieler 1Spieler 2
{{$leagueNames[$match->league_id]}}{{$roundNames[$match->round_id]}}{{$match->user1_name}}{{$match->user2_name}}
+
+
+@endsection diff --git a/pfosten/routes/web.php b/pfosten/routes/web.php index 3596f311..5047792b 100644 --- a/pfosten/routes/web.php +++ b/pfosten/routes/web.php @@ -76,4 +76,7 @@ Route::get('/home', 'UsersController@main')->name('home'); Route::get('/league_settings/season={season_id}','Leagues\LeaguesController@index'); Route::get('/league_settings/create_league/start_round_id={start_round_id}/round_count={round_count}/league_mode={league_mode}','Leagues\LeaguesController@createLeagues'); -Route::get('/league_show_rounds/league_rank={league_rank}/round_id={round_id}','Leagues\LeaguesController@showLeagueRounds'); \ No newline at end of file +Route::get('/league_show_rounds/league_rank={league_rank}/round_id={round_id}','Leagues\LeaguesController@showLeagueRounds'); +Route::get('/league/show/rank={rank}/max_round_id={maxRoundId}','Leagues\LeaguesController@showLeagueRanking'); + +Route::get('/league/showSingleUserMatches/user_id={userId}','Leagues\LeaguesController@showSingleUserMatches'); \ No newline at end of file