Ejemplo n.º 1
0
        public async Task <IActionResult> CreateProductVariation(int productId, string varTitle, bool hasDifPrice)
        {
            ProductVariation productVariation = new ProductVariation();

            try
            {
                productVariation.ProductId         = productId;
                productVariation.Title             = varTitle;
                productVariation.HasDifferentPrice = hasDifPrice;

                await _db.ProductVariations.AddAsync(productVariation);

                await _db.SaveChangesAsync();

                var product = await _db.Products.FindAsync(productId);

                product.VarNumber = await _db.ProductVariations.AsNoTracking()
                                    .Where(c => c.ProductId.Equals(productId))
                                    .CountAsync();

                _db.Products.Update(product);
                await _db.SaveChangesAsync();

                return(ViewComponent(componentName: "ProductVariationList", arguments: new { productId = productId }));
            }
            catch (Exception)
            {
                return(Json("False"));
            }
        }
Ejemplo n.º 2
0
        public void Can_create_market_product()
        {
            var code = Guid.NewGuid().ToString();
            var product = new Product() { Id = code, Code = code, Name = "Sample Test Product", CatalogId = "Samsung" };
            product.Properties = new Dictionary<string, string[]> { { "PublishStatus", new []{"Draft"} }, { "Price", new[]{121.01d.ToString()} }, { "brand", new[]{"Apple"} } };

            // add variations to a product
            var variationCode = Guid.NewGuid().ToString();
            var variation = new ProductVariation() { Id = variationCode, Code = variationCode, Name = "Sample Test Product - Variation", CatalogId = "Samsung" };
            product.Variations = new[] { variation };

            // add images
            var image = new ItemImage()
            {
                Id = "213132",
                Name = "main.jpeg",
                Attachement =
                    Encoding.UTF8.GetBytes(
                        "R0lGODlhbgCMAPf/APbr48VySrxTO7IgKt2qmKQdJeK8lsFjROG5p/nz7Zg3\nMNmnd7Q1MLNVS9GId71hSJMZIuzTu4UtKbeEeakhKMl8U8WYjfr18YQaIbAf\nKKwhKdKzqpQtLebFortOOejKrOjZ1Mt7aMNpVbAqLLV7bsNqR+3WwMqEWenN\nsZYxL/Ddy/Pm2e7ZxLlUQrIjNPXp3bU5MbhENbEtLtqhj5ZQTfHh0bMxL7Ip\nNsNyUYkZIrZJPcqGdYIUHb5aPKkeJnoUHd2yiJkiLKYiKLRFOsyJXKVDO8up\nosFaS+TBnK4kKti5sNaYg/z49aqYl5kqLrljUtORfMOlo/36+H4ZH8yDYq0f\nKKFYTaU9MrY8MrZBNXwXHpgaIdGVYu/byLZNP9SaZLIyOuXCtHkpJst+Wpcm\nLMyCa8BfP9GMb9KQdPDd1PPk1sd5VP79/L5dQZ0bI9+ymqssK9WcfIoXHdzG\nxdWWfteib79lSr1YP86MYurQxKdcUKdMQr5ZSfPs6YEZH8uhl4oWIenMuurQ\nttmejaqoqsqBVaAcJLlJN5kvMLlZRMNsSL5fRak0LbdQQMVvSPjw6cJnRpkf\nKtmjhvfu5cJtT7IuOMVvWLY/M/37+o0YH9ibhtSYdObErc6HarM9NnYSGNGR\navLi09unje3WyeO8rsVrT7tdRtK3uffu6NWeaL9pTJIjJrM4NPbx8cdyX7M7\nPYYVHu7j4KgoNJAYIKtkV5o9MsOcldicis+RYNutfrhFOZ0hJbqinZ8bI8h5\nUObFuOfItJsfJrJfUOfIqc+PXqQtK8RnSbA4Mcd3Tm0SGbpXQ8aqp7RLNs+s\novHfzpVhV9iggMd1TLtbRKUdKXEQFsd4XrZRPLIgMZUeJ+jKvrAlK6AhJ65A\nMpMpKuC3j5obIsRwS7hAN8l/YtvDvnYXHbAoLI47SIUsOMenorF4gO/m4+fH\npo4vLZ8oKMukqp0cJbhVSMV2UuPR0bAfMLIrLrg/OcJwT8h+Vt+wn8eurLlh\nQrIfKHQOHHQOHf///////yH5BAEAAP8ALAAAAABuAIwAAAj/AP8JHDhQXjpz\n/PopXNiPn0OHDRMmbKhQIsOJFS1SxAhxI8SHFzVeDBnx48iNBAeeOkcxokeX\nFRdOnAlSokaaLXNujJkxo8iYHRkKtWkzZSsaOXkAWsoUECynsHgoqEW1qtVa\n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\nGg4lOnRGDKRZsoS7pMPSA6YXNWLsKJLkSZOVwKhMGSTTrJf9ZNKcomXKTrQY\nevr02cSIvKJxi6aJkaVuXaZMs1ziO5UqPawnuXK9AWEW2Jhja9pMuzMd27YW\nLNga10fuZYUPkdZdqpTv575YbJQbkCHw1sEpb9wQMstwWLFkbfppjJPc/wTI\nhHhJ5r0BBGbMRzfb7ez5MwwbpTMsx5pa9eob2CBM5yETpmzGtTE8hrybN29b\nc1oBn6trc9K7nhmUy6BcOUrn0KHLcr0FQvWYMxdnb3w7t/fvwFMiFvKG0uw8\n4kRLYjkGG0RtMPlWc+GGdyCwbwtYrOsHu7K0a+K/AEO04K0CF8InBvPOg2GE\nKpZTrsHSUotwwgnnmW4LHGGBKbb9bMqhsSly082CW0QMkDLLSvQHFQFiOESX\nLGzQpkUY22swA8Lko9EFLqfBEcdvMhRrwx610OLHtJ5Rc01ahHnCzTeFkXNO\nOfWQkwQ6NNFzTz2X0GQJQAMVdJEYsBhBAyrbK/9tgBcbrCTCG7bkkstvvvwm\nzPzI7JEcNLXDCYICQhXVkAIMMdWQd0x1Y9VdiuHGA1hjhfWQQzyg9dZDYmBg\nyioSVfRKFwfYZ8ZIJ3XhGhe83OLSSwEZU78ea+pUO2wK8MFaUUMl9dReDOll\n1VXbuYIZWWOl1dZDLpGhV3YZXLTR9vZhUMJijUX2mmveYRZcQDLlsCZOp21s\nCx+uLTjbbE/11ttv3diFkSHKRReGcthtN1hgrdxH2Awk5fJefK+ZZ9lvVvXW\n2cT+ZSwHgdHCpmCYDb4WYVNL7baXbsN9FdYYbKDA4otddBdYeffZx9iPjw35\nmmlKNtnUfmXSNNqAW9b/6eWYY8YWYW0V7tYQhxWAwwege61y6OXkbdDoSUFe\nWuR3wP3akKhjUtlHlqklG+YqsjaY620VNgQDMcQQouwrX3zR6KKFZfttyKtw\n+utQnRUL2mjLYjnvtLDpu9e9/ZYZ8FK3maLwwn8OmlF3lWNc7df3gfzteaZZ\n+NTKx5y6RxJ69/333mvBwHOLQ/fhiR2SV34HS47hmnAafJ9gh3AaDMcB7LE/\nIoPY441dhOzDz94VN3DPNmoeM5drAyfK7lWH34baYetVCidBIT6C5UMhB4r2\nn3FheSANRVGCwhBmObtlbgqXyYYNyuYFAMQFCtPwQf3spxAraGBRR+Af91wX\n/zsPoCIuCCAV13yAMsWo7zIOaJHFSHEZHZABdWK4X0JoIAENLIeDCXFA2rgX\nuwG8MC6kKGGoZuaDTEhtd/vBTBoyYLYqeAEzFpihGCagEBqIQQJVGMAOEdLD\n2L0uHJdBAMIOhsTELHExwLnS/i6zAQlIQItWxKIccejGL/4wjPvw4kHSQApA\nBhKQUDCiEWE2C93dTSEW2EMjaWABhbgnA3g8SAj4cElK+kMJWoyjBK6YECtw\nUgKZ7N8ejdZHfzjgGgNY5SpnZsisJXFHikwICTLBskzUECFtxJ/FFKKETmrx\nkwixQiclYAX+mfKUCpnBEZzpzHpkS2Yxm0ViMNcjhf+QABs5uKUuD9KoTOaP\nQb80picxaExk8lCZfIxLNuBhrWnurZpjoiVCbAkBbnrTH2pbTjgZVAVyGnOY\nBylmJ9P5xXWOUS6WEB3ZqgmTazLxMk40WntQub3lbIOc7OjkQP1RUI4e9CCl\nfJ3jjCbEogDAE6KrAiKlVs+4gJF7GUDlDLLnUWCyg6Ps8GgxdyrSVK5zH/WI\noARjZjFEQhSmRCEFg9SGSqIoQadT7alOJcAOoJJUmeFA6VBIETqk+ssPKizK\nDorxwx9CdShSvapOqzpVoO7ApMocgAdcIb74HeSroEOqEn8w1mgVRR0KyEEw\nKqoctTZEquzggFsVooepskP/DwqZAAfmakpGvc4HXSXF54CWVLthALASRYhB\nFpmDd4QxsQxRQmNd61HITnWyCVHC9MTnCsY9U7dH4AM8spGQvVrsiRB4Fg/8\ncFxsJmQDHvUHLQyhWsy01rXs2MFj2ZGC6862KKRgHGY6K9zlEPdyP8AJcteo\n3ClsQCHq0AF0QdkN+HbjlxygL31hO13tMrW7lwkB0BiUoR3x4EfmrYlCNjAF\nCRAoIWmwQexQqQcyxHe+9eXAfVOQAg7k16v7jQsAHGi2Bv0gUzyQQ05Ga+Cy\n0MBEDsZgN8gQ4QnXt7oJ0QOGOZACDTeEu0aTCwC80EKhDcAHMDGHWATMsuMC\nFsVl/9GnP0Jg0kw24MUv/qUTOGDlCj8WETfGsVx2vI+UzsATIFZUaTIRk3QY\n+ZYlFq0Ce5QJHBXgdU+MRCSwEYlVBCHPQZhyn7vhhD9fWdAc2DKhKXxhRCc6\n0Yi4LOPcl6hGVUFqc4gJLGaxufKO1s2VkrOj63znOkciCKMedZ+n7ARUp1rQ\niLAyIlyNYURcONaInrWs9ci4JyJOaFYawDzP8Q+ZwAICLckbgd08i290eh9V\nCIadQw3qO5Oa1H1GNRlSjeorO2HLruZ2rLudAm+Dm9Gxcx/GXmSIMbnjH5W2\nzy2RbOzM+cENBRAWs0N9b3zXWdp8pra1r61tbXdb4N/2Nv8i5gzeIJd5Gjui\nwT+AzQ9YVGrYnNO0Agm27GBkvNnNzje+921qf/+b1QEfuMDFPe5lk/lspUG3\nWKbQCofLBBBuwNEs3C3aikcrB2TTeM81HgmOd3zf/PZ3yFPNaqSXfODF0EDK\nE9e6liZmCvJwOLD7AQhU2efSbG6zm7VgiG1ofBc+//nGgZ7vbYw67aVux4v/\nfXSSK53by/HVrzIwDZTBBANUrzpMeAAIWASeB4P/AQ9+cHjEJx7xWgDE5nLQ\neMdHXvKbg/zkMZ23H/1oFRjYPOc9v3nQ58Aw0xn9LACvO7HQAOZVf/jl0ii1\nHcXe9bPX3euftaPL5R71tIf97nsy7/o0WlP2r4/JOU7B+r5nqva7jz1EdZ97\n4qNe+bonfvCfVXvly1762beOOdLBd+Q7PCAAOw==\n")
            };

            product.Images = new[] { image };

            var categoryId = "4d7b8f2d-5a18-4ccb-8a9a-20234224eb8c"; // tvs
            Task.WaitAll(Task.Run(() => this.AdminClient.AddAsync(categoryId, product)));

            var results = Task.Run(() => this.Client.GetProductAsync(code)).Result;
            Assert.NotNull(results);
            Assert.True(results.Id == code);
        }
        public IHttpActionResult GetVariantSkuFromSelectionRequest([FromBody] GetVariantSkuFromSelectionRequest request)
        {
            var product = CatalogLibrary.GetProduct(request.ProductSku);

            UCommerce.EntitiesV2.Product variant = null;

            if (product.Variants.Any() && request.VariantProperties.Any()) // If there are variant values we'll need to find the selected variant
            {
                variant = product.Variants.FirstOrDefault(v => v.ProductProperties.Where(pp => pp.ProductDefinitionField.DisplayOnSite && pp.ProductDefinitionField.IsVariantProperty && !pp.ProductDefinitionField.Deleted && pp.Value != null && pp.Value != String.Empty).All(p => request.VariantProperties.Any(kv => kv.Key.Equals(p.ProductDefinitionField.Name, StringComparison.InvariantCultureIgnoreCase) && kv.Value.ToString().Equals(p.Value, StringComparison.InvariantCultureIgnoreCase))));
            }
            else if (!product.Variants.Any()) // Only use the current product where there are no variants
            {
                variant = product;
            }

            var variantModel = new ProductVariation
            {
                Sku         = variant.Sku,
                VariantSku  = variant.VariantSku,
                ProductName = variant.Name,
                Properties  = variant.ProductProperties.Select(prop => new ProductProperty
                {
                    Id    = prop.Id,
                    Name  = prop.ProductDefinitionField.Name,
                    Value = prop.Value
                })
            };

            return(Json(new { Variant = variantModel }));
        }
