public void ContributeTo(ProductBuildingContext context) { if (context == null) { throw new ArgumentNullException("context"); } if (context.ProductViewData.CategoryIds.Count == 0) { context.ModelStateDictionary.AddModelError("CategoryIds", "You must select at least one category"); return; } var newIds = context.ProductViewData.CategoryIds; var existingIds = context.Product.ProductCategories.Select(x => x.Category.Id); var idsToAdd = newIds.Where(newId => !existingIds.Any(existingId => existingId == newId)); var idsToDelete = existingIds.Where(existingId => !newIds.Any(newId => newId == existingId)); var categoriesToDelete = (from productCategory in context.Product.ProductCategories let category = productCategory.Category from id in idsToDelete where id == category.Id select category).ToList(); foreach (var category in categoriesToDelete) { context.Product.RemoveCategory(category); } foreach (var newId in idsToAdd) { var category = categoryRepository.GetById(newId); context.Product.AddCategory(category); } }
public void ContributeTo(ProductBuildingContext context) { if (context.ProductViewData.ProductId == 0) { return; } context.SetProduct(productRepository.GetById(context.ProductViewData.ProductId)); }
public void ContributeTo(ProductBuildingContext context) { if (context == null) { throw new ArgumentNullException("context"); } if (context.ProductViewData.ProductId == 0) return; context.Product.Position = productOrderableService.NextPosition; }
public void SetUp() { DomainEvent.TurnOff(); context = new ProductBuildingContext( new ProductViewData(), new ModelStateDictionary(), MockRepository.GenerateStub <HttpRequestBase>()); contributor = InitContributor(); }
public void ContributeTo(ProductBuildingContext context) { var viewData = context.ProductViewData; var productWithNameAlreadyExists = productRepository.GetAll().Any(x => x.Id != viewData.ProductId && x.Name == viewData.Name); if (!productWithNameAlreadyExists) return; context.ModelStateDictionary.AddModelError("ProductId", "Product names must be unique and there is already a product called '{0}'".With(viewData.Name)); }
public void ContributeTo(ProductBuildingContext context) { if (context == null) { throw new ArgumentNullException("context"); } if (context.ProductViewData.ProductId == 0) { var product = new Product(); context.SetProduct(product); } }
public void ContributeTo(ProductBuildingContext context) { if (context == null) { throw new ArgumentNullException("context"); } if (context.ProductViewData.ProductId != 0) { return; } context.Product.Position = productOrderableService.NextPosition; }
public void ContributeTo(ProductBuildingContext context) { var viewData = context.ProductViewData; var productWithNameAlreadyExists = productRepository.GetAll().Any(x => x.Id != viewData.ProductId && x.Name == viewData.Name); if (!productWithNameAlreadyExists) { return; } context.ModelStateDictionary.AddModelError("ProductId", "Product names must be unique and there is already a product called '{0}'".With(viewData.Name)); }
public void ContributeTo(ProductBuildingContext context) { IEnumerable<Image> images = null; if (Validator.ValidateFails(context.ModelStateDictionary, () => images = httpFileService.GetUploadedImages(context.HttpRequestBase, ImageDefinition.ProductImage, ImageDefinition.ProductThumbnail) )) return; var position = productOrderableService.NextPosition; foreach (var image in images) { context.Product.AddProductImage(image, position); position++; } }
public void ContributeTo(ProductBuildingContext context) { if (context == null) { throw new ArgumentNullException("context"); } var product = context.Product; var viewData = context.ProductViewData; product.Name = viewData.Name; product.Weight = viewData.Weight; product.Price = viewData.Price; product.IsActive = viewData.IsActive; product.Description = viewData.Description; }
public void ContributeTo(ProductBuildingContext context) { if (context == null) { throw new ArgumentNullException("context"); } if (context.Product.DefaultSizeMissing) { context.Product.AddDefaultSize(); } context.ProductViewData.Sizes .Where(size => !string.IsNullOrEmpty(size)) .ForEach(size => context.Product.AddSize(new Size { Name = size, IsActive = true, IsInStock = true })); }
public void ContributeTo(ProductBuildingContext context) { IEnumerable <Image> images = null; if (Validator.ValidateFails(context.ModelStateDictionary, () => images = httpFileService.GetUploadedImages(context.HttpRequestBase, ImageDefinition.ProductImage, ImageDefinition.ProductThumbnail) )) { return; } var position = productOrderableService.NextPosition; foreach (var image in images) { context.Product.AddProductImage(image, position); position++; } }
public void ContributeTo(ProductBuildingContext context) { if (context.ProductViewData.ProductId == 0) return; context.SetProduct(productRepository.GetById(context.ProductViewData.ProductId)); }
public void ContributeTo(ProductBuildingContext context) { contextAction(context); }