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); }
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(); } }