private void UnassignDeletedPictureFromVariantCombinations(ProductMediaFile productPicture) { var picId = productPicture.MediaFileId; bool touched = false; var combinations = from c in _productVariantAttributeCombinationRepository.Table where c.ProductId == productPicture.Product.Id && !String.IsNullOrEmpty(c.AssignedMediaFileIds) select c; foreach (var c in combinations) { var ids = c.GetAssignedMediaIds().ToList(); if (ids.Contains(picId)) { ids.Remove(picId); //c.AssignedPictureIds = ids.Count > 0 ? String.Join<int>(",", ids) : null; c.SetAssignedMediaIds(ids.ToArray()); touched = true; // we will save after we're done. It's faster. } } // save in one shot! if (touched) { _dbContext.SaveChanges(); } }
public void Can_save_and_load_productPicture() { var productPicture = new ProductMediaFile { DisplayOrder = 1, Product = new Product { Name = "Name 1", Published = true, Deleted = false, CreatedOnUtc = new DateTime(2010, 01, 01), UpdatedOnUtc = new DateTime(2010, 01, 02) }, MediaFile = new MediaFile { MediaStorage = new MediaStorage { Data = new byte[] { 1, 2, 3 } }, UpdatedOnUtc = DateTime.UtcNow, MimeType = "image/pjpeg" } }; var fromDb = SaveAndLoadEntity(productPicture); fromDb.ShouldNotBeNull(); fromDb.DisplayOrder.ShouldEqual(1); fromDb.Product.ShouldNotBeNull(); fromDb.Product.Name.ShouldEqual("Name 1"); fromDb.MediaFile.ShouldNotBeNull(); fromDb.MediaFile.MimeType.ShouldEqual("image/pjpeg"); }
public virtual void DeleteProductPicture(ProductMediaFile productPicture) { Guard.NotNull(productPicture, nameof(productPicture)); UnassignDeletedPictureFromVariantCombinations(productPicture); _productFileRepository.Delete(productPicture); }
public HttpResponseMessage NavigationProductPictures(int key, int relatedKey) { ProductMediaFile productPicture = null; var productPictures = Service.GetProductPicturesByProductId(key); if (Request.Method == HttpMethod.Delete) { if (relatedKey == 0) { productPictures.Each(x => Service.DeleteProductPicture(x)); } else if ((productPicture = productPictures.FirstOrDefault(x => x.MediaFileId == relatedKey)) != null) { Service.DeleteProductPicture(productPicture); } return(Request.CreateResponse(HttpStatusCode.NoContent)); } productPicture = productPictures.FirstOrDefault(x => x.MediaFileId == relatedKey); if (Request.Method == HttpMethod.Post) { if (productPicture == null) { productPicture = ReadContent <ProductMediaFile>() ?? new ProductMediaFile(); productPicture.ProductId = key; productPicture.MediaFileId = relatedKey; Service.InsertProductPicture(productPicture); return(Request.CreateResponse(HttpStatusCode.Created, productPicture)); } } return(Request.CreateResponseForEntity(productPicture, relatedKey)); }
/// <summary> /// Updates a product picture /// </summary> /// <param name="productPicture">Product picture</param> public virtual void UpdateProductPicture(ProductMediaFile productPicture) { Guard.NotNull(productPicture, nameof(productPicture)); _productFileRepository.Update(productPicture); }
public virtual void InsertProductPicture(ProductMediaFile productPicture) { Guard.NotNull(productPicture, nameof(productPicture)); _productFileRepository.Insert(productPicture); }