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); }
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); }