コード例 #1
0
ファイル: BaseController.cs プロジェクト: dmullan17/FPL
        public async Task <CompleteEntryHistory> GetCompleteEntryHistory(CompleteEntryHistory completeEntryHistory, int teamId)
        {
            HttpClientHandler handler = new HttpClientHandler();

            var response = await _httpClient.GetAuthAsync(CreateHandler(handler), $"entry/{teamId}/history/");

            response.EnsureSuccessStatusCode();

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

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

            List <EntryHistory> currentSeasonEntryHistory = new List <EntryHistory>();
            int totalTransfers    = 0;
            int totalTransferCost = 0;

            foreach (JObject result in currentSeasonEntryHistoryJSON)
            {
                EntryHistory eh = result.ToObject <EntryHistory>();
                currentSeasonEntryHistory.Add(eh);
                totalTransfers    += eh.event_transfers;
                totalTransferCost += eh.event_transfers_cost;
            }

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

            List <BasicChip> chipsUsed = new List <BasicChip>();

            foreach (JObject result in chipsUsedJSON)
            {
                BasicChip bc = result.ToObject <BasicChip>();
                chipsUsed.Add(bc);
            }

            completeEntryHistory.CurrentSeasonEntryHistory = currentSeasonEntryHistory;
            completeEntryHistory.ChipsUsed          = chipsUsed;
            completeEntryHistory.TotalTransfersMade = totalTransfers;
            completeEntryHistory.TotalTransfersCost = totalTransferCost;

            return(completeEntryHistory);
        }
コード例 #2
0
ファイル: BaseController.cs プロジェクト: dmullan17/FPL
        public async Task <EntryHistory> AddExtraDatatoEntryHistory(EntryHistory entryHistory, CompleteEntryHistory completeEntryHistory)
        {
            var response = await _httpClient.GetAsync("bootstrap-static/");

            response.EnsureSuccessStatusCode();

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

            var totalPlayersJson = AllChildren(JObject.Parse(content))
                                   .First(c => c.Type == JTokenType.Integer && c.Path.Contains("total_players"));

            //EntryHistory entryHistory = new EntryHistory();

            int totalPlayers = totalPlayersJson.ToObject <int>();

            entryHistory.TotalPlayers = totalPlayers;

            var gwRankPercentile      = 0m;
            var overallRankPercentile = 0m;

            if (entryHistory.rank != null)
            {
                gwRankPercentile = Math.Round(((decimal)entryHistory.rank / (decimal)totalPlayers) * 100m, 2);

                if (gwRankPercentile < 1)
                {
                    entryHistory.GwRankPercentile = 1;
                }
                else
                {
                    entryHistory.GwRankPercentile = Convert.ToInt32(Math.Ceiling(gwRankPercentile));
                }
            }

            if (entryHistory.overall_rank != null)
            {
                overallRankPercentile = Math.Round(((decimal)entryHistory.overall_rank / (decimal)totalPlayers) * 100m, 2);

                if (overallRankPercentile < 1)
                {
                    entryHistory.TotalRankPercentile = 1;
                }
                else
                {
                    entryHistory.TotalRankPercentile = Convert.ToInt32(Math.Ceiling(overallRankPercentile));
                }
            }

            if (completeEntryHistory.CurrentSeasonEntryHistory.Count() > 1)
            {
                var lastEventIndex = completeEntryHistory.CurrentSeasonEntryHistory.Count() - 2;
                entryHistory.LastEventOverallRank = completeEntryHistory.CurrentSeasonEntryHistory[lastEventIndex].overall_rank;
            }

            return(entryHistory);
        }
