Exemple #1
0
        public void ThenBrandCultureIsSuccessfullyAdded()
        {
            ScenarioContext.Current.Should().ContainKey("brandId");
            var brandId = ScenarioContext.Current.Get <Guid>("brandId");

            var data = new AssignBrandCultureRequest()
            {
                Brand          = brandId,
                Cultures       = new[] { "en-CA", "en-US" },
                DefaultCulture = "en-CA"
            };

            var result = AdminApiProxy.AssignBrandCulture(data);

            result.Should().NotBeNull();
            result.Success.Should().BeTrue();
        }
Exemple #2
0
        //public AssignBrandCultureResponse Assign(AssignBrandCultureRequest request)
        public AssignBrandCultureResponse Assign(AssignBrandCultureRequest request)
        {
            VerifyPermission(Permissions.Create, Modules.SupportedLanguages);
            CheckBrand(request.Brand);

            var validationResult = _brandCommands.ValidateThatBrandCultureCanBeAssigned(request);

            if (!validationResult.IsValid)
            {
                return(ValidationErrorResponse <AssignBrandCultureResponse>(validationResult));
            }

            _brandCommands.AssignBrandCulture(request);
            return(new AssignBrandCultureResponse {
                Success = true
            });
        }
Exemple #3
0
        public void ThenIAmForbiddenToAssignCultureToTheBrand()
        {
            ScenarioContext.Current.Should().ContainKey("brandId");
            var brandId = ScenarioContext.Current.Get <Guid>("brandId");

            ScenarioContext.Current.Should().ContainKey("cultureCode");
            var code = ScenarioContext.Current.Get <string>("cultureCode");

            var data = new AssignBrandCultureRequest
            {
                Brand          = brandId,
                Cultures       = new[] { code },
                DefaultCulture = code
            };

            var ex = Assert.Throws <HttpException>(() => AdminApiProxy.AssignBrandCulture(data));

            Assert.That(ex.GetHttpCode(), Is.EqualTo((int)HttpStatusCode.Forbidden));
        }
Exemple #4
0
        public void AssignBrandCulture(AssignBrandCultureRequest assignBrandCultureData)
        {
            var validationResult = new AssignBrandCultureValidator(_repository).Validate(assignBrandCultureData);

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

            var brand = _repository.Brands
                        .Include(x => x.BrandCultures)
                        .Single(x => x.Id == assignBrandCultureData.Brand);

            using (var scope = CustomTransactionScope.GetTransactionScope())
            {
                var oldCultures = brand.BrandCultures
                                  .Where(x => !assignBrandCultureData.Cultures.Contains(x.CultureCode))
                                  .ToArray();

                foreach (var oldCulture in oldCultures)
                {
                    brand.BrandCultures.Remove(oldCulture);
                }

                var newCultures = assignBrandCultureData.Cultures
                                  .Where(x => brand.BrandCultures.All(y => y.CultureCode != x))
                                  .ToArray();

                foreach (var culture in newCultures)
                {
                    var cultureToAdd = _repository.Cultures.Single(x => x.Code == culture);

                    brand.BrandCultures.Add(new BrandCulture
                    {
                        BrandId     = brand.Id,
                        Brand       = brand,
                        CultureCode = cultureToAdd.Code,
                        Culture     = cultureToAdd,
                        DateAdded   = DateTimeOffset.Now.ToBrandOffset(brand.TimezoneId),
                        AddedBy     = _actorInfoProvider.Actor.UserName
                    });
                }

                brand.DefaultCulture = assignBrandCultureData.DefaultCulture;
                brand.DateUpdated    = DateTimeOffset.Now.ToBrandOffset(brand.TimezoneId);
                brand.UpdatedBy      = _actorInfoProvider.Actor.UserName;

                _repository.SaveChanges();

                _eventBus.Publish(new BrandLanguagesAssigned(
                                      brand.Id,
                                      brand.Name,
                                      brand.BrandCultures.Select(x => x.Culture),
                                      brand.DefaultCulture)
                {
                    EventCreated = DateTimeOffset.Now.ToBrandOffset(brand.TimezoneId),
                });

                scope.Complete();
            }
        }
Exemple #5
0
        public ValidationResult ValidateThatBrandCultureCanBeAssigned(AssignBrandCultureRequest request)
        {
            var validator = new AssignBrandCultureValidator(_repository);

            return(validator.Validate(request));
        }
 public AssignBrandCultureResponse AssignBrandCulture(AssignBrandCultureRequest request)
 {
     return(WebClient.SecurePostAsJson <AssignBrandCultureRequest, AssignBrandCultureResponse>(Token, _url + AdminApiRoutes.AssignBrandCulture, request));
 }