Ejemplo n.º 4
0
        public GetVariantSkuFromSelectionResponse(UCommerce.EntitiesV2.Product parentProduct, IDictionary <string, string> properties)
        {
            UCommerce.EntitiesV2.Product variant = null;

            if (parentProduct.Variants.Any() && properties.Any()) // If there are variant values we'll need to find the selected variant
            {
                variant = parentProduct.Variants.FirstOrDefault(v => v.ProductProperties.Where(pp => pp.ProductDefinitionField.DisplayOnSite && pp.ProductDefinitionField.IsVariantProperty && !pp.ProductDefinitionField.Deleted && pp.Value != null && pp.Value != String.Empty).All(p => properties.Any(kv => kv.Key.Equals(p.ProductDefinitionField.Name, StringComparison.InvariantCultureIgnoreCase) && kv.Value.Equals(p.Value, StringComparison.InvariantCultureIgnoreCase))));
            }
            else if (!parentProduct.Variants.Any()) // Only use the current product where there are no variants
            {
                variant = parentProduct;
            }

            if (variant == null)
            {
                return;
            }

            Variant = new ProductVariation
            {
                Sku         = variant.Sku,
                VariantSku  = variant.VariantSku,
                ProductName = variant.Name,
                Properties  = variant.ProductProperties.Select(prop => new ProductProperty
                {
                    Id    = prop.Id,
                    Name  = prop.ProductDefinitionField.Name,
                    Value = prop.Value
                })
            };
        }
