Esempio n. 1
0
        private Tags SetTags(Core.Domain.Catalog.Product product)
        {
            Tags tags = new Tags();

            if (product.ProductCategories != null && product.ProductCategories.Count > 0)
            {
                foreach (ProductCategory cat in product.ProductCategories)
                {
                    switch (cat.Category?.Name)
                    {
                    case "Mens clothing": tags.Herretoj = true; break;

                    case "Womens clothing": tags.Dametoj = true; break;

                    case "Child wear": tags.Bornetoj = true; break;

                    case "Back packs": tags.Rygsaekke = true; break;

                    case "Sleeping bags": tags.Soveposer = true; break;

                    case "Tents": tags.Telte = true; break;

                    case "Cooking": tags.Kogegrej = true; break;

                    case "Travel accessories": tags.Tilbehor = true; break;

                    case "Footwear": tags.Fodtoj = true; break;

                    default: tags.Diverse = true; break;
                    }
                }
            }

            return(tags);
        }
Esempio n. 2
0
        public string BuildJSONString(Core.Domain.Catalog.Product product)
        {
            KachingProductModel kaChingProduct = new KachingProductModel();

            kaChingProduct.Product             = new Models.Product();
            kaChingProduct.Product.Id          = product.Id.ToString();
            kaChingProduct.Product.Name        = new Description();
            kaChingProduct.Product.Name.Da     = kaChingProduct.Product.Name.En = product.Name;
            kaChingProduct.Product.Description = new Description();
            if (!string.IsNullOrEmpty(product.FullDescription))
            {
                kaChingProduct.Product.Description.Da = kaChingProduct.Product.Description.En = product.FullDescription.StripHTML();
            }
            kaChingProduct.Product.RetailPrice = (long)product.Price;

            foreach (var pp in product.ProductPictures)
            {
                var pictureUrl = _pictureService.GetPictureUrl(pp.PictureId);
                kaChingProduct.Product.ImageUrl = pictureUrl;

                break;
            }

            List <Variant>   variants   = new List <Variant>();
            List <Dimension> dimensions = GetDimensions(product, ref variants);

            if (variants.Count == 1)
            {
                kaChingProduct.Product.Barcode = variants[0].Barcode;
            }
            else if (variants.Count > 0)
            {
                kaChingProduct.Product.Variants   = variants.ToArray();
                kaChingProduct.Product.Dimensions = dimensions.ToArray();
            }

            kaChingProduct.Metadata                 = new Metadata();
            kaChingProduct.Metadata.Channels        = new Channels();
            kaChingProduct.Metadata.Markets         = new Markets();
            kaChingProduct.Metadata.Channels.Pos    = true;
            kaChingProduct.Metadata.Channels.Online = true;
            kaChingProduct.Metadata.Markets.Dk      = true;

            kaChingProduct.Product.Tags = SetTags(product);

            string output = JsonConvert.SerializeObject(kaChingProduct, new JsonSerializerSettings {
                NullValueHandling = NullValueHandling.Ignore, DefaultValueHandling = DefaultValueHandling.Ignore
            });

            return(output);
        }
        private string GetProductAttributes(Core.Domain.Catalog.Product product, string dataJson, Dictionary <string, SelectedOption> options, int designId, string formOptions)
        {
            var ccSettings                  = _settingService.LoadSetting <CcSettings>();
            var productMappings             = _productAttributeService.GetProductAttributeMappingsByProductId(product.Id);
            var productAttributeMappingCcId = productMappings.First(x => x.ProductAttributeId == ccSettings.CcIdAttributeId);

            var optionsAttributesXml    = GetOptionsAttributes(product, options);
            var formOptionsAttributeXml = GetFormOptionsAttributesXml(product, formOptions);

            optionsAttributesXml += formOptionsAttributeXml;

            return(string.Format("<Attributes>" +
                                 "<ProductAttribute ID=\"{0}\"><ProductAttributeValue><Value>{1}</Value></ProductAttributeValue></ProductAttribute>" +
                                 optionsAttributesXml +
                                 "</Attributes>", productAttributeMappingCcId.Id, designId));
        }
        private string GetOptionsAttributes(Core.Domain.Catalog.Product product, Dictionary <string, SelectedOption> options)
        {
            var result = new StringBuilder();

            foreach (var option in options)
            {
                var val    = option.Value;
                var attrId = val.Option.Id;

                if (val.Value != null && val.Value.Any())
                {
                    result.AppendFormat("<ProductAttribute ID=\"{0}\">", attrId);
                    foreach (var selectedOption in val.Value)
                    {
                        result.AppendFormat("<ProductAttributeValue><Value>{0}</Value></ProductAttributeValue>", selectedOption);
                    }
                    result.AppendLine("</ProductAttribute>");
                }
            }
            return(result.ToString());
        }
