예제 #1
0
        public PlayerStatsViewModel Submit(DateTime queryDate, string playerSlug)
        {
            var result = new PlayerStatsViewModel
            {
                AsOf = queryDate
            };
            var strDate = Utility.UniversalDate(queryDate);
            var qp      = new System.Text.StringBuilder();

            qp.Append("ranking=baseball_daily_player_hitter_ranking");
            qp.Append($"&season_id=mlb-{queryDate.Year}&on={strDate}&interval_type=regularseason");
            qp.Append($"&player_id={playerSlug}");
            var httpWebRequest = CreateRankingsRequest(
                queryParms: qp.ToString());

            var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();

            using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
            {
                var json = streamReader.ReadToEnd();
                var dto  = JsonConvert.DeserializeObject <PlayerRankingDto>(
                    json);

                Teams = dto.Teams;
                //PlayerStats = dto.PlayerStats;
            }
            result.Player = new Domain.Player
            {
                Name = playerSlug
            };

            return(result);
        }
예제 #2
0
 public ActionResult <object> Post([FromBody] PlayerStatsViewModel user)
 {
     if (user == null)
     {
         var toSerialize = new MessageHelpers <PlayerStatsViewModel>()
         {
             Status = 404,
             Data   = null
         };
         return(JsonConvert.SerializeObject(toSerialize));
     }
     else
     {
         try
         {
             var id          = _playerStatsServiceAsync.Add(user);
             var toSerialize = new MessageHelpers <PlayerStatsViewModel>()
             {
                 Status = 200,
                 Data   = null
             };
             return(JsonConvert.SerializeObject(toSerialize));
         }
         catch
         {
             var toSerialize = new MessageHelpers <PlayerStatsViewModel>()
             {
                 Status = 502,
                 Data   = null
             };
             return(JsonConvert.SerializeObject(toSerialize));
         }
     }
 }
예제 #3
0
 private void SetPitcherStats(PlayerStatsViewModel result)
 {
     if (PlayerStats[0].Era != null)
     {
         result.Era = Decimal.Parse(PlayerStats[0].Era);
     }
     if (PlayerStats[0].Wins != null)
     {
         result.Wins = Int32.Parse(PlayerStats[0].Wins);
     }
     if (PlayerStats[0].HitsAllowed != null)
     {
         result.HitsAllowed = Int32.Parse(
             PlayerStats[0].HitsAllowed);
     }
     if (PlayerStats[0].InningsPitched != null)
     {
         result.InningsPitched = Decimal.Parse(
             PlayerStats[0].InningsPitched);
     }
     if (PlayerStats[0].OpponentsBattingAverage != null)
     {
         result.OpponentsBattingAverage = Decimal.Parse(
             PlayerStats[0].OpponentsBattingAverage);
     }
     if (PlayerStats[0].GroundBallToFlyBallRatio != null)
     {
         result.GroundBallTpFlyBallRatio = Decimal.Parse(
             PlayerStats[0].GroundBallToFlyBallRatio);
     }
 }
예제 #4
0
        public PlayerStatsViewModel GetLastCards()
        {
            var gameId = _gameService.GetCurrentGameId(_playerName);

            if (gameId < 0)
            {
                return(null);
            }
            var  playerStatsViewModel = new PlayerStatsViewModel();
            var  cards = new List <List <byte> >();
            var  flags = _roundService.GetFlagsIsGiveCard(gameId, false).ToList();
            bool isFinishRound;

            do
            {
                var cardsLine = _roundService.GetCardsForPlayers(gameId, flags).ToList();
                for (int i = 0; i < cardsLine.Count(); i++)
                {
                    if (cards.Count() < cardsLine.Count())
                    {
                        cards.Add(new List <byte>());
                    }
                    cards[i].Add(cardsLine[i]);
                }
                playerStatsViewModel.Scores = _roundService.GetScores(gameId).ToList();
                flags         = _roundService.GetFlagsIsGiveCard(gameId, false).ToList();
                isFinishRound = _roundService.GetIsRoundFinished(gameId, flags);
            }while (!isFinishRound);
            playerStatsViewModel.Cards           = cards;
            playerStatsViewModel.IsFinishedRound = true;
            return(playerStatsViewModel);
        }
        public PlayerStatsView()
        {
            InitializeComponent();

            if (ApiInformation.IsApiContractPresent("Windows.Phone.PhoneContract", 1, 0))
            {
                StatusBar.SetIsVisible(this, false);
            }

            DataContext = new PlayerStatsViewModel();
            viewModel   = DataContext as PlayerStatsViewModel;
        }
