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(); } }
public ValidationResult ValidateThatBrandCultureCanBeAssigned(AssignBrandCultureRequest request) { var validator = new AssignBrandCultureValidator(_repository); return(validator.Validate(request)); }