public void ThenIAmForbiddenToAssignCurrencyToTheBrand() { ScenarioContext.Current.Should().ContainKey("brandId"); var brandId = ScenarioContext.Current.Get <Guid>("brandId"); var data = new AssignBrandCurrencyRequest { Brand = brandId }; var ex = Assert.Throws <HttpException>(() => AdminApiProxy.AssignBrandCurrency(data)); Assert.That(ex.GetHttpCode(), Is.EqualTo((int)HttpStatusCode.Forbidden)); }
public AssignBrandCurrencyResponse Assign(AssignBrandCurrencyRequest request) { VerifyPermission(Permissions.Create, Modules.SupportedCurrencies); CheckBrand(request.Brand); var validationResult = _brandCommands.ValidateThatBrandCurrencyCanBeAssigned(request); if (!validationResult.IsValid) { return(ValidationErrorResponse <AssignBrandCurrencyResponse>(validationResult)); } _brandCommands.AssignBrandCurrency(request); return(new AssignBrandCurrencyResponse { Success = true }); }
public void ThenBrandCurrencyIsSuccessfullyAdded() { ScenarioContext.Current.Should().ContainKey("licenseeId"); var licenseeId = ScenarioContext.Current.Get <Guid>("licenseeId"); BrandTestHelper.AssignLicenseeCurrency(licenseeId, "CAD"); BrandTestHelper.AssignLicenseeCurrency(licenseeId, "USD"); ScenarioContext.Current.Should().ContainKey("brandId"); var brandId = ScenarioContext.Current.Get <Guid>("brandId"); var data = new AssignBrandCurrencyRequest { Brand = brandId, Currencies = new[] { "USD", "CAD" }, BaseCurrency = "CAD", DefaultCurrency = "CAD" }; var result = AdminApiProxy.AssignBrandCurrency(data); result.Should().NotBeNull(); result.Success.Should().BeTrue(); }
public void AssignBrandCurrency(AssignBrandCurrencyRequest assignBrandCurrencyRequest) { using (var scope = CustomTransactionScope.GetTransactionScope()) { var validationResult = ValidateThatBrandCurrencyCanBeAssigned(assignBrandCurrencyRequest); if (!validationResult.IsValid) { throw new RegoValidationException(validationResult); } var brand = _repository.Brands .Include(x => x.BrandCurrencies) .Single(x => x.Id == assignBrandCurrencyRequest.Brand); if (brand.BrandCurrencies.Count == 0) { brand.CurrencySetCreated = DateTime.Now; brand.CurrencySetCreatedBy = Thread.CurrentPrincipal.Identity.Name; } else { var oldCurrencies = brand.BrandCurrencies .Where(x => !assignBrandCurrencyRequest.Currencies.Contains(x.CurrencyCode)) .ToArray(); foreach (var oldCurrency in oldCurrencies) { brand.BrandCurrencies.Remove(oldCurrency); } brand.CurrencySetUpdated = DateTime.Now; brand.CurrencySetUpdatedBy = Thread.CurrentPrincipal.Identity.Name; } brand.DefaultCurrency = assignBrandCurrencyRequest.DefaultCurrency; brand.BaseCurrency = assignBrandCurrencyRequest.BaseCurrency; var newCurrencies = assignBrandCurrencyRequest.Currencies.Where(x => brand.BrandCurrencies.All(y => y.CurrencyCode != x)); foreach (var currency in newCurrencies .Select(newCurrency => _repository.Currencies.Single(c => c.Code == newCurrency))) { brand.BrandCurrencies.Add(new BrandCurrency { BrandId = brand.Id, Brand = brand, CurrencyCode = currency.Code, Currency = currency, DateAdded = DateTimeOffset.Now.ToBrandOffset(brand.TimezoneId), AddedBy = _actorInfoProvider.Actor.UserName }); } brand.DateUpdated = DateTimeOffset.Now.ToBrandOffset(brand.TimezoneId); brand.UpdatedBy = _actorInfoProvider.Actor.UserName; _repository.SaveChanges(); _eventBus.Publish(new BrandCurrenciesAssigned { BrandId = brand.Id, Currencies = brand.BrandCurrencies.Select(bc => bc.CurrencyCode).ToArray(), DefaultCurrency = brand.DefaultCurrency, BaseCurrency = brand.BaseCurrency, EventCreated = DateTimeOffset.Now.ToBrandOffset(brand.TimezoneId), }); scope.Complete(); } }
public ValidationResult ValidateThatBrandCurrencyCanBeAssigned(AssignBrandCurrencyRequest request) { var validator = new AssignBrandCurrencyValidator(_repository); return(validator.Validate(request)); }
public AssignBrandCurrencyResponse AssignBrandCurrency(AssignBrandCurrencyRequest request) { return(WebClient.SecurePostAsJson <AssignBrandCurrencyRequest, AssignBrandCurrencyResponse>(Token, _url + AdminApiRoutes.AssignBrandCurrency, request)); }