Example #1
0
        public async Task <List <Team> > GetAllTeams()
        {
            var response = await _httpClient.GetAsync("bootstrap-static/");

            response.EnsureSuccessStatusCode();

            var content = await response.Content.ReadAsStringAsync();

            var allTeamsJSON = AllChildren(JObject.Parse(content))
                               .First(c => c.Type == JTokenType.Array && c.Path.Contains("teams"))
                               .Children <JObject>();

            List <Team> allTeams = new List <Team>();

            foreach (JObject result in allTeamsJSON)
            {
                Team t = result.ToObject <Team>();

                if (!allTeams.Any(x => x.id == t.id))
                {
                    allTeams.Add(t);
                }
            }

            return(allTeams);
        }
Example #2
0
        public async Task <List <Game> > PopulateGameListWithTeams(List <Game> games)
        {
            var response = await _httpClient.GetAsync("bootstrap-static/");

            response.EnsureSuccessStatusCode();

            var content = await response.Content.ReadAsStringAsync();

            var allTeamsJSON = AllChildren(JObject.Parse(content))
                               .First(c => c.Type == JTokenType.Array && c.Path.Contains("teams"))
                               .Children <JObject>();

            List <Team> allTeams = new List <Team>();

            foreach (JObject result in allTeamsJSON)
            {
                Team t = result.ToObject <Team>();
                allTeams.Add(t);
            }

            foreach (Game game in games)
            {
                foreach (Team team in allTeams)
                {
                    if (team.id == game.team_h)
                    {
                        game.HomeTeam = team;
                    }
                    else if (team.id == game.team_a)
                    {
                        game.AwayTeam = team;
                    }
                }
            }

            return(games);
        }