예제 #6
0
        private decimal BattingAverage(
            PlayerStatsViewModel statsFrom,
            PlayerStatsViewModel statsTo)
        {
            var atBats = statsTo.AtBats - statsFrom.AtBats;

            if (atBats == 0)
            {
                return(0.0M);
            }
            var hits = statsTo.Hits - statsFrom.Hits;

            return(hits / atBats);
        }
예제 #7
0
파일: Views.cs 프로젝트: Artiavis/EloCheck
            public PlayerStatsView Load(PlayerStatsViewModel vm)
            {
                Name.Text = vm.Name;
                S1Medal.SetCurrentValue(Image.SourceProperty, vm.S1Medal);
                S2Medal.SetCurrentValue(Image.SourceProperty, vm.S2Medal);
                S3Medal.SetCurrentValue(Image.SourceProperty, vm.S3Medal);
                TierDivision.Text = vm.Tier + " " + vm.Division;
                TotalGames.Text   = (vm.Wins + vm.Losses).ToString();
                TotalWins.Text    = vm.Wins.ToString();
                TotalLosses.Text  = vm.Losses.ToString();

                PlayerData.ItemsSource = vm.RankedStats;

                return(this);
            }
예제 #8
0
 private void SetBatterStats(PlayerStatsViewModel result)
 {
     if (PlayerStats[0].AtBats != null)
     {
         result.AtBats = Decimal.Parse(PlayerStats[0].AtBats);
     }
     if (PlayerStats[0].Hits != null)
     {
         result.Hits = Int32.Parse(PlayerStats[0].Hits);
     }
     if (PlayerStats[0].BattingAverage != null)
     {
         result.BattingAverage = Decimal.Parse(PlayerStats[0].BattingAverage);
     }
 }
예제 #9
0
        public IActionResult Index(string pid)
        {
            var err = new PlayerStatsViewModel {
                Name = "Not Found", FullName = "-"
            };
            var result = _api.GetStats(pid);

            if (result is OkObjectResult)
            {
                var ok          = result as OkObjectResult;
                var playerStats = JsonConvert.DeserializeObject <PlayerStatsViewModel>(ok.Value.ToString());
                return(View(playerStats));
            }

            return(View(err));
        }
예제 #10
0
        public async Task <ActionResult <object> > PutAsync(int id, [FromBody] PlayerStatsViewModel user)
        {
            if (user == null || user.Id != id)
            {
                var toSerialize = new MessageHelpers <PlayerStatsViewModel>()
                {
                    Status = 404,
                    Data   = null
                };
                return(JsonConvert.SerializeObject(toSerialize));
            }
            else
            {
                try
                {
                    int retVal = await _playerStatsServiceAsync.Update(user);

                    if (retVal == 0 && retVal > 0)
                    {
                        var toSerialize = new MessageHelpers <PlayerStatsViewModel>()
                        {
                            Status = 200,
                            Data   = null
                        };
                        return(JsonConvert.SerializeObject(toSerialize));
                    }
                    else
                    {
                        var toSerialize = new MessageHelpers <PlayerStatsViewModel>()
                        {
                            Status = 404,
                            Data   = null
                        };
                        return(JsonConvert.SerializeObject(toSerialize));
                    }
                }
                catch
                {
                    var toSerialize = new MessageHelpers <PlayerStatsViewModel>()
                    {
                        Status = 502,
                        Data   = null
                    };
                    return(JsonConvert.SerializeObject(toSerialize));
                }
            }
        }