Esempio n. 5
0
        private List <Dimension> GetDimensions(Core.Domain.Catalog.Product product, ref List <Variant> variants)
        {
            List <Dimension> dimensions = new List <Dimension>();
            var combinationValues       = _productAttributeService.GetAllProductAttributeCombinations(product.Id);

            int colorAttributeId = 0, sizeAttributeId = 0;

            GetColorAndSizeId(ref colorAttributeId, ref sizeAttributeId);

            Variant variant = null;

            foreach (var combinationValue in combinationValues)
            {
                XmlDocument attributesXml = new XmlDocument();
                attributesXml.LoadXml(combinationValue.AttributesXml);

                Value colorValue = null, sizeValue = null;

                foreach (XmlNode node in attributesXml.DocumentElement)
                {
                    Dimension    colorDimension = new Dimension();
                    Dimension    sizeDimension  = new Dimension();
                    List <Value> colorValues    = new List <Value>();
                    List <Value> sizeValues     = new List <Value>();

                    var attributeId      = Convert.ToInt32(node.Attributes["ID"].Value);
                    var attributeValueId = Convert.ToInt32(node.FirstChild.FirstChild.InnerText);
                    var attributeValue   = _productAttributeService.GetProductAttributeValueById(attributeValueId);

                    var    mapping  = _productAttributeService.GetProductAttributeMappingById(attributeId);
                    string imageUrl = "";
                    if (attributeValue.PictureId > 0)
                    {
                        imageUrl = _pictureService.GetPictureUrl(attributeValue.PictureId);
                    }
                    else if (product.ProductPictures != null && product.ProductPictures.Count > 0)
                    {
                        imageUrl = _pictureService.GetPictureUrl(product.ProductPictures.First().PictureId);
                    }

                    if (mapping.ProductAttributeId == colorAttributeId)
                    {
                        colorDimension.Id   = "color";
                        colorDimension.Name = "Color";

                        colorValue          = new Value();
                        colorValue.Id       = attributeValue.Id.ToString();
                        colorValue.ImageUrl = imageUrl;
                        colorValue.Name     = attributeValue.Name;

                        colorValues.Add(colorValue);

                        colorDimension.Values = colorValues.ToArray();
                        dimensions.Add(colorDimension);
                    }
                    else if (mapping.ProductAttributeId == sizeAttributeId)
                    {
                        sizeDimension.Id   = "size";
                        sizeDimension.Name = "Size";

                        sizeValue      = new Value();
                        sizeValue.Id   = attributeValue.Id.ToString();
                        sizeValue.Name = attributeValue.Name;

                        sizeValues.Add(sizeValue);

                        sizeDimension.Values = sizeValues.ToArray();
                        dimensions.Add(sizeDimension);
                    }

                    variant                 = new Variant();
                    variant.Barcode         = combinationValue.Gtin;
                    variant.Id              = combinationValue.Id.ToString();
                    variant.ImageUrl        = imageUrl;
                    variant.DimensionValues = new DimensionValues();

                    variant.DimensionValues.Color = colorValue != null ? colorValue.Id : "0";
                    variant.DimensionValues.Size  = sizeValue != null ? sizeValue.Id : "0";

                    variants.Add(variant);
                }
            }

            return(dimensions);
        }