Ejemplo n.º 5
0
        public async Task <int> InsertProductVariationAsync(ProductVariation productVariation)
        {
            _db.Add(productVariation);
            await _db.SaveChangesAsync();

            return(productVariation.ProductVariationId);
        }
Ejemplo n.º 6
0
        public async Task DeleteProductVariationAsync(ProductVariation productVariation)
        {
            var x = await _db.ProductVariation.FindAsync(productVariation.ProductVariationId);

            _db.Remove(x);
            await _db.SaveChangesAsync();
        }
        public async Task <IActionResult> Create(int productVariationId, string proVarTitle)
        {
            SubProductVariation subProVar = new SubProductVariation();
            ProductVariation    proVar    = await _db.ProductVariations
                                            .AsNoTracking()
                                            .Where(c => c.ProductVariationId.Equals(productVariationId))
                                            .FirstOrDefaultAsync();

            double price = await _db.Products.AsNoTracking()
                           .Where(c => c.Id.Equals(proVar.ProductId))
                           .Select(c => c.BasePrice)
                           .FirstOrDefaultAsync();

            subProVar.Price = price;
            subProVar.Title = proVarTitle;
            subProVar.ProductVariationId    = productVariationId;
            subProVar.productId             = proVar.ProductId;
            subProVar.ProductVariationTitle = proVar.Title;
            await _db.SubProductVariations.AddAsync(subProVar);

            await _db.SaveChangesAsync();

            return(ViewComponent(componentName: "SubProductVariationList",
                                 arguments: new { productVariationId = productVariationId }));
        }
        public IHttpActionResult GetVariantSkuFromSelectionRequest([FromBody] GetVariantSkuFromSelectionRequest request)
        {
            var     product = CatalogLibrary.GetProduct(request.ProductSku);
            Product variant = null;

            if (product.ProductType == ProductType.ProductFamily && request.VariantProperties.Any()
                ) // If there are variant values we'll need to find the selected variant
            {
                var query = ProductsIndex.Find().Where(p => p.Sku == request.ProductSku && p.ProductType == ProductType.Variant);
                request.VariantProperties.ForEach(property =>
                {
                    query = query.Where(p => p[property.Key] == property.Value);
                });
                variant = query.FirstOrDefault();
            }
            else if (!product.Variants.Any()) // Only use the current product where there are no variants
            {
                variant = product;
            }

            if (variant == null)
            {
                return(NotFound());
            }

            var variantModel = new ProductVariation
            {
                Sku         = variant.Sku,
                VariantSku  = variant.VariantSku,
                ProductName = variant.Name,
            };

            return(Json(new { Variant = variantModel }));
        }
        private void AddVariantProperties(Product product, ProductVariation sfVariant, Product variantProduct)
        {
            // Variant names and values live in comma separated lists in the Sitefinity models
            var variantFieldNames = sfVariant.VariantNames.Attribute.Split(',');
            var variantValues     = sfVariant.VariantNames.AttributeValue.Split(',');

            // Create the unique property values that make up the variant
            for (var i = 0; i < variantFieldNames.Length; i++)
            {
                var variantFieldName = variantFieldNames[i].Trim();
                var variantValue     = variantValues[i].Trim();

                var productDefinitionField = _session.Query <ProductDefinitionField>().FirstOrDefault(x => x.Name == variantFieldName &&
                                                                                                      x.ProductDefinition.ProductDefinitionId == product.ProductDefinition.Id);

                if (productDefinitionField == null)
                {
                    Log.Error(
                        $"Could not add product variant for sku '{product.Sku}'.  Product definition field with name '{variantFieldName}' not found.");
                    continue;
                }

                var productProperty = new ProductProperty()
                {
                    ProductDefinitionField = productDefinitionField,
                    Value   = variantValue,
                    Product = variantProduct
                };

                variantProduct.AddProductProperty(productProperty);
            }
        }