예제 #11
0
        public PlayerStatsViewModel Submit(DateTime queryDate, string playerSlug)
        {
            var result = new PlayerStatsViewModel
            {
                AsOf = queryDate
            };
            var strDate = Utility.UniversalDate(queryDate);
            var qp      = new System.Text.StringBuilder();

            qp.Append($"season_id=mlb-{queryDate.Year}");
            //qp.Append("&interval_type=today");
            qp.Append($"&on={strDate}");
            qp.Append($"&player_id={playerSlug}");
            var httpWebRequest = CreateRequest(
                sport: "baseball",
                league: "mlb",
                apiRequest: "player_season_stats",
                queryParms: qp.ToString());

            var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();

            using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
            {
                var json = streamReader.ReadToEnd();

                var dto = JsonConvert.DeserializeObject <PlayerStatsDto>(json);

                Teams       = dto.Teams;
                PlayerStats = dto.PlayerStats;
            }
            result.Player = new Domain.Player
            {
                Name = playerSlug
            };
            if (PlayerStats.Count == 1)
            {
                SetBatterStats(result);
                SetPitcherStats(result);
            }
            else
            {
                //Console.WriteLine($"No Stats for {playerSlug} : {strDate}");
            }

            return(result);
        }
예제 #12
0
        public PlayerStatsViewModel GetStartCards()
        {
            var gameId = _gameService.GetCurrentGameId(_playerName);

            if (gameId < 0)
            {
                return(null);
            }
            var playerStatsViewModel = new PlayerStatsViewModel()
            {
                IsFinishedRound = false,
                Cards           = _roundService.GetStartCards(gameId),
                Scores          = _roundService.GetScores(gameId).ToList()
            };

            return(playerStatsViewModel);
        }
        public ActionResult Player(int?id)
        {
            if (!id.HasValue)
            {
                return(RedirectToAction("Index", "Home"));
            }

            Player player = playerService.Get(id.Value);

            if (player == null)
            {
                return(RedirectToAction("Index", "Home"));
            }

            PlayerStatsViewModel model = new PlayerStatsViewModel()
            {
                Player = player,
                CurrentSeasonFixtureStats = this.statsReportingService.GetPlayerFixtureStatsForSeason(id.Value, competitionService.GetCurrentSeason().Id),
                SeasonStats = this.statsReportingService.GetPlayerAllSeasonStats(id.Value),
                CareerStats = this.statsReportingService.GetPlayerCareerStatsByPlayerId(id.Value)
            };

            return(View(model));
        }