コード例 #3
0
ファイル: MyTeamController.cs プロジェクト: dmullan17/FPL
        public async Task <IActionResult> Index()
        {
            ViewData["Title"] = "My Team";

            var viewModel = new MyTeamViewModel();

            HttpClientHandler handler = new HttpClientHandler();

            int currentGwId = await GetCurrentGameWeekId();

            if (Request.Cookies["teamId"] == null)
            {
                teamId = await GetTeamId();
            }
            else
            {
                teamId = Convert.ToInt32(Request.Cookies["teamId"]);
            }

            var response = await _httpClient.GetAuthAsync(CreateHandler(handler), $"my-team/{teamId}");

            if (!response.IsSuccessStatusCode)
            {
                return(RedirectToAction("Error", "Home"));
            }

            //look for 404 error here

            response.EnsureSuccessStatusCode();

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

            var myTeamJSON = JObject.Parse(content);

            MyTeam myTeam = JsonConvert.DeserializeObject <MyTeam>(myTeamJSON.ToString());

            //var teamPicksJSON = AllChildren(myTeamJSON)
            //    .First(c => c.Type == JTokenType.Array && c.Path.Contains("picks"))
            //    .Children<JObject>();

            //JObject transfersObject = (JObject)myTeamJSON["transfers"];
            //TransferInfo transferInfo = transfersObject.ToObject<TransferInfo>();

            List <Pick>           teamPicks         = new List <Pick>();
            List <Pick>           teamPicksLastWeek = new List <Pick>();
            List <Transfer>       transfers         = new List <Transfer>();
            List <PlayerPosition> positions         = new List <PlayerPosition>();

            //foreach (JObject result in teamPicksJSON)
            //{
            //    Pick p = result.ToObject<Pick>();
            //    teamPicks.Add(p);
            //}

            if (currentGwId > 1)
            {
                teamPicksLastWeek = await GetLastWeeksTeam(teamPicksLastWeek, teamId, currentGwId);

                foreach (var p in myTeam.picks)
                {
                    if (teamPicksLastWeek.FindAll(x => x.element == p.element).Count == 0)
                    {
                        p.IsNewTransfer = true;
                    }
                }
            }

            int gameweekId  = currentGwId;
            var eventStatus = await GetEventStatus();

            var lastEvent       = eventStatus.status.LastOrDefault();
            var isEventFinished = false;

            if (lastEvent != null)
            {
                if (lastEvent.bonus_added && eventStatus.leagues != "Updating")
                {
                    isEventFinished = true;
                }
            }

            transfers = await GetTeamTransfers(teamId);

            positions = await GetPlayerPositionInfo();

            myTeam.picks = await AddPlayerSummaryDataToTeam(myTeam.picks, gameweekId);

            myTeam.picks = await AddPlayerGameweekDataToTeam(myTeam.picks, gameweekId);

            myTeam.picks = await CalculateTotalPointsContributed(myTeam.picks, transfers, gameweekId);

            myTeam.picks = myTeam.picks.OrderBy(x => x.position).ToList();
            FPLTeam teamDetails = await GetTeamInfo(teamId);

            var entryHistory = await GetEntryHistory(teamId, currentGwId);

            var completeEntryHistory = new CompleteEntryHistory();

            completeEntryHistory = await GetCompleteEntryHistory(completeEntryHistory, teamId);

            entryHistory = await AddExtraDatatoEntryHistory(entryHistory, completeEntryHistory);

            entryHistory.BuyingPower = CalculateTeamBuyingPower(myTeam.picks, entryHistory);

            viewModel.MyTeam      = myTeam;
            viewModel.CurrentGwId = gameweekId;
            //viewModel.Picks = teamPicks;
            viewModel.Team        = teamDetails;
            viewModel.Positions   = positions;
            viewModel.TotalPoints = teamDetails.summary_overall_points ?? 0;
            //viewModel.TransferInfo = transferInfo;
            viewModel.IsEventFinished      = isEventFinished;
            viewModel.EntryHistory         = entryHistory;
            viewModel.CompleteEntryHistory = completeEntryHistory;
            viewModel.EventStatus          = eventStatus;

            return(View(viewModel));
        }