Ejemplo n.º 10
0
        /// <summary>
        /// Constructor.
        /// </summary>
        /// <param name="sfContent">The sf product variation.</param>
        public ProductVariationModel(ProductVariation sfContent)
        {
            if (sfContent != null)
            {
                Id              = sfContent.Id;
                Sku             = sfContent.Sku;
                AdditionalPrice = sfContent.AdditionalPrice;
                LastModified    = sfContent.LastModified;
                Active          = sfContent.IsActive;

                //GET ATTRIBUTE DETAILS
                if (!string.IsNullOrWhiteSpace(sfContent.Variant))
                {
                    // Variant is stored as an array of an object. Get array, select first (only) object, then pull property from that object.
                    JToken variantData = JArray.Parse(sfContent.Variant).First;
                    Guid   attributeId = new Guid(variantData["AttributeValueId"].Value <string>());

                    //GET ATTRIBUTE VALUE FOR VARIANT
                    var manager   = CatalogManager.GetManager();
                    var attribute = manager.GetProductAttributeValue(attributeId);

                    //STORE PROPERTY VALUES TO MODEL
                    Title       = attribute.Title;
                    Description = attribute.Description;
                    Ordinal     = attribute.Ordinal;
                    Visible     = attribute.Visible;
                    ParentId    = attribute.Parent.Id;
                    ParentTitle = attribute.Parent.Title;
                }

                // Store original content
                OriginalContent = sfContent;
            }
        }
        public void CreateWithCode() // Maybe not the right place to put this code...
        {
            string nodeName    = "myNode";
            string productName = "myProduct";
            string skuName     = "mySku";

            // Create Node
            ContentReference linkToParentNode = _referenceConverter.GetContentLink("Women_1");
            var contentRepository             = ServiceLocator.Current.GetInstance <IContentRepository>();

            var newNode = contentRepository.GetDefault <FashionNode>(linkToParentNode, new CultureInfo("en"));

            newNode.Code        = nodeName;
            newNode.SeoUri      = nodeName;
            newNode.Name        = nodeName;
            newNode.DisplayName = nodeName;

            ContentReference newNodeRef = contentRepository.Save
                                              (newNode, SaveAction.Publish, EPiServer.Security.AccessLevel.NoAccess);

            // Create Product
            var newProduct = contentRepository.GetDefault <BlouseProduct>(newNodeRef, new CultureInfo("en"));

            //Set some properties.
            newProduct.Code                       = productName;
            newProduct.SeoUri                     = productName;
            newProduct.Name                       = productName;
            newProduct.DisplayName                = productName;
            newProduct.SeoInformation.Title       = "SEO Title";
            newProduct.SeoInformation.Keywords    = "Some keywords";
            newProduct.SeoInformation.Description = "A nice one";
            newProduct.MainBody                   = new XhtmlString("This new product is great");

            // Persist the Product
            ContentReference newProductReference = contentRepository.Save
                                                       (newProduct, SaveAction.Publish, EPiServer.Security.AccessLevel.NoAccess);

            // Create SKU
            var newSku = contentRepository.GetDefault <ShirtVariation>(newNodeRef, new CultureInfo("en"));

            newSku.Code        = skuName;
            newSku.SeoUri      = skuName;
            newSku.Name        = skuName;
            newSku.DisplayName = skuName;
            //newSku.ParentLink = newProductReference; // Can do this in 10 - will change in 11

            ContentReference newSkuReference = contentRepository.Save
                                                   (newSku, SaveAction.Publish, EPiServer.Security.AccessLevel.NoAccess);

            //what differs from CMS
            ProductVariation prodVariationLink0 = new ProductVariation()
            {
                Child     = newSkuReference,
                Parent    = newProductReference,
                SortOrder = 100
            };

            _relationRepository.UpdateRelation(prodVariationLink0);
        }
Ejemplo n.º 12
0
        public IActionResult CreateTshirt(int?baseProductId = null)
        {
            var productVariation = new ProductVariation();

            productVariation.BaseProduct = db.Products.FirstOrDefault(x => x.ProductId == baseProductId);
            db.ProductVariations.Add(productVariation);
            db.SaveChanges();
            return(View(productVariation));
        }
Ejemplo n.º 13
0
 /// <summary>
 /// Product Price
 /// </summary>
 /// <param name="productVariation"></param>
 /// <returns>price</returns>
 public static decimal GetProductPrice(ProductVariation productVariation)
 {
     if (productVariation.DiscountPrice > 0 && productVariation.DiscountPrice != null)
     {
         return(Convert.ToDecimal(productVariation.DiscountPrice));
     }
     else
     {
         return(productVariation.Price);
     }
 }
