public static void AddProductVariants(ProductFull product, string tokenAPI, string newProductId) { int i = 1; foreach (Variant variant in product.variants) { Console.WriteLine(Resources.Language.Variant + " " + i + "/" + product.variants.Count() + " ..." + " (" + variant.name + ")"); AddProductVariantParameters addProductParameters = new AddProductVariantParameters("bl_1", newProductId, variant.sku, variant.ean, variant.name, variant.quantity, variant.price); string parameters = JsonConvert.SerializeObject(addProductParameters); JObject response = CallBaseLinker(tokenAPI, "addProductVariant", parameters); JValue responseStatus = (JValue)response["status"]; if (responseStatus.Value.ToString() == "SUCCESS") { Console.SetCursorPosition(0, Console.CursorTop - 1); Console.WriteLine(Resources.Language.Variant + " " + i + "/" + product.variants.Count() + " OK!" + " (" + variant.name + ")"); } else { Console.SetCursorPosition(0, Console.CursorTop - 1); Console.WriteLine(Resources.Language.Variant + " " + i + "/" + product.variants.Count() + " " + Resources.Language.Error + " (" + variant.name + ")"); } i++; } }
public static (bool, List <ProductFull>) GetProductsListFull(List <ProductSimple> listOfProducts, string tokenAPI, string category) { List <string> listOfProductsIds = new List <string>(); foreach (var item in listOfProducts) { listOfProductsIds.Add(item.id); } List <List <string> > splittedListOfProductsIds = SplitList(listOfProductsIds, 1000); List <ProductFull> listOfProductsFull = new List <ProductFull>(); Console.WriteLine(Resources.Language.StartedGetProductsListFullFromCategory + " " + category + "..."); foreach (List <string> listOf1000ProductsIds in splittedListOfProductsIds) { Array productsArray = listOf1000ProductsIds.ToArray(); GetProductsDataParameters getProductsDataParameters = new GetProductsDataParameters("bl_1", productsArray); string parameters = JsonConvert.SerializeObject(getProductsDataParameters); JObject response = CallBaseLinker(tokenAPI, "getProductsData", parameters); JValue responseStatus = (JValue)response["status"]; if (responseStatus.Value.ToString() == "SUCCESS") { JArray product = new JArray(); foreach (JToken item in response["products"].Children().Children()) { string id = item["product_id"].ToString(); string sku = GetStringOrNull(item, "sku"); string ean = GetStringOrNull(item, "ean"); string name = item["name"].ToString(); int quantity = int.Parse(item["quantity"].ToString()); float price_netto = float.Parse(item["price_netto"].ToString()); float price_brutto = float.Parse(item["price_brutto"].ToString()); float price_wholesale_netto = float.Parse(item["price_wholesale_netto"].ToString()); int tax_rate = int.Parse(item["tax_rate"].ToString()); float weight = float.Parse(item["weight"].ToString()); string description = GetStringOrNull(item, "description"); string description_extra1 = GetStringOrNull(item, "description_extra1"); string description_extra2 = GetStringOrNull(item, "description_extra2"); string description_extra3 = GetStringOrNull(item, "description_extra3"); string description_extra4 = GetStringOrNull(item, "description_extra4"); string man_name = GetStringOrNull(item, "man_name"); string man_image = GetStringOrNull(item, "man_image"); int category_id = int.Parse(item["category_id"].ToString()); List <String> images = null; if (item["images"].HasValues) { images = item["images"].Values <string>().ToList(); } images = images?.Select(filename => Path.Combine("url:", filename)).ToList(); List <Dictionary <string, string> > features = new List <Dictionary <string, string> >(); if (item["features"].HasValues) { foreach (JToken feature in item["features"].ToList()) { features.Add(new Dictionary <string, string> { ["name"] = feature.First.ToString(), ["value"] = feature.Last.ToString() });; } } List <Variant> variants = new List <Variant>(); if (item["variants"].HasValues) { foreach (JToken singleVariant in item["variants"].ToList()) { Variant variant = new Variant(); foreach (JToken elementOfFeature in singleVariant) { JProperty jProperty = elementOfFeature.ToObject <JProperty>(); string propertyName = jProperty.Name; switch (propertyName) { case "variant_id": variant.variant_id = jProperty.Value.ToString(); break; case "ean": variant.ean = jProperty.Value.ToString(); break; case "sku": variant.sku = jProperty.Value.ToString(); break; case "name": Regex regex = new Regex(name + " "); variant.name = regex.Replace(jProperty.Value.ToString().Replace(name, ""), "", 1); break; case "price": variant.price = float.Parse(jProperty.Value.ToString()); break; case "quantity": variant.quantity = int.Parse(jProperty.Value.ToString()); break; } } variants.Add(variant); } } ProductFull baseLinkerProduct = new ProductFull(id, sku, ean, name, quantity, price_netto, price_brutto, price_wholesale_netto, tax_rate, weight, description, description_extra1, description_extra2, description_extra3, description_extra4, man_name, man_image, category_id, images, features, variants); listOfProductsFull.Add(baseLinkerProduct); } Console.WriteLine(Resources.Language.DownloadedInfoAboutXProducts.Replace("{a}", listOfProductsFull.Count().ToString())); } else { Console.WriteLine(Resources.Language.ErrorWhenDownloadFullProducts + " " + Resources.Language.PressAnythingToBackToMenu); Console.ReadKey(); return(false, null); } } return(true, listOfProductsFull); }