Exemple #1
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 #2
0
        public ValidationResult ValidateThatBrandCultureCanBeAssigned(AssignBrandCultureRequest request)
        {
            var validator = new AssignBrandCultureValidator(_repository);

            return(validator.Validate(request));
        }