예제 #14
0
        public static PlayerStatsViewModel GetPlayerModel(SymHackUser user, ModuleManager moduleManager)
        {
            var player = new PlayerStatsViewModel()
            {
                Email = user.Email,
                Name  = user.FirstName + " " + user.LastName,
                Stats = new List <ModuleGroupViewModel>()
            };

            var modules  = moduleManager.GetAllModules();
            var initials = modules.Where(m => m.Prerequisite == null).ToList();

            var    moduleGroups = new List <OrderedDictionary>();
            string type         = "";

            foreach (var module in initials)
            {
                type = module.Type.Name;
                var next   = moduleManager.GetNextModuleById(module.Id);
                var group  = new OrderedDictionary();
                var status = moduleManager.GetUserModuleByModuleAndUserId(module.Id, user.Id).Status.Status;
                group.Add(module.Title, status.Equals("Not Started") ? -0.1 : (status.Equals("In Progress") ? 1 : 2));
                while (next != null)
                {
                    status = moduleManager.GetUserModuleByModuleAndUserId(next.Id, user.Id).Status.Status;
                    group.Add(next.Title, status.Equals("Not Started") ? -0.1 : (status.Equals("In Progress") ? 1 : 2));
                    next = moduleManager.GetNextModuleById(next.Id);
                }
                moduleGroups.Add(group);
            }

            int index = 0;

            foreach (var moduleGroup in moduleGroups)
            {
                var labels = moduleGroup.Keys;
                var data   = moduleGroup.Values;

                string[] colourList = new string[moduleGroup.Count],
                backgroundColours = new string[moduleGroup.Count],
                borderColours     = new string[moduleGroup.Count];
                for (int i = 0; i < moduleGroup.Count; i++)
                {
                    colourList[i]        = ChartColouring.ColourList[i % ChartColouring.ColourList.Length];
                    backgroundColours[i] =
                        ChartColouring.BackgroundColour[i % ChartColouring.BackgroundColour.Length];
                    borderColours[i] = ChartColouring.BorderColour[i % ChartColouring.BorderColour.Length];
                }

                player.Stats.Add(new ModuleGroupViewModel()
                {
                    Id               = index++,
                    Type             = type,
                    Labels           = labels.Cast <string>().ToArray(),
                    Data             = data.Cast <double>().ToArray(),
                    ColourList       = colourList,
                    BackgroundColour = backgroundColours,
                    BorderColour     = borderColours
                });
            }

            return(player);
        }
예제 #15
0
        public ActionResult GetPlayerStatistics(string playerId)
        {
            using (Profiler.Step("Calculating Player Statistics"))
            {
                if (playerId == null)
                {
                    return(new HttpStatusCodeResult(403, "Invalid request"));
                }
                else
                {
                    var playerCollection = Dbh.GetCollection <Player>("Players");
                    var matches          =
                        Dbh.GetCollection <Match>("Matches")
                        .FindAll()
                        .SetSortOrder(SortBy.Ascending("GameOverTime"))
                        .ToList()
                        .Where(match => match.ContainsPlayer(playerId))
                        .Where(match => match.GameOverTime != DateTime.MinValue);

                    var playedMatches = matches as List <Match> ?? matches.ToList();
                    var player        = playerCollection.FindOne(Query.EQ("_id", BsonObjectId.Parse(playerId)));
                    var stats         = new PlayerStatsViewModel
                    {
                        Player        = player,
                        PlayedMatches = playedMatches.OrderByDescending(x => x.GameOverTime),
                        LatestMatch   = playedMatches.Last()
                    };

                    if (playedMatches.Count == 0)
                    {
                        return(Json(stats, JsonRequestBehavior.AllowGet));
                    }

                    var bff                  = StatsControllerHelpers.GetBestFriendForever(playerId, playedMatches);
                    var rbff                 = StatsControllerHelpers.GetRealBestFriendForever(playerId, playedMatches);
                    var eae                  = StatsControllerHelpers.GetEvilArchEnemy(playerId, playedMatches);
                    var preferredColor       = StatsControllerHelpers.GetPreferredColor(playerId, playedMatches);
                    var winningColor         = StatsControllerHelpers.GetWinningColor(playerId, playedMatches);
                    var highestRating        = StatsControllerHelpers.GetHighestRating(playerId, playedMatches);
                    var lowestRating         = StatsControllerHelpers.GetLowestRating(playerId, playedMatches);
                    var longestWinningStreak = StatsControllerHelpers.GetPlayersLongestWinningStreak(playerId, playedMatches);
                    var longestLosingStreak  = StatsControllerHelpers.GetPlayersLongestLosingStreak(playerId, playedMatches);

                    foreach (var match in playedMatches)
                    {
                        stats.Played++;
                        stats.Won     = match.WonTheMatch(playerId) ? ++stats.Won : stats.Won;
                        stats.Lost    = !match.WonTheMatch(playerId) ? ++stats.Lost : stats.Lost;
                        stats.Ranking = playerCollection.FindAll()
                                        .SetSortOrder(SortBy.Descending("Rating"))
                                        .Where(x => x.Played > 0 && x.Deactivated == false)
                                        .ToList()
                                        .FindIndex(x => x.Id == playerId) + 1;

                        stats.TotalNumberOfPlayers = (int)playerCollection.Count(Query.GT("Played", 0));
                    }

                    stats.Bff = bff.OrderByDescending(x => x.Value.Occurrences)
                                .Select(x => x.Value)
                                .FirstOrDefault();
                    stats.Rbff = rbff.OrderByDescending(x => x.Value.Occurrences).Select(x => x.Value).FirstOrDefault();
                    stats.Eae  = eae.OrderByDescending(x => x.Value.Occurrences)
                                 .ThenByDescending(x => x.Value.GoalDiff)
                                 .Select(x => x.Value)
                                 .FirstOrDefault();
                    stats.PreferredColor = preferredColor.OrderByDescending(x => x.Value.Occurrences)
                                           .Select(x => x.Value)
                                           .FirstOrDefault();
                    stats.WinningColor = winningColor.OrderByDescending(x => x.Value.Occurrences)
                                         .Select(x => x.Value)
                                         .FirstOrDefault();
                    stats.HighestRating        = highestRating;
                    stats.LowestRating         = lowestRating;
                    stats.LongestWinningStreak = longestWinningStreak;
                    stats.LongestLosingStreak  = longestLosingStreak;

                    return(Json(stats, JsonRequestBehavior.AllowGet));
                }
            }
        }