Esempio n. 6
0
        async Task AddProductsIfMissing(IReadOnlyList <ProductDTO> productDTOs)
        {
            var carrefourVendor = (await _vendorService.GetAllVendorsAsync(CARREFOUR_CUSTOMER_NAME)).FirstOrDefault();

            if (carrefourVendor == null)
            {
                await _logger.ErrorAsync($"Vendor with name {CARREFOUR_CUSTOMER_NAME} doesn't exist");

                return;
            }

            foreach (var productDTO in productDTOs)
            {
                var existingProduct = await _productService.GetProductBySkuAsync(productDTO.Code.ToString());

                if (existingProduct != null)
                {
                    await _logger.InformationAsync($"Product with code {productDTO.Code} exists, skipping");

                    continue;
                }

                var picture = await _pictureService.InsertPictureAsync(productDTO.Image, MimeTypes.ImageJpeg, productDTO.ImageFileName);

                var product = new Core.Domain.Catalog.Product()
                {
                    Sku                   = productDTO.Code.ToString(),
                    Name                  = productDTO.Name,
                    Price                 = productDTO.Price,
                    ShortDescription      = productDTO.ShortDescription,
                    FullDescription       = productDTO.FullDescription,
                    VendorId              = carrefourVendor.Id,
                    IsShipEnabled         = true,
                    DisableWishlistButton = true,
                    Published             = true,
                    CreatedOnUtc          = DateTime.Now,
                    UpdatedOnUtc          = DateTime.Now,
                    RibbonEnable          = false
                };

                await _productService.InsertProductAsync(product);

                var vendorCategory = await GetExactCategoryByName(CARREFOUR_CUSTOMER_NAME);

                if (vendorCategory == null)
                {
                    vendorCategory = new Core.Domain.Catalog.Category
                    {
                        Name             = CARREFOUR_CUSTOMER_NAME,
                        IncludeInTopMenu = true,
                        CreatedOnUtc     = DateTime.Now,
                        UpdatedOnUtc     = DateTime.Now,
                        Published        = true,
                        AllowCustomersToSelectPageSize = true,
                        PageSizeOptions = "6, 3, 9"
                    };

                    await _categoryService.InsertCategoryAsync(vendorCategory);

                    await _urlRecordService.InsertUrlRecordAsync(new Core.Domain.Seo.UrlRecord {
                        EntityId   = vendorCategory.Id,
                        EntityName = "Category",
                        IsActive   = true,
                        LanguageId = 0,
                        Slug       = vendorCategory.Name
                    });
                }

                var productCategory = await GetExactCategoryByName(productDTO.Category);

                if (productCategory == null)
                {
                    productCategory = new Core.Domain.Catalog.Category
                    {
                        Name             = productDTO.Category,
                        CreatedOnUtc     = DateTime.Now,
                        UpdatedOnUtc     = DateTime.Now,
                        ParentCategoryId = vendorCategory.Id,
                        Published        = true,
                        AllowCustomersToSelectPageSize = true,
                        PageSizeOptions = "6, 3, 9"
                    };

                    await _categoryService.InsertCategoryAsync(productCategory);

                    await _urlRecordService.InsertUrlRecordAsync(new Core.Domain.Seo.UrlRecord
                    {
                        EntityId   = productCategory.Id,
                        EntityName = "Category",
                        IsActive   = true,
                        LanguageId = 0,
                        Slug       = productCategory.Name
                    });
                }

                bool haveSubCategorySpecified = productDTO.SubCategory == null ? true : false;
                var  productSubCategory       = haveSubCategorySpecified ? await GetExactCategoryByName(productDTO.SubCategory) : null;

                if (haveSubCategorySpecified && productSubCategory == null)
                {
                    productSubCategory = new Core.Domain.Catalog.Category
                    {
                        Name             = productDTO.SubCategory,
                        CreatedOnUtc     = DateTime.Now,
                        UpdatedOnUtc     = DateTime.Now,
                        ParentCategoryId = productCategory.Id,
                        Published        = true,
                        AllowCustomersToSelectPageSize = true,
                        PageSizeOptions = "6, 3, 9"
                    };

                    await _categoryService.InsertCategoryAsync(productSubCategory);

                    await _urlRecordService.InsertUrlRecordAsync(new Core.Domain.Seo.UrlRecord
                    {
                        EntityId   = productSubCategory.Id,
                        EntityName = "Category",
                        IsActive   = true,
                        LanguageId = 0,
                        Slug       = productSubCategory.Name
                    });
                }

                await _categoryService.InsertProductCategoryAsync(new Core.Domain.Catalog.ProductCategory {
                    ProductId  = product.Id,
                    CategoryId = haveSubCategorySpecified ? productSubCategory.Id : productCategory.Id
                });

                await _productService.InsertProductPictureAsync(new Core.Domain.Catalog.ProductPicture
                {
                    PictureId = picture.Id,
                    ProductId = product.Id
                });
            }
        }