Ejemplo n.º 14
0
        public async Task <JsonResult> SaveProductVariation([FromBody] ProductVariationViewModel model)
        {
            var response = new ResultModel();

            if (!ModelState.IsValid)
            {
                response.Errors = ModelState.ToResultModelErrors().ToList();
                return(Json(response));
            }

            var prod = await Context.Products.FirstOrDefaultAsync(i => i.Id == model.ProductId);

            if (prod != null)
            {
                var variation = await Context.ProductVariations
                                .FirstOrDefaultAsync(i => i.Id == model.VariationId && i.ProductId == model.ProductId);


                if (variation != null)
                {
                    variation.Price = model.Price;
                    Context.ProductVariations.Update(variation);

                    var listProductVariationDetails =
                        Context.ProductVariationDetails.Where(x => x.ProductVariationId == variation.Id);

                    Context.ProductVariationDetails.RemoveRange(listProductVariationDetails);
                }
                else
                {
                    variation = new ProductVariation
                    {
                        ProductId = model.ProductId,
                        Price     = model.Price,
                    };

                    Context.ProductVariations.Add(variation);
                }

                var variationDetails = model.ProductVariationDetails.Select(x => new ProductVariationDetail()
                {
                    ProductVariationId = variation.Id,
                    Value           = x.Value,
                    ProductOptionId = x.ProductOptionId
                });

                await Context.ProductVariationDetails.AddRangeAsync(variationDetails);
            }

            var dbResult = await Context.PushAsync();

            return(Json(dbResult));
        }
Ejemplo n.º 15
0
        public static IEnumerable <ProductVariationOptionVm> GetVariationOption(ProductVariation variation)
        {
            if (variation == null)
            {
                return(new List <ProductVariationOptionVm>());
            }

            return(variation.OptionCombinations.Select(x => new ProductVariationOptionVm
            {
                OptionName = x.Option.Name,
                Value = x.Value
            }));
        }
Ejemplo n.º 16
0
        /**/

        public void AddProductVariation(ContentReference referenceToProduct, ContentReference referenceToVariation)
        {
            var newVariation = new ProductVariation
            {
                SortOrder = 100,
                Parent    = referenceToProduct,
                Child     = referenceToVariation,
                GroupName = "Default",
                Quantity  = 1.000M
            };

            _relationRepository.UpdateRelation(newVariation);
        }
        private void AddProductDescriptionsForVariants(Product product, ProductVariation sfProduct)
        {
            var productDefinitionId = product.ProductDefinition.Id;
            var definition          = _session.Query <ProductDefinition>().FirstOrDefault(x => x.ProductDefinitionId == productDefinitionId);

            if (definition == null)
            {
                return;
            }

            // Create product descriptions for each variant culture
            foreach (var translation in sfProduct.CultureTranslations)
            {
                var attributeNames              = translation.Value.VariantNames.Attribute.Split(',');
                var attributeValues             = translation.Value.VariantNames.AttributeValue.Split(',');
                var productDefinitionFieldNames = sfProduct.VariantNames.Attribute.Split(',');

                // There are no descriptions in Sitefinity at the variant level so for uCommerce we use
                // the concatenated variant values for display name + long & short descriptions
                var displayName      = translation.Value.VariantNames.AttributeValue;
                var shortDescription = translation.Value.VariantNames.AttributeValue;
                var longDescription  = translation.Value.VariantNames.AttributeValue;

                var productDescription = new ProductDescription
                {
                    CultureCode      = translation.Key,
                    DisplayName      = displayName,
                    ShortDescription = shortDescription,
                    LongDescription  = longDescription
                };

                // Create product description properties for each variant value culture
                for (var i = 0; i < attributeNames.Length; i++)
                {
                    var fieldName = productDefinitionFieldNames[i];
                    var field     = definition.ProductDefinitionFields.FirstOrDefault(x => x.Name == fieldName.Trim());

                    var productDescriptionProperty = new ProductDescriptionProperty
                    {
                        ProductDefinitionField = field,
                        ProductDescription     = productDescription,
                        Value       = attributeValues[i],
                        CultureCode = translation.Key
                    };

                    productDescription.AddProductDescriptionProperty(productDescriptionProperty);
                }

                product.AddProductDescription(productDescription);
            }
        }
Ejemplo n.º 18
0
        /// <summary>
        /// Add Product Variation With product Id and volume
        /// </summary>
        /// <param name="product_Id">Product Id</param>
        /// <param name="volume">Volume of product variation</param>
        public void AddProductVariation(Guid product_Id, string volume)
        {
            var item = new ProductVariation
            {
                Id            = Guid.NewGuid(),
                Product_Id    = product_Id,
                Volume        = volume,
                Price         = 0,
                SKU           = "Empty",
                StockQuantity = 0,
                CreatedDate   = DateTime.Now,
                IsActive      = true
            };

            _productVariationService.Insert(item);
        }
Ejemplo n.º 19
0
        public CartItem AddToCart(long userId, long productId, string variationName, int quantity)
        {
            ProductVariation productVariation = null;

            var cartItemQuery = cartItemRepository
                                .Query()
                                .Include(x => x.Product)
                                .Where(x => x.ProductId == productId && x.UserId == userId);

            if (!string.IsNullOrWhiteSpace(variationName))
            {
                productVariation =
                    productVariationRepository.Query()
                    .FirstOrDefault(x => x.Name == variationName && x.ProductId == productId);

                cartItemQuery = cartItemQuery.Where(x => x.ProductVariationId == productVariation.Id);
            }

            var cartItem = cartItemQuery.FirstOrDefault();

            if (cartItem == null)
            {
                cartItem = new CartItem
                {
                    UserId    = userId,
                    ProductId = productId,
                    Quantity  = quantity,
                    CreatedOn = DateTime.Now
                };

                cartItemRepository.Add(cartItem);
            }
            else
            {
                cartItem.Quantity = quantity;
            }

            if (productVariation != null)
            {
                cartItem.ProductVariationId = productVariation.Id;
            }

            cartItemRepository.SaveChange();

            return(cartItem);
        }
Ejemplo n.º 20
0
        private ProductVaDetailViewModel GetProductVaDetailViewModel(ProductVariation productVariation)
        {
            var model = new ProductVaDetailViewModel
            {
                Id            = productVariation.Id,
                Price         = productVariation.Price,
                DiscountPrice = productVariation.DiscountPrice,
                Product       = productVariation.Product,
                ProductImage  = productVariation.ProductImage,
                SKU           = productVariation.SKU,
                Volume        = productVariation.Volume,
                StockQuantity = productVariation.StockQuantity,
                Product_Id    = productVariation.Product_Id
            };

            return(model);
        }
