public override void ProcessProduct() { foreach(var row in Source_CSV) { if (row[headerType.Where(h => h.HeaderName == "InStock").SingleOrDefault().ColumnNumber].ToLower() == "true") { Product _product = new Product(); _product.Handle = row[headerType.Where(h => h.HeaderName == "Handle").SingleOrDefault().ColumnNumber]; _product.Title = row[headerType.Where(h => h.HeaderName == "Title").SingleOrDefault().ColumnNumber]; _product.BodyHTML = row[headerType.Where(h => h.HeaderName == "BodyHTML").SingleOrDefault().ColumnNumber]; _product.EAN = row[headerType.Where(h => h.HeaderName == "Barcode").SingleOrDefault().ColumnNumber]; _product.Vendor = row[headerType.Where(h => h.HeaderName == "Vendor").SingleOrDefault().ColumnNumber]; _product.Type = row[headerType.Where(h => h.HeaderName == "Type").SingleOrDefault().ColumnNumber]; _product = GetImages(_product, row); _product = GetOptions(_product, row); _product = GetVariant(_product, row); _products.Add(_product); } else { Product _product = new Product(); _product.Handle = row[headerType.Where(h => h.HeaderName == "Handle").SingleOrDefault().ColumnNumber]; OutOfStock.Add(_product); Product_OutStock = Product_OutStock + 1; _products.Add(_product); } } }
//Product with Variants. public void UpdateProduct(Product product, string id, Shopify_Product_Loader_ShopifyClass.Product shofiy_product) { StringBuilder sb = new StringBuilder(); sb.Append("{ \"product\": {"); sb.Append("\"id\":\"" + id + "\""); sb.Append(",\"published\":\"true\""); // sb.Append(",\"tags\":\"" + product.Tags + "\""); sb.Append(",\"variants\": ["); int loopVariants = 0; foreach (var variants in shofiy_product.variants) { ProductVariant TempVariant = null; if (!string.IsNullOrEmpty(variants.option1) && product.ProductVariantList.Count > 1 && product.Options != null) { TempVariant = (from _p in product.ProductVariantList where _p.Options.Where(pp => pp == variants.option1) != null select _p).FirstOrDefault(); } else { TempVariant = product.ProductVariantList.FirstOrDefault(); } if (loopVariants == 0) { sb.Append("{"); loopVariants = loopVariants + 1; } else { sb.Append(",{"); } sb.Append("\"id\":\"" + variants.id + "\""); sb.Append(",\"price\":\"" + TempVariant.Price + "\""); sb.Append(",\"barcode\":\"" + TempVariant.barcode + "\""); // EAN sb.Append("}"); } sb.Append("]"); sb.Append("}"); sb.Append("}"); string json = sb.ToString(); Shopify_Put("/admin/products/" + id + ".json", json, id); }
//Product with no Variants public void UpdateProduct(Product product, string id, string variantId) { StringBuilder sb = new StringBuilder(); sb.Append("{ \"product\": {"); sb.Append("\"id\":\"" + id + "\""); sb.Append(",\"published\":\"true\""); //sb.Append(",\"tags\":\"" + product.Tags + "\""); sb.Append(",\"variants\": [{"); sb.Append("\"id\":\"" + variantId + "\""); sb.Append(",\"price\":\"" + product.ProductVariantList[0].Price + "\""); sb.Append(",\"barcode\":\"" + product.EAN + "\""); // EAN sb.Append("}]"); sb.Append("}"); sb.Append("}"); string json = sb.ToString(); Shopify_Put("/admin/products/" + id + ".json", json, id); }
public void CreateNewProduct(Product product) { StringBuilder sb = new StringBuilder(); sb.Append("{ \"product\": {"); sb.Append("\"title\":\"" + product.Title + "\""); sb.Append(",\"body_html\":\"" + product.BodyHTML.Replace("\t", "").Replace("'", "").Replace("Â", "") + "\""); sb.Append(",\"vendor\":\"" + product.Vendor + "\""); sb.Append(",\"handle\":\"" + product.Handle + "\""); sb.Append(",\"tags\":\"" + product.Tags + "\""); sb.Append(",\"product_type\":\"" + product.Type + "\""); sb.Append(",\"images\": [ "); sb.Append("{\"src\":\"" + product.Image_Src + "\"}"); //Add more then one images. foreach (string image in product.Other_Images) { sb.Append(",{\"src\":\"" + image + "\"}"); } sb.Append("]"); if (product.Options != null && product.Options.Count() > 0) { int optionLoop = 0; sb.Append(",\"options\":["); foreach (var tempVendor in product.Options) { if (optionLoop == 0) { sb.Append("{"); } else { sb.Append(",{"); } optionLoop = optionLoop + 1; sb.Append("\"name\":\"" + tempVendor.Name + "\""); sb.Append(",\"position\":" + optionLoop); sb.Append(",\"title\":\"" + tempVendor.Name + "\""); int valuesLoop = 0; sb.Append(",\"values\":["); foreach (var tempValue in tempVendor.OptionValue) { if (valuesLoop == 0) { sb.Append("\"" + tempValue + "\""); valuesLoop = valuesLoop + 1; } else { sb.Append(",\"" + tempValue + "\""); } } sb.Append("]"); sb.Append("}"); } sb.Append("]"); } sb.Append(",\"variants\" : ["); int variantsloop = 0; if (product.ProductVariantList != null) { foreach (var vendor in product.ProductVariantList) { if (variantsloop == 0) { sb.Append("{"); variantsloop = variantsloop + 1; } else { sb.Append(",{"); } sb.Append("\"price\":\"" + vendor.Price + "\""); sb.Append(",\"barcode\":\"" + vendor.barcode + "\""); // EAN sb.Append(",\"title\":\"" + vendor.Title + "\""); if (vendor.Options != null) { for (int i = 0; i < vendor.Options.Count(); i++) { sb.Append(",\"option" + (i + 1) + "\":\"" + vendor.Options[i] + "\""); } } sb.Append("}"); } } sb.Append("]"); sb.Append("}"); sb.Append("}"); string json = sb.ToString(); json = Encoding.UTF8.GetString(Encoding.UTF8.GetBytes(json)); Shopify_Post("/admin/products.json", json, product.Handle); }
protected override Product GetVariant(Product _product, List<string> row) { _product.ProductVariantList = new List<ProductVariant>(); if(_product.Options.Count() == 0) { ProductVariant variant = new ProductVariant(); variant.Price = Working_Sale_Price(row[headerType.Where(h => h.HeaderName == "Price").SingleOrDefault().ColumnNumber],row[headerType.Where(h => h.HeaderName == "DeliveryCost").SingleOrDefault().ColumnNumber]); variant.barcode = _product.EAN; _product.ProductVariantList.Add(variant); } else { var optionOrder = _product.Options.OrderByDescending(s => s.OptionValue.Count); var option_1 = optionOrder.Take(1).SingleOrDefault(); foreach (var orderValue in option_1.OptionValue) { switch (_product.Options.Count()) { case 1: ProductVariant variant = new ProductVariant(); variant.Price = Working_Sale_Price(row[headerType.Where(h => h.HeaderName == "Price").SingleOrDefault().ColumnNumber], row[headerType.Where(h => h.HeaderName == "DeliveryCost").SingleOrDefault().ColumnNumber]); variant.barcode = _product.EAN; variant.Options = new List<string>(); variant.Title = option_1.Name; variant.Options.Add(orderValue); _product.ProductVariantList.Add(variant); break; case 2: var option_2 = optionOrder.Skip(1).Take(1).SingleOrDefault(); foreach (var optionOrder_2 in option_2.OptionValue) { variant = new ProductVariant(); variant.Price = Working_Sale_Price(row[headerType.Where(h => h.HeaderName == "Price").SingleOrDefault().ColumnNumber], row[headerType.Where(h => h.HeaderName == "DeliveryCost").SingleOrDefault().ColumnNumber]); variant.barcode = _product.EAN; variant.Options = new List<string>(); variant.Title = option_1.Name + "_" + option_2.Name; variant.Options.Add(orderValue); variant.Options.Add(optionOrder_2); _product.ProductVariantList.Add(variant); } break; case 3: option_2 = optionOrder.Skip(1).Take(1).SingleOrDefault(); foreach (var optionOrder_2 in option_2.OptionValue) { var option_3 = optionOrder.Skip(2).Take(1).SingleOrDefault(); foreach (var optionOrder_3 in option_3.OptionValue) { variant = new ProductVariant(); variant.Price = Working_Sale_Price(row[headerType.Where(h => h.HeaderName == "Price").SingleOrDefault().ColumnNumber], row[headerType.Where(h => h.HeaderName == "DeliveryCost").SingleOrDefault().ColumnNumber]); variant.barcode = _product.EAN; variant.Options = new List<string>(); variant.Title = option_1.Name + "_" + option_2.Name + "_" + option_3.Name; variant.Options.Add(orderValue); variant.Options.Add(optionOrder_2); variant.Options.Add(optionOrder_3); _product.ProductVariantList.Add(variant); } } break; } } } return _product; }
protected override Product GetOptions(Product _product, List<string> row) { string optionList = System.Configuration.ConfigurationManager.AppSettings["Variant_Column"]; _product.Options = new List<Option>(); if (optionList.Count() > 0) { List<string> optionToAdd = optionList.Split(',').ToList(); foreach (var lOptions in optionToAdd) { Option _options = new Option(); _options.OptionValue = new List<string>(); _options.Name = lOptions; List<string> optionValues = row[headerType.Where(h => h.HeaderName == lOptions).SingleOrDefault().ColumnNumber].Split(System.Configuration.ConfigurationSettings.AppSettings["Variant_Separator"][0]).ToList(); foreach (var _value in optionValues) { _options.OptionValue.Add(_value); } _product.Options.Add(_options); } } return _product; }
protected override Product GetImages(Product _product, List<string> row) { _product.Other_Images = new List<string>(); _product.Image_Src = row[headerType.Where(h => h.HeaderName == "Image_1").SingleOrDefault().ColumnNumber]; _product.Other_Images.Add(row[headerType.Where(h => h.HeaderName == "Image_2").SingleOrDefault().ColumnNumber]); _product.Other_Images.Add(row[headerType.Where(h => h.HeaderName == "Image_3").SingleOrDefault().ColumnNumber]); return _product; }
protected virtual Product GetVariant(Product _product, List<string> row) { throw new NotImplementedException(); }