private string GetGameUrl(Interface.Data.Game game, PlayerDataResponse playerInfo)
        {
            var player = _gameRepository.Players.Single(x => x.Id == playerInfo.id.Value);
            var brand  = _gameRepository.Brands
                         .Include(x => x.BrandGameProviderConfigurations)
                         .Include(x => x.BrandGameProviderConfigurations.Select(c => c.GameProviderConfiguration))
                         .Single(x => x.Id == player.BrandId);
            var providers    = _gameRepository.GameProviders.Where(x => x.IsActive).ToList();
            var gameProvider = providers.Single(x => x.Id == game.GameProviderId);

            var url =
                brand.BrandGameProviderConfigurations.First(bc => bc.GameProviderId == gameProvider.Id)
                .GameProviderConfiguration.Endpoint;

            var token = playerInfo.token;

            if (string.IsNullOrEmpty(url))
            {
                throw new ArgumentException();
            }

            url = url + game.EndpointPath;
            url = url.Replace("{GameName}", game.Name);
            url = url.Replace("{GameId}", game.ExternalId);
            url = url.Replace("{GameProviderId}", gameProvider.Id.ToString());

            var limiter = url.IndexOf('?') > 0 ? '&' : '?';

            return(url + limiter + "token=" + token);
        }
Esempio n. 2
0
        public void CreateGame(GameDTO game)
        {
            using (var scope = CustomTransactionScope.GetTransactionScope())
            {
                var validationResult = new AddGameValidator(_repository)
                                       .Validate(game);

                if (!validationResult.IsValid)
                {
                    throw new RegoValidationException(validationResult);
                }

                var gameEntity = new Interface.Data.Game
                {
                    Id             = game.Id ?? Guid.NewGuid(),
                    CreatedDate    = DateTime.UtcNow,
                    CreatedBy      = _actorInfoProvider.Actor.UserName,
                    Name           = game.Name,
                    Code           = game.Code,
                    Type           = game.Type,
                    GameProviderId = game.ProductId,
                    IsActive       = game.Status == "Active",
                    EndpointPath   = game.Url,
                    ExternalId     = game.ExternalId
                };

                _repository.Games.Add(gameEntity);
                _repository.SaveChanges();
                _eventBus.Publish(new GameCreated
                {
                    Id             = gameEntity.Id,
                    GameProviderId = gameEntity.GameProviderId,
                    Name           = gameEntity.Name,
                    Code           = gameEntity.Code,
                    Url            = gameEntity.EndpointPath,
                    CreatedDate    = gameEntity.CreatedDate,
                    CreatedBy      = gameEntity.CreatedBy
                });
                scope.Complete();
            }
        }