Ejemplo n.º 21
0
        public void Test3()
        {
            var sizeVariation = new SizeVariation()
            {
                ListParams = new List <Size>()
                {
                    new Size()
                    {
                        TypeSize = SizesEnum.Breast, Value = 90, MaxValue = 100
                    },
                    new Size()
                    {
                        TypeSize = SizesEnum.Waist, Value = 65, MaxValue = 70
                    },
                    new Size()
                    {
                        TypeSize = SizesEnum.Hips, Value = 95, MaxValue = 100
                    },
                    new Size()
                    {
                        TypeSize = SizesEnum.WidthOfTheShoulders, Value = 70, MaxValue = 75
                    }
                }
            };
            var pv = new ProductVariation()
            {
                SizeVariation = new List <SizeVariation>()
                {
                    sizeVariation
                }
            };
            var customerSize = new UserSizes()
            {
                Breast         = 92,
                Waist          = 66,
                Thigh          = 97,
                ShouldersWidth = 69,
            };
            double expected = 7.28;

            pv = SizeResponseController.CalculateRating(pv, customerSize);
            var actual = pv.SizeVariation.FirstOrDefault().Rating;

            Assert.IsTrue(Math.Abs(expected - actual) < 0.1);
        }
Ejemplo n.º 22
0
        public static ProVarationViewModel ConvertModelFromDomainToProVa(ProductVariation productVariation)
        {
            var model = new ProVarationViewModel
            {
                Id            = productVariation.Id,
                Product_Id    = productVariation.Product_Id,
                SKU           = productVariation.SKU,
                Volume        = productVariation.Volume,
                Price         = productVariation.Price,
                DiscountPrice = productVariation.DiscountPrice,
                StockQuantity = productVariation.StockQuantity,
                CreateDate    = productVariation.CreatedDate,
                UpdateDate    = productVariation.UpdatedDate,
                IsActive      = productVariation.IsActive
            };

            return(model);
        }
Ejemplo n.º 23
0
        public async Task <IActionResult> DeleteProductVariation(int id)
        {
            ProductVariation productVariation = await _db.ProductVariations.FindAsync(id);

            var product = await _db.Products.FindAsync(productVariation.ProductId);

            _db.ProductVariations.Remove(productVariation);
            await _db.SaveChangesAsync();

            product.VarNumber = await _db.ProductVariations.AsNoTracking()
                                .Where(c => c.ProductId.Equals(product.Id))
                                .CountAsync();

            _db.Update(product);
            await _db.SaveChangesAsync();

            HttpContext.Session.SetInt32("Message", (int)Messages.DeletedSuccessfully);
            return(RedirectToAction(controllerName: "Products",
                                    actionName: "EditProduct", routeValues: new { id = productVariation.ProductId }));
        }
Ejemplo n.º 24
0
        private static void MapProductVariationVmToProduct(ProductForm model, Product product)
        {
            foreach (var variationVm in model.Product.Variations)
            {
                var variation = new ProductVariation
                {
                    Name        = variationVm.Name,
                    PriceOffset = variationVm.PriceOffset
                };
                foreach (var combinationVm in variationVm.OptionCombinations)
                {
                    variation.AddOptionCombination(new ProductOptionCombination
                    {
                        OptionId = combinationVm.OptionId,
                        Value    = combinationVm.Value
                    });
                }

                product.AddProductVariation(variation);
            }
        }
Ejemplo n.º 25
0
        private void AddOrDeleteProductVariation(ProductForm model, Product product)
        {
            foreach (var productVariationVm in model.Product.Variations)
            {
                var variation = product.Variations.FirstOrDefault(x => x.Name == productVariationVm.Name);
                if (variation == null)
                {
                    variation = new ProductVariation
                    {
                        Name        = productVariationVm.Name,
                        PriceOffset = productVariationVm.PriceOffset
                    };
                    foreach (var combinationVm in productVariationVm.OptionCombinations)
                    {
                        variation.AddOptionCombination(new ProductOptionCombination
                        {
                            OptionId = combinationVm.OptionId,
                            Value    = combinationVm.Value
                        });
                    }

                    product.AddProductVariation(variation);
                }
                else
                {
                    variation.PriceOffset = productVariationVm.PriceOffset;
                    variation.IsDeleted   = false;
                }
            }

            foreach (var variation in product.Variations)
            {
                if (model.Product.Variations.All(x => x.Name != variation.Name))
                {
                    variation.IsDeleted = true;
                }
            }
        }
Ejemplo n.º 26
0
        /// <summary>
        /// Get subscription duration
        /// </summary>
        /// <param name="variation"></param>
        /// <returns></returns>
        public int GetSubscriptionDuration([Required] ProductVariation variation)
        {
            if (variation == null)
            {
                return(0);
            }
            var periodString = variation.ProductVariationDetails.FirstOrDefault(x => x.ProductOption.Name.Equals("Period"))?.Value;
            var measureUnit  = variation.ProductVariationDetails.FirstOrDefault(x => x.ProductOption.Name.Equals("Unit"))?.Value;
            var days         = 30;
            var period       = Convert.ToInt32(periodString);
            var today        = DateTime.Today;

            switch (measureUnit)
            {
            case "day": days = period; break;

            case "month": days = (today.AddMonths(period) - today).Days; break;

            case "year": days = (today.AddYears(period) - today).Days; break;
            }

            return(days);
        }
