Esempio n. 1
0
        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");
        }
Esempio n. 3
0
        public virtual void DeleteProductPicture(ProductMediaFile productPicture)
        {
            Guard.NotNull(productPicture, nameof(productPicture));

            UnassignDeletedPictureFromVariantCombinations(productPicture);

            _productFileRepository.Delete(productPicture);
        }
Esempio n. 4
0
        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));
        }
Esempio n. 5
0
        /// <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);
        }
Esempio n. 6
0
        public virtual void InsertProductPicture(ProductMediaFile productPicture)
        {
            Guard.NotNull(productPicture, nameof(productPicture));

            _productFileRepository.Insert(productPicture);
        }