コード例 #1
0
        public ProductVariantDisplay PutProductVariant(ProductVariantDisplay productVariant)
        {
            var variant = _productVariantService.GetByKey(productVariant.Key);

            variant = productVariant.ToProductVariant(variant);

            _productVariantService.Save(variant);

            return(variant.ToProductVariantDisplay());
        }
コード例 #2
0
        public ProductVariantDisplay NewProductVariant(ProductVariantDisplay productVariant)
        {
            IProductVariant newProductVariant;

            try
            {
                var product = _productService.GetByKey(productVariant.ProductKey) as Product;

                if (product != null)
                {
                    var productAttributes = new ProductAttributeCollection();
                    foreach (var attribute in productVariant.Attributes)
                    {
                        // TODO: This should be refactored into an extension method
                        var productOption = product.ProductOptions.FirstOrDefault(x => x.Key == attribute.OptionKey) as ProductOption;

                        if (productOption != null)
                        {
                            productAttributes.Add(productOption.Choices[attribute.Key]);
                        }
                    }

                    newProductVariant = _productVariantService.CreateProductVariantWithKey(product, productAttributes);

                    if (productVariant.TrackInventory)
                    {
                        newProductVariant.AddToCatalogInventory(_warehouseService.GetDefaultWarehouse().DefaultCatalog());
                    }

                    newProductVariant = productVariant.ToProductVariant(newProductVariant);

                    _productVariantService.Save(newProductVariant);
                }
                else
                {
                    throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.InternalServerError));
                }
            }
            catch (Exception e)
            {
                throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.InternalServerError));
            }

            return(newProductVariant.ToProductVariantDisplay());
        }
コード例 #3
0
        public ProductVariantDisplay PutProductVariant(ProductVariantDisplay productVariant)
        {
            var variant = _productVariantService.GetByKey(productVariant.Key);

            if (productVariant.DetachedContents.Any())
            {
                foreach (var c in productVariant.DetachedContents.Select(x => x.CultureName))
                {
                    var pcs = new ProductVariantContentSave {
                        CultureName = c, Display = productVariant
                    };
                    ProductVariantDetachedContentHelper <ProductVariantContentSave, ProductVariantDisplay> .MapDetachedProperties(pcs);
                }
            }

            variant = productVariant.ToProductVariant(variant);

            _productVariantService.Save(variant);

            return(variant.ToProductVariantDisplay(DetachedValuesConversionType.Editor));
        }
コード例 #4
0
        public HttpResponseMessage PutProductVariant(ProductVariantDisplay productVariant)
        {
            var response = Request.CreateResponse(HttpStatusCode.OK);

            try
            {
                IProductVariant merchProductVariant = _productVariantService.GetByKey(productVariant.Key);

                if (productVariant.TrackInventory && !merchProductVariant.CatalogInventories.Any())
                {
                    merchProductVariant.AddToCatalogInventory(_warehouseService.GetDefaultWarehouse().DefaultCatalog());
                }

                merchProductVariant = productVariant.ToProductVariant(merchProductVariant);

                _productVariantService.Save(merchProductVariant);
            }
            catch (Exception ex) // I think this is not required as the server will create the error response message anyway
            {
                response = Request.CreateResponse(HttpStatusCode.NotFound, String.Format("{0}", ex.Message));
            }

            return(response);
        }