Ejemplo n.º 27
0
        /// <summary>
        /// Map variation product
        /// </summary>
        /// <param name="product"></param>
        /// <param name="variation"></param>
        /// <param name="amount"></param>
        /// <returns></returns>
        public static Order Map(Product product, ProductVariation variation, int amount = 1)
        {
            if (product == null)
            {
                throw new NullReferenceException();
            }
            var order = new Order
            {
                OrderState    = OrderState.New,
                ProductOrders = new List <ProductOrder>
                {
                    new ProductOrder
                    {
                        ProductId            = product.Id,
                        Amount               = amount,
                        PriceWithOutDiscount = variation == null ? product.PriceWithoutDiscount : variation.Price,
                        DiscountValue        = product.DiscountPrice,
                        ProductVariationId   = variation?.Id
                    }
                }
            };

            return(order);
        }
        public void CreateWithCode()
        {
            string nodeName    = "myNode";
            string productName = "myProduct";
            string skuName     = "mySku";

            // Get ReferenceConverter and LinksRepository
            ReferenceConverter refConv  = ServiceLocator.Current.GetInstance <ReferenceConverter>();
            ILinksRepository   linksRep = ServiceLocator.Current.GetInstance <ILinksRepository>();

            // Create Node
            ContentReference linkToParentNode = refConv.GetContentLink("Women_1");
            var contentRepository             = ServiceLocator.Current.GetInstance <IContentRepository>();

            var newNode = contentRepository.GetDefault <FashionNode>(linkToParentNode, new CultureInfo("en"));

            newNode.Code        = nodeName;
            newNode.SeoUri      = nodeName;
            newNode.Name        = nodeName;
            newNode.DisplayName = nodeName;

            ContentReference newNodeRef = contentRepository.Save
                                              (newNode, SaveAction.Publish, EPiServer.Security.AccessLevel.NoAccess);

            // Create Product
            var newProduct = contentRepository.GetDefault <BlouseProduct>(newNodeRef, new CultureInfo("en"));

            //Set some properties.
            newProduct.Code                       = productName;
            newProduct.SeoUri                     = productName;
            newProduct.Name                       = productName;
            newProduct.DisplayName                = productName;
            newProduct.SeoInformation.Title       = "SEO Title";
            newProduct.SeoInformation.Keywords    = "Some keywords";
            newProduct.SeoInformation.Description = "A nice one";
            newProduct.MainBody                   = new XhtmlString("This new product is great");

            ContentReference newProductRef = contentRepository.Save
                                                 (newProduct, SaveAction.Publish, EPiServer.Security.AccessLevel.NoAccess);

            // Create SKU
            var newSku = contentRepository.GetDefault <FashionVariation>(newNodeRef, new CultureInfo("en"));

            newSku.Code        = skuName;
            newSku.SeoUri      = skuName;
            newSku.Name        = skuName;
            newSku.DisplayName = skuName;

            ContentReference newSkuRef = contentRepository.Save
                                             (newSku, SaveAction.Publish, EPiServer.Security.AccessLevel.NoAccess);

            // what differs from CMS
            ProductVariation prodVarRel = new ProductVariation();

            prodVarRel.Target    = newSkuRef;
            prodVarRel.Source    = newProductRef;
            prodVarRel.SortOrder = 100;

            linksRep.UpdateRelation(prodVarRel);

            // done, but...
            /* ...still missing Market, Inventory, Pricing and Media + a few other things */

            // ToDo: ...some redirect... somewhere
        }
Ejemplo n.º 29
0
        public void CreateWithCode()
        {
            // ToDo: Use with Blouses in "Fund"...
            string nodeName    = "myNode";
            string productName = "myProduct";
            string skuName     = "mySku";

            // Get ReferenceConverter and LinksRepository
            ReferenceConverter refConv = ServiceLocator.Current.GetInstance <ReferenceConverter>();

            //ILinksRepository linksRep = ServiceLocator.Current.GetInstance<ILinksRepository>(); Obsoleted
            IRelationRepository _relRep = ServiceLocator.Current.GetInstance <IRelationRepository>(); // the one to use

            // Create Node
            ContentReference linkToParentNode = refConv.GetContentLink("Women_1");
            // if an int... look at the second arg.
            //ContentReference cref0 = _referenceConverter.GetContentLink(42, CatalogContentType.CatalogNode, 0);

            var contentRepository = ServiceLocator.Current.GetInstance <IContentRepository>();

            var newNode = contentRepository.GetDefault <FashionNode>(linkToParentNode, new CultureInfo("en"));

            newNode.Code        = nodeName;
            newNode.SeoUri      = nodeName;
            newNode.Name        = nodeName;
            newNode.DisplayName = nodeName;

            ContentReference newNodeRef = contentRepository.Save
                                              (newNode, SaveAction.Publish, EPiServer.Security.AccessLevel.NoAccess);

            // Create Product
            //LanguageSelector selEN = new LanguageSelector("en"); // obsoleted
            var newProduct = contentRepository.GetDefault <BlouseProduct>(newNodeRef, new CultureInfo("en"));

            //Set some required properties.
            newProduct.Code   = productName;
            newProduct.SeoUri = productName;
            newProduct.Name   = productName; // before: InternalName
            //newProduct.CanBeMonogrammed = false;
            //newProduct.Brand = "Ford";
            //newProduct.Color = "Gold";
            newProduct.DisplayName = productName; // before: Name
            //newProduct. ClothesType = "CarClothes";
            newProduct.SeoInformation.Title       = "SEO Title";
            newProduct.SeoInformation.Keywords    = "Some keywords";
            newProduct.SeoInformation.Description = "A nice one";
            newProduct.MainBody = new XhtmlString("This new product is great");

            ContentReference newProductRef = contentRepository.Save
                                                 (newProduct, SaveAction.Publish, EPiServer.Security.AccessLevel.NoAccess);

            // Create SKU
            var newSku = contentRepository.GetDefault <ShirtVariation>(newNodeRef, new CultureInfo("en"));

            newSku.Code        = skuName;
            newSku.SeoUri      = skuName;
            newSku.Name        = skuName;
            newSku.DisplayName = skuName;

            ContentReference newSkuRef = contentRepository.Save
                                             (newSku, SaveAction.Publish, EPiServer.Security.AccessLevel.NoAccess);

            // what differs from CMS - ILinksRep. & IRelationRep
            ProductVariation prodVarRel = new ProductVariation();

            //prodVarRel.Target = newSkuRef;
            prodVarRel.Child = newSkuRef;
            //prodVarRel.Source = newProductRef;
            prodVarRel.Parent    = newProductRef;
            prodVarRel.SortOrder = 100; // usable in 11

            _relRep.UpdateRelation(prodVarRel);
        }
