public async Task <PlayGameView> GetActive(string userId) { var activeGameOfUser = await _playerInGameRepository.GetActiveByUserId(userId); if (activeGameOfUser == null) { throw new CustomServiceException("Active game is doesn`t exist! Play new game."); } var activeGame = activeGameOfUser.Game; var playerStep = await _playerStepRepository.GetByGameId(activeGame.Id); var boSteps = await _botStepRepository.GetByGameId(activeGame.Id); var playerInGame = await _playerInGameRepository.GetByGameId(activeGame.Id); var botList = boSteps .Select(x => x.Bot) .Distinct() .ToList(); var groupedBotSteps = boSteps.GroupBy(x => x.BotId); var response = new PlayGameView() { NumberOfBots = activeGame.NumberOfBots, Status = activeGame.Status, Winner = activeGame.Winner, Player = new PlayerPlayGameView() { Name = playerInGame .Select(x => x.Player.Name) .FirstOrDefault(), Cards = playerStep .Select(cardPlayGameViewItem => new CardPlayGameViewItem() { Rank = cardPlayGameViewItem.Rank, Suit = cardPlayGameViewItem.Suit }) .ToList() }, Bots = groupedBotSteps .Select(botPlayGameViewItem => new BotPlayGameViewItem { Name = botList.FirstOrDefault(bot => bot.Id == botPlayGameViewItem.Key).Name, Cards = botPlayGameViewItem .Select(cardPlayGameViewItem => new CardPlayGameViewItem() { Rank = cardPlayGameViewItem.Rank, Suit = cardPlayGameViewItem.Suit }) .ToList() }) .ToList() }; return(response); }
public async Task <GetPlayerStepsHistoryView> GetPlayerStep(Guid gameId) { var playerSteps = await _playerStepRepository.GetByGameId(gameId); if (playerSteps.Count == 0) { throw new CustomServiceException("Player steps doesn`t exist"); } var playersInGames = await _playerInGameRepository.GetByGameId(gameId); if (playersInGames.Count == 0) { throw new CustomServiceException("Score doesn`t exist"); } var playerGames = playersInGames.Select(x => x).FirstOrDefault(x => x.GameId == gameId); var player = await _playerRepository.GetById(playerGames.PlayerId); var response = new GetPlayerStepsHistoryView() { Name = player.Name, GameId = gameId, Steps = playerSteps .Select(cardGetPlayerStepsHistoryViewItem => new CardGetPlayerStepsHistoryViewItem() { Rank = cardGetPlayerStepsHistoryViewItem.Rank, Suit = cardGetPlayerStepsHistoryViewItem.Suit }) .ToList() }; return(response); }