public async Task GetMatchService_Cheсk() { IMatchListService matchListService = GetMatchListService(); await matchListService.CreateMatch("user"); var matchIds = await matchListService.GetMatches("user", 10, 0); var matchId = matchIds.SingleOrDefault().MatchId; var matchService = await matchListService.GetMatchService("user", matchId); matchService.Should().NotBeNull(); }
public async Task GetMatchService_Cheсk_Not_This_User_and_Match() { IMatchListService matchListService = GetMatchListService(); await matchListService.CreateMatch("user"); var matchIds = await matchListService.GetMatches("user", 10, 0); var matchId = matchIds.SingleOrDefault().MatchId; new Func <Task>(() => matchListService.GetMatchService("otherUser", "otherId")) .ShouldThrow <KeyNotFoundException>(); }
public async Task <IEnumerable <PlayerStatsModel> > GetPlayersStatsModelInner(string userId, int count, int skip, SortForPlayerStats sort, string player = null, string playerUserId = null) { var players = player == null ? null : Enumerable.Repeat(player, 1); var total = await _matchListService.GetMatchCount(userId, players); var mathes = await _matchListService.GetMatches(userId, total == 0? 1 : total, 0, players); var result = new Dictionary <string, PlayerStatsModel>(); foreach (var matchInfo in mathes) { var matchService = await _matchListService.GetMatchService(userId, matchInfo.MatchId); var matchState = await matchService.GetStateAsync(); if (matchState.State != MatchState.NotStarted) { var playersStats = await matchService.GetPlayersMatchStats(); if (((player == null || matchInfo.FirstPlayer == player) && playerUserId == null) || (playerUserId != null && matchState.FirstPlayerUserId == playerUserId)) { var firstPlayerCurrentStats = new PlayerStatsModel { Player = matchInfo.FirstPlayer, Matches = 1, Completed = matchInfo.State == MatchState.Completed ? 1 : 0, Won = matchInfo.Winner == Player.First ? 1 : 0, Lost = matchInfo.Winner == Player.Second ? 1 : 0, AggregatedMatchStats = playersStats.FirstPlayer }; if (matchInfo.FirstPlayer != null) { result[matchInfo.FirstPlayer] = result.TryGetValue(matchInfo.FirstPlayer, out var firstPlayerOldStats) ? firstPlayerOldStats + firstPlayerCurrentStats : firstPlayerCurrentStats; } } if (((player == null || matchInfo.SecondPlayer == player) && playerUserId == null) || (playerUserId != null && matchState.SecondPlayerUserId == playerUserId)) { var secondPlayerCurrentStats = new PlayerStatsModel { Player = matchInfo.SecondPlayer, Matches = 1, Completed = matchInfo.State == MatchState.Completed ? 1 : 0, Won = matchInfo.Winner == Player.Second ? 1 : 0, Lost = matchInfo.Winner == Player.First ? 1 : 0, AggregatedMatchStats = playersStats.SecondPlayer }; if (matchInfo.SecondPlayer != null) { result[matchInfo.SecondPlayer] = result.TryGetValue(matchInfo.SecondPlayer, out var secondPlayerOldStats) ? secondPlayerOldStats + secondPlayerCurrentStats : secondPlayerCurrentStats; } } } } return(result.Values.BySortForPlayerStats(sort).Skip(skip).Take(count)); }
public async Task <IActionResult> AddPastMatch(AddPostMatchViewModel addMatchViewModel) { var matchScore = new List <SetModel>(); if (ModelState.IsValid) { if (addMatchViewModel.FirstPlayerUserId && addMatchViewModel.SecondPlayerUserId) { ModelState.AddModelError(nameof(addMatchViewModel.FirstPlayerUserId), "First Player UserId is on"); ModelState.AddModelError(nameof(addMatchViewModel.SecondPlayerUserId), "Second Player UserId is on"); } matchScore.Add(new SetModel { Score = new Score { FirstPlayer = addMatchViewModel.FirstPlayerSet1, SecondPlayer = addMatchViewModel.SecondPlayerSet1 } }); if (addMatchViewModel.FirstPlayerSet2 != null) { matchScore.Add(new SetModel { Score = new Score { FirstPlayer = addMatchViewModel.FirstPlayerSet2 ?? 0, SecondPlayer = addMatchViewModel.SecondPlayerSet2 ?? 0 } }); } if (addMatchViewModel.FirstPlayerSet3 != null) { matchScore.Add(new SetModel { Score = new Score { FirstPlayer = addMatchViewModel.FirstPlayerSet3 ?? 0, SecondPlayer = addMatchViewModel.SecondPlayerSet3 ?? 0 } }); } if (addMatchViewModel.FirstPlayerSet4 != null) { matchScore.Add(new SetModel { Score = new Score { FirstPlayer = addMatchViewModel.FirstPlayerSet4 ?? 0, SecondPlayer = addMatchViewModel.SecondPlayerSet4 ?? 0 } }); } if (addMatchViewModel.FirstPlayerSet5 != null) { matchScore.Add(new SetModel { Score = new Score { FirstPlayer = addMatchViewModel.FirstPlayerSet5 ?? 0, SecondPlayer = addMatchViewModel.SecondPlayerSet5 ?? 0 } }); } } if (!ModelState.IsValid) { return(View(addMatchViewModel)); } var matchId = await _matchListService.CreateMatch(UserId); var matchService = await _matchListService.GetMatchService(UserId, matchId); await matchService.AddEventAsync(new PastMatchEvent { OccuredAt = DateTime.UtcNow, Date = addMatchViewModel.Date + (addMatchViewModel.Time?.TimeOfDay ?? TimeSpan.Zero), FirstPlayer = addMatchViewModel.FirstPlayer, SecondPlayer = addMatchViewModel.SecondPlayer, FirstPlayerUserId = addMatchViewModel.FirstPlayerUserId ? UserId : null, SecondPlayerUserId = addMatchViewModel.SecondPlayerUserId ? UserId : null, MatchScore = matchScore }); return(RedirectToAction("Index", "Home")); }