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>();
        }
Esempio n. 3
0
        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));
        }
Esempio n. 4
0
        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"));
        }