Ejemplo n.º 30
0
        public async Task <Response> ImportFile(FileImportDto dto)
        {
            var response = new Response();
            var lines    = System.IO.File.ReadLines(dto.UploadedFileName);

            foreach (var line in lines.Skip(1)) //Skip Header
            {
                try
                {
                    var splittedRow = line.Split(',');
                    if (splittedRow.Length != 10)
                    {
                        response.Warnings.Add(string.Format(_errorHandler.GetMessage(ErrorMessages.InputRowColumnCountIsNotExpected), line));
                    }
                    else
                    {
                        decimal price = 0, discount = 0;
                        if (!decimal.TryParse(splittedRow[4], out price))
                        {
                            response.Warnings.Add(string.Format(_errorHandler.GetMessage(ErrorMessages.WrongFormat), "Price", line));
                        }
                        if (!decimal.TryParse(splittedRow[5], out discount))
                        {
                            response.Warnings.Add(string.Format(_errorHandler.GetMessage(ErrorMessages.WrongFormat), "DiscountPrice", line));
                        }

                        //Product
                        var product = _productRepo.GetAll().FirstOrDefault(p => p.ArtikelCode == splittedRow[1] && p.ColorCode == splittedRow[2] && p.Description == splittedRow[3]);
                        if (product == null)
                        {
                            product = await _productRepo.Add(new Product()
                            {
                                ArtikelCode = splittedRow[1], ColorCode = splittedRow[2], Description = splittedRow[3]
                            });
                        }
                        //Color
                        var color = _colorRepo.GetAll().FirstOrDefault(p => p.Name == splittedRow[9]);
                        if (color == null)
                        {
                            color = await _colorRepo.Add(new Color()
                            {
                                Name = splittedRow[9]
                            });
                        }
                        //Size
                        var size = _sizeRepo.GetAll().FirstOrDefault(p => p.Name == splittedRow[8]);
                        if (size == null)
                        {
                            size = await _sizeRepo.Add(new Size()
                            {
                                Name = splittedRow[8]
                            });
                        }

                        var productVar = new ProductVariation()
                        {
                            Key           = splittedRow[0],
                            Price         = price,
                            DiscountPrice = discount,
                            DeliveredIn   = splittedRow[6],
                            Q1            = splittedRow[7],
                            ColorId       = color.Id,
                            ProductId     = product.Id,
                            SizeId        = size.Id,
                        };

                        await _productVariationRepo.Add(productVar);
                    }
                }
                catch (System.Exception ex)
                {
                    response.HasError = true;
                    response.Errors.Add(string.Format(_errorHandler.GetMessage(ErrorMessages.UnexpectedError), ex.Message, line));
                }
            }

            return(response);
        }
        //Injected<ReferenceConverter> _refConv;
        //Injected<ILinksRepository> _linksRep;
        public void CreateWithCode() // Maybe not the right place to put this code...
        {
            string nodeName    = "myNode";
            string productName = "myProduct";
            string skuName     = "mySku";

            // Get ReferenceConverter and LinksRepository, but not this way...
            //ReferenceConverter refConv = ServiceLocator.Current.GetInstance<ReferenceConverter>();
            //ILinksRepository linksRep = ServiceLocator.Current.GetInstance<ILinksRepository>();


            // Create Node
            ContentReference linkToParentNode = _referenceConverter.GetContentLink("Women_1");
            var contentRepository             = ServiceLocator.Current.GetInstance <IContentRepository>();

            var newNode = contentRepository.GetDefault <FashionNode>(linkToParentNode, new CultureInfo("en"));

            newNode.Code        = nodeName;
            newNode.SeoUri      = nodeName;
            newNode.Name        = nodeName;
            newNode.DisplayName = nodeName;

            ContentReference newNodeRef = contentRepository.Save
                                              (newNode, SaveAction.Publish, EPiServer.Security.AccessLevel.NoAccess);

            // Create Product
            var newProduct = contentRepository.GetDefault <BlouseProduct>(newNodeRef, new CultureInfo("en"));

            //Set some properties.
            newProduct.Code                       = productName;
            newProduct.SeoUri                     = productName;
            newProduct.Name                       = productName;
            newProduct.DisplayName                = productName;
            newProduct.SeoInformation.Title       = "SEO Title";
            newProduct.SeoInformation.Keywords    = "Some keywords";
            newProduct.SeoInformation.Description = "A nice one";
            newProduct.MainBody                   = new XhtmlString("This new product is great");

            // Persist the Product
            ContentReference newProductReference = contentRepository.Save
                                                       (newProduct, SaveAction.Publish, EPiServer.Security.AccessLevel.NoAccess);

            // Create SKU
            var newSku = contentRepository.GetDefault <ShirtVariation>(newNodeRef, new CultureInfo("en"));

            newSku.Code        = skuName;
            newSku.SeoUri      = skuName;
            newSku.Name        = skuName;
            newSku.DisplayName = skuName;
            //newSku.ParentLink = newProductReference; // Can do this in 10 - will change in 11

            ContentReference newSkuReference = contentRepository.Save
                                                   (newSku, SaveAction.Publish, EPiServer.Security.AccessLevel.NoAccess);

            //what differs from CMS
            ProductVariation prodVariationLink0 = new ProductVariation()
            {
                Child     = newSkuReference,
                Parent    = newProductReference,
                SortOrder = 100
            };

            _relationRepository.UpdateRelation(prodVariationLink0);

            // ...old-school
            //IEnumerable<Relation> rels1 = _linksRepository.GetRelationsByTarget
            //    (_referenceConverter.GetContentLink("Shirts_1"));

            //IEnumerable<Relation> rels2 = _linksRepository.GetRelationsBySource(
            //    _referenceConverter.GetContentLink("Shirts_1")).OfType<NodeRelation>();

            //contentRepository.GetChildren<CatalogContentBase>(_referenceConverter.GetContentLink(""));

            // done, but...
            /* ...still missing Market, Inventory, Pricing and Media + a few other things */

            // ToDo: ...redirect...
        }