public ValidationResult ValidateThatBrandProductsCanBeAssigned(AssignBrandProductsData data) { var validator = new AssignBrandProductValidator(_repository, _queries.GetAllowedProductsByBrand(data.BrandId)); return(validator.Validate(data)); }
public void AssignBrandProducts(AssignBrandProductsData assignBrandProductsData) { using (var scope = CustomTransactionScope.GetTransactionScope()) { var validator = new AssignBrandProductValidator(_repository, _queries.GetAllowedProductsByBrand(assignBrandProductsData.BrandId)); var validationResult = validator.Validate(assignBrandProductsData); if (!validationResult.IsValid) { throw new RegoValidationException(validationResult); } var brand = _repository.Brands .Include(x => x.Products) .Single(x => x.Id == assignBrandProductsData.BrandId); brand.Products.Clear(); foreach (var product in assignBrandProductsData.ProductsIds) { brand.Products.Add(new BrandProduct { Brand = brand, ProductId = product }); } brand.DateUpdated = DateTimeOffset.Now.ToBrandOffset(brand.TimezoneId); brand.UpdatedBy = _actorInfoProvider.Actor.UserName; _eventBus.Publish(new BrandProductsAssigned { BrandId = brand.Id, ProductsIds = assignBrandProductsData.ProductsIds, EventCreated = DateTimeOffset.Now.ToBrandOffset(brand.TimezoneId), }); _repository.SaveChanges(); scope.Complete(); } }