예제 #16
0
        public List <PlayerStatsViewModel> GenerateStandings(List <Player> players, List <Game> games)
        {
            List <PlayerStatsViewModel> standings = new List <PlayerStatsViewModel>();

            //List<Game> playerGames;
            int gamesPlayed;
            int wins;
            int ties;
            int losses;
            int scoresForward;
            int scoresAgainst;
            int points;


            foreach (var player in players)
            {
                wins          = 0;
                ties          = 0;
                losses        = 0;
                scoresForward = 0;
                scoresAgainst = 0;
                points        = 0;
                var playerGames = games.FindAll(g => (g.HomePlayerId == player.Id || g.AwayPlayerId == player.Id) && g.HomePlayerScore.HasValue && g.AwayPlayerScore.HasValue);
                gamesPlayed = playerGames.Count;
                foreach (var game in playerGames)
                {
                    if (game.HomePlayerId == player.Id)
                    {
                        scoresForward += game.HomePlayerScore.Value;
                        scoresAgainst += game.AwayPlayerScore.Value;

                        if (game.HomePlayerScore.Value > game.AwayPlayerScore.Value)
                        {
                            wins++;
                            points += 3;
                        }
                        else if (game.AwayPlayerScore.Value > game.HomePlayerScore.Value)
                        {
                            losses++;
                        }
                        else
                        {
                            ties++;
                            points += 1;
                        }
                    }
                    else
                    {
                        scoresAgainst += game.HomePlayerScore.Value;
                        scoresForward += game.AwayPlayerScore.Value;

                        if (game.AwayPlayerScore.Value > game.HomePlayerScore.Value)
                        {
                            wins++;
                            points += 3;
                        }
                        else if (game.HomePlayerScore.Value > game.AwayPlayerScore.Value)
                        {
                            losses++;
                        }
                        else
                        {
                            ties++;
                            points += 1;
                        }
                    }
                }

                var tmpPlayerstatsViewModel = new PlayerStatsViewModel()
                {
                    Player        = player,
                    GamesPlayed   = gamesPlayed,
                    Wins          = wins,
                    Ties          = ties,
                    Losses        = losses,
                    ScoresForward = scoresForward,
                    ScoresAgainst = scoresAgainst,
                    Points        = points
                };
                standings.Add(tmpPlayerstatsViewModel);
            }

            standings = standings.OrderByDescending(s => s.Points).ThenByDescending(s => s.ScoresForward - s.ScoresAgainst).ThenByDescending(s => s.ScoresForward).ToList();
            return(standings);
        }