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); }
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()); }
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); }
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 }); } }