Example #3
0
        private async Task <List <Pick> > AddPlayerSummaryDataToTeam(List <Pick> teamPicks, int gameweekId)
        {
            var response = await _httpClient.GetAsync("bootstrap-static/");

            response.EnsureSuccessStatusCode();

            var content = await response.Content.ReadAsStringAsync();

            var allPlayersJSON = AllChildren(JObject.Parse(content))
                                 .First(c => c.Type == JTokenType.Array && c.Path.Contains("elements"))
                                 .Children <JObject>();

            List <Player> allPlayers = new List <Player>();

            foreach (JObject result in allPlayersJSON)
            {
                Player p = result.ToObject <Player>();
                allPlayers.Add(p);

                foreach (Pick pick in teamPicks)
                {
                    if (p.id == pick.element)
                    {
                        pick.player = p;
                        pick.NetProfitOnTransfer = pick.selling_price - pick.purchase_price;
                    }
                }
            }

            foreach (var player in allPlayers)
            {
                player.FplIndex = (float)player.bps + float.Parse(player.ict_index, CultureInfo.InvariantCulture.NumberFormat);
            }

            var allPlayersByBps     = allPlayers.OrderByDescending(m => m.bps).ToList();
            var allGoalkeepersByBps = allPlayers.Where(x => x.element_type == 1).OrderByDescending(m => m.bps).ToList();
            var allDefendersByBps   = allPlayers.Where(x => x.element_type == 2).OrderByDescending(m => m.bps).ToList();
            var allMidfieldersByBps = allPlayers.Where(x => x.element_type == 3).OrderByDescending(m => m.bps).ToList();
            var allForwardsByBps    = allPlayers.Where(x => x.element_type == 4).OrderByDescending(m => m.bps).ToList();

            var allPlayersByFplIndex     = allPlayers.OrderByDescending(m => m.FplIndex).ToList();
            var allGoalkeepersByFplIndex = allPlayers.Where(x => x.element_type == 1).OrderByDescending(m => m.FplIndex).ToList();
            var allDefendersByFplIndex   = allPlayers.Where(x => x.element_type == 2).OrderByDescending(m => m.FplIndex).ToList();
            var allMidfieldersByFplIndex = allPlayers.Where(x => x.element_type == 3).OrderByDescending(m => m.FplIndex).ToList();
            var allForwardsByFplIndex    = allPlayers.Where(x => x.element_type == 4).OrderByDescending(m => m.FplIndex).ToList();

            foreach (var player in allPlayers)
            {
                player.BpsRank = allPlayersByBps.IndexOf(player) + 1;
                player.FplRank = allPlayersByFplIndex.IndexOf(player) + 1;

                if (player.element_type == 1)
                {
                    player.BpsPositionRank = allGoalkeepersByBps.IndexOf(player) + 1;
                    player.FplPositionRank = allGoalkeepersByFplIndex.IndexOf(player) + 1;
                }
                else if (player.element_type == 2)
                {
                    player.BpsPositionRank = allDefendersByBps.IndexOf(player) + 1;
                    player.FplPositionRank = allDefendersByFplIndex.IndexOf(player) + 1;
                }
                if (player.element_type == 3)
                {
                    player.BpsPositionRank = allMidfieldersByBps.IndexOf(player) + 1;
                    player.FplPositionRank = allMidfieldersByFplIndex.IndexOf(player) + 1;
                }
                else if (player.element_type == 4)
                {
                    player.BpsPositionRank = allForwardsByBps.IndexOf(player) + 1;
                    player.FplPositionRank = allForwardsByFplIndex.IndexOf(player) + 1;
                }
            }

            var allTeamsJSON = AllChildren(JObject.Parse(content))
                               .First(c => c.Type == JTokenType.Array && c.Path.Contains("teams"))
                               .Children <JObject>();

            List <Team> allTeams = new List <Team>();

            foreach (JObject result in allTeamsJSON)
            {
                Team t = result.ToObject <Team>();
                allTeams.Add(t);

                foreach (Pick pick in teamPicks)
                {
                    if (t.id == pick.player.TeamId)
                    {
                        pick.player.Team = t;
                    }
                }
            }

            var response1 = await _httpClient.GetAsync("fixtures/");

            response1.EnsureSuccessStatusCode();

            var content1 = await response1.Content.ReadAsStringAsync();

            List <Game> games = JsonConvert.DeserializeObject <List <Game> >(content1);

            List <Game> fixtures = games.FindAll(x => x.started == false);
            List <Game> results  = games.FindAll(x => x.started == true);

            foreach (Pick pick in teamPicks)
            {
                pick.player.Team.Fixtures = new List <Game>();
                pick.player.Team.Results  = new List <Game>();

                foreach (Game fixture in fixtures)
                {
                    if (pick.player.TeamId == fixture.team_h || pick.player.TeamId == fixture.team_a)
                    {
                        pick.player.Team.Fixtures.Add(fixture);
                    }
                }

                foreach (Game playerFixture in pick.player.Team.Fixtures)
                {
                    foreach (Team t in allTeams)
                    {
                        if (playerFixture.team_h == t.id)
                        {
                            playerFixture.team_h_name       = t.name;
                            playerFixture.team_h_short_name = t.short_name;
                        }

                        if (playerFixture.team_a == t.id)
                        {
                            playerFixture.team_a_name       = t.name;
                            playerFixture.team_a_short_name = t.short_name;
                        }
                    }
                }

                foreach (Game result in results)
                {
                    if (pick.player.TeamId == result.team_h || pick.player.TeamId == result.team_a)
                    {
                        pick.player.Team.Results.Add(result);
                    }

                    Stat totalBps = result.stats[9];

                    List <PlayerStat> homeBps             = totalBps.h;
                    List <PlayerStat> awayBps             = totalBps.a;
                    List <PlayerStat> allPlayersInGameBps = homeBps.Concat(awayBps).ToList();
                    allPlayersInGameBps = allPlayersInGameBps.OrderByDescending(x => x.value).ToList();

                    for (var i = 0; i < allPlayersInGameBps.Count; i++)
                    {
                        if (pick.element == allPlayersInGameBps[i].element)
                        {
                            //currently only calculates players total bps ranking - need to find away to get average
                            pick.player.AvgBpsRank += allPlayersInGameBps.IndexOf(allPlayersInGameBps[i]) + 1;
                        }
                    }
                }

                foreach (Game playerResult in pick.player.Team.Results)
                {
                    foreach (Team t in allTeams)
                    {
                        if (playerResult.team_h == t.id)
                        {
                            playerResult.team_h_name       = t.name;
                            playerResult.team_h_short_name = t.short_name;
                        }

                        if (playerResult.team_a == t.id)
                        {
                            playerResult.team_a_name       = t.name;
                            playerResult.team_a_short_name = t.short_name;
                        }
                    }
                }
            }

            foreach (Pick pick in teamPicks)
            {
                if (gameweekId != 0 && pick.player.Team.Results.Count > 0)
                {
                    pick.player.MinsPlayedPercentage = Math.Round((pick.player.minutes / (pick.player.Team.Results.Count * 90m)) * 100m, 1);

                    if (pick.player.MinsPlayedPercentage > 100)
                    {
                        pick.player.MinsPlayedPercentage = 100;
                    }
                }
                else
                {
                    pick.player.MinsPlayedPercentage = 0;
                }
            }

            return(teamPicks);
        }