Ejemplo n.º 1
0
        private async Task <bool> UpdateStatsAsync(SimplifiedMatchSubmissionView view, SummonerInfoEntity userPlayer)
        {
            var registeredPlayersTask  = _summonerInfoRepository.GetAllValidSummonersAsync();
            var previousListedMvpsTask = _matchMvpRepository.ReadAllForTeamScheduleId(view.ScheduleId);
            var registeredPlayers      = (await registeredPlayersTask).ToDictionary(x => x.SummonerName.ToLowerInvariant(), x => x);
            var mvpDetails             = (await previousListedMvpsTask).OrderBy(x => x.Game).ToDictionary(x => x.Game, x => x);

            var insertMvpDetails = new List <MatchMvpEntity>();
            var updateMvpDetails = new List <MatchMvpEntity>();

            foreach (var gameInfo in view.GameDetails)
            {
                if (gameInfo.HomeTeamForfeit || gameInfo.AwayTeamForfeit)
                {
                    continue;
                }

                var matchList = new List <MatchDetailContract>();

                CollectMatchMvpData(view, registeredPlayers, gameInfo, mvpDetails, updateMvpDetails, insertMvpDetails, userPlayer);
            }

            var insertMvpResult = await _matchMvpRepository.CreateAsync(insertMvpDetails);

            var updateMvpResult = await _matchMvpRepository.UpdateAsync(updateMvpDetails);

            return(insertMvpResult && updateMvpResult);
        }
Ejemplo n.º 2
0
        public async Task <SummonerTeamCreationView> GetSummonersToCreateTeamAsync()
        {
            var seasonInfo = await _seasonInfoRepository.GetCurrentSeasonAsync();

            var summonersTask = _summonerInfoRepository.GetAllValidSummonersAsync();
            var rostersTask   = _teamRosterRepository.GetAllTeamsAsync(seasonInfo.Id);

            var summoners = (await summonersTask).Where(x => x.IsValidPlayer).ToList();
            var rosters   = await rostersTask;

            var view = new SummonerTeamCreationView
            {
                SummonerInfos = new List <SummonerInfo>()
            };
            var unassignedPlayers = summoners.ToList();

            foreach (var roster in rosters)
            {
                var summonerIds = (await _teamPlayerRepository.ReadAllForRosterAsync(roster.Id)).Select(x => x.SummonerId);
                foreach (var summonerId in summonerIds)
                {
                    var summoner = summoners.FirstOrDefault(x => x.Id == summonerId);
                    if (summoner != null)
                    {
                        unassignedPlayers.Remove(summoner);
                    }
                }
            }

            foreach (var unassignedPlayer in unassignedPlayers)
            {
                var info = new SummonerInfo
                {
                    SummonerId   = unassignedPlayer.Id,
                    SummonerName = unassignedPlayer.SummonerName
                };
                view.SummonerInfos.Add(info);
            }
            return(view);
        }
        public async Task <SummonerRequestView> GetRequestedSummonersAsync(UserEntity user)
        {
            var seasonInfo = await _seasonInfoRepository.GetCurrentSeasonAsync();

            var summoners      = (await _summonerInfoRepository.GetAllValidSummonersAsync()).ToList();
            var summonerEntity = summoners.First(x => x.UserId == user.Id);

            summoners.Remove(summonerEntity);
            if (summonerEntity.IsAcademyPlayer)
            {
                summoners = summoners.Where(x => x.IsAcademyPlayer).ToList();
            }

            var requestedSummonerEntities = (await _requestedSummonerRepository.ReadAllForSummonerAsync(summonerEntity.Id, seasonInfo.Id)).ToList();
            var view = new SummonerRequestView
            {
                SummonerName  = summonerEntity.SummonerName,
                SummonerNames = summoners.Select(x => x.SummonerName).OrderBy(x => x).ToList(),
                Names         = GetSelectListItems(summoners.Select(x => x.SummonerName).OrderBy(x => x))
            };

            if (!requestedSummonerEntities.Any())
            {
                var count = RequestingSummonerCount;
                if (summonerEntity.IsAcademyPlayer)
                {
                    count = 1;
                }
                view.RequestedSummoners.AddRange(AddEmptyRequestedSummonerViews(count));
            }
            else
            {
                var requestedSummoners = new List <RequestedSummoner>();

                foreach (var entity in requestedSummonerEntities)
                {
                    var summoner = summoners.First(x => x.Id == entity.SummonerRequestedId);
                    requestedSummoners.Add(new RequestedSummoner
                    {
                        SummonerName = summoner.SummonerName,
                        IsSub        = entity.IsSub
                    });
                }

                view.RequestedSummoners = requestedSummoners;

                var missingCount = RequestingSummonerCount - view.RequestedSummoners.Count;
                if (summonerEntity.IsAcademyPlayer)
                {
                    missingCount = 1 - view.RequestedSummoners.Count;
                }

                view.RequestedSummoners.AddRange(AddEmptyRequestedSummonerViews(missingCount));
            }

            if (!summonerEntity.IsAcademyPlayer)
            {
                SetIsSubToElements(view);
            }

            return(view);
        }