Example #1
0
 private static void FillProductImageWith(ProductImageRecord productImageRecord, int width, int height, int ppi)
 {
     productImageRecord.Width = width;
     productImageRecord.Height = height;
     productImageRecord.Ppi = ppi;
 }
Example #2
0
        public ActionResult EditProduct(ProductViewModel viewModel)
        {
            var product = viewModel.Id == null
                ? new ProductRecord()
                : _productRepository.Get(viewModel.Id.Value);

            product.Name = viewModel.Name;

            var productHeadline = _productHeadlineRepository.Get(viewModel.SelectedProductHeadline);
            product.ProductHeadlineRecord = productHeadline;

            product.Materials = viewModel.Materials;
            product.Details = viewModel.Details;
            product.BaseCost = viewModel.BaseCost;
            product.WhenDeleted = null;

            if (product.ProductImageRecord == null)
            {
                var productImage = new ProductImageRecord() { ProdImgCulture = cultureUsed };
                _productImageRepository.Create(productImage);

                product.ProductImageRecord = productImage;
            }

            foreach (var linkProductColour in product.ColorsAvailable)
            {
                _linkProductColorRepository.Delete(linkProductColour);
            }

            foreach (var productColourItem in viewModel.SelectedProductColours)
            {
                var productColour = _productColourRepository.Get(productColourItem.ProductColourId);

                var linkProductColour = new LinkProductColorRecord
                {
                    ProductRecord = product,
                    ProductColorRecord = productColour//,
                    //BaseCost = productColourItem.BaseCost
                };

                _linkProductColorRepository.Create(linkProductColour);
            }

            if (viewModel.Id == null)
            {
                _productRepository.Create(product);
            }
            else
            {
                _productRepository.Update(product);
            }

            var linkProductGroups = _linkProductGroupRepository.Table
                .Where(it => it.ProductRecord == product)
                .ToList();

            foreach (var linkProductGroup in linkProductGroups)
            {
                _linkProductGroupRepository.Delete(linkProductGroup);
            }

            foreach (var productGroupId in viewModel.SelectedProductGroups)
            {
                var productGroup = _productGroupRepository.Get(productGroupId);

                var linkProductGroup = new LinkProductGroupRecord
                {
                    ProductRecord = product,
                    ProductGroupRecord = productGroup
                };

                _linkProductGroupRepository.Create(linkProductGroup);
            }

            var linkProductSizes = _linkProductSizeRepository.Table
                .Where(it => it.ProductRecord == product)
                .ToList();

            foreach (var linkProductSize in linkProductSizes)
            {
                _linkProductSizeRepository.Delete(linkProductSize);
            }

            int i = 0;
            foreach (var productSizeId in viewModel.SelectedProductSizes)
            {
                
                var productSize = _productSizeRepository.Get(productSizeId);

                var linkProductSize = new LinkProductSizeRecord
                {
                    ProductRecord = product,
                    ProductSizeRecord = productSize,
                    SizeCost = viewModel.SelectedProductSizesCost.ElementAt(i)
                };

                _linkProductSizeRepository.Create(linkProductSize);
                i++;
            }

            var frontImageSavingResult = SaveProductFrontImage(viewModel.ProductImageFront, product);
            var backImageSavingResult = SaveProductBackImage(viewModel.ProductImageBack, product);

            if (frontImageSavingResult != null)
            {
                FillProductImageWith(product.ProductImageRecord,
                    frontImageSavingResult.Width,
                    frontImageSavingResult.Height,
                    ProductImagePpi);
            }
            else if (backImageSavingResult != null)
            {
                FillProductImageWith(product.ProductImageRecord,
                    backImageSavingResult.Width,
                    backImageSavingResult.Height,
                    ProductImagePpi);
            }

            return RedirectToAction("EditProduct", new {productId = product.Id});
        }