コード例 #1
0
        public async Task <GameListResponse> GameList(GamesRequest request)
        {
            var player = await _gameQueries.GetPlayerByUsernameAsync(request.PlayerUsername);

            if (player == null)
            {
                throw new RegoValidationException(ErrorMessagesEnum.PlayerWithRequestedIdDoesntExist.ToString());
            }

            var brandId = _gameQueries.GetPlayerData(player.Id).BrandId;

            if (brandId == null)
            {
                throw new RegoValidationException(ErrorMessagesEnum.NoBrandRelatedToThisPlayer.ToString());
            }

            var lobby = _gameQueries.GetLobby(brandId, request.IsForMobile);

            if (lobby == null)
            {
                throw new RegoValidationException(ErrorMessagesEnum.LobbyIsMissingForThisBrand.ToString());
            }

            var data = await _productOperations.GetProductsForPlayerAsync(lobby.Id, player.Id, request.LobbyUrl, request.PlayerIpAddress, request.UserAgent);

            return(new GameListResponse
            {
                GameProviders = data.products.groups.SelectMany(x => x.games).GroupBy(x => x.providercode, x => x)
                                .Select(gameProvider => new GameProviderData
                {
                    Code = gameProvider.Key,
                    Games = data.products.groups
                            .SelectMany(group => group.games)
                            .Where(game => game.providercode == gameProvider.Key)
                            .Select(game => new GameData
                    {
                        Id = game.id,
                        Name = game.name,
                        Url = game.url
                    }).ToList()
                }).ToList()
            });
        }