Example #1
0
        private void GetOptions(XymogenProduct p)
        {
            using (WebClient wc = new WebClient())
            {
                wc.Headers[HttpRequestHeader.ContentType] = "application/json";
                string response = wc.UploadString("https://www.xymogen.com/usercontrols/utilities/ProductVariants.asmx/LoadProductVariantOptions", $"{{MasterId: {p.MasterId}, variantSelections: null, ProductID: 0, Favorites: false}}");

                Wrapper o = JsonConvert.DeserializeObject <Wrapper>(response);

                string[] parts = o.d.Substring(1, o.d.Length - 2).Split("],");
                p.Options = JsonConvert.DeserializeObject <List <XymogenProduct.Option> >(parts[0].Trim() + "]");
                int index = 1;
                foreach (XymogenProduct.Option t in p.Options)
                {
                    string s = parts[index].Trim() + "]";
                    t.values = JsonConvert.DeserializeObject <List <XymogenProduct.Value> >(s);
                    index++;
                }

                List <combos> vars = buildVariants(p.Options, 0);
                foreach (combos variant in vars)
                {
                    wc.Headers[HttpRequestHeader.ContentType] = "application/json";
                    response = wc.UploadString("https://www.xymogen.com/usercontrols/utilities/ProductVariants.asmx/LoadProductVariantOptions", $"{{MasterId: {p.MasterId}, variantSelections: [{string.Join(",", variant.ids)}], ProductID: 0, Favorites: false}}");

                    o = JsonConvert.DeserializeObject <Wrapper>(response);
                    if (!string.IsNullOrEmpty(o.d))
                    {
                        parts = o.d.Substring(1, o.d.Length - 2).Split("],");
                        XymogenProduct.Variant ppp = JsonConvert.DeserializeObject <List <XymogenProduct.Variant> >(parts.Last())[0];
                        ppp.Option1 = variant.values[0];
                        if (variant.values.Count > 1)
                        {
                            ppp.Option2 = variant.values[1];
                        }

                        if (variant.values.Count > 2)
                        {
                            ppp.Option3 = variant.values[2];
                        }

                        ppp.SKU     = $"XMOGEN-{ppp.ProductID}";
                        ppp.BarCode = GetUPCCodes(ppp.ProductID);
                        p.Variants.Add(ppp);
                    }
                }
            }
        }
Example #2
0
        private static async Task Supplement2Async()
        {
            List <InvSupplement> inv2 = JsonConvert.DeserializeObject <List <InvSupplement> >(File.ReadAllText(@"C:\Users\Robert\Documents\supplements.json"));
            List <InvSupplement> inv  = inv2.Where(i => i.Company == "Xymogen" && i.Active && !i.Imported && i.XymogenId != 0).ToList();
            Dictionary <long, XymogenScraper.XymogenProduct> prods = GetCacheProductInfo();

            Dictionary <long, List <int> > toImport = new Dictionary <long, List <int> >();

            foreach (InvSupplement i in inv)
            {
                List <XymogenScraper.XymogenProduct> p = prods.Values.Where(xp => xp.Variants.Any(xv => xv.ProductID == i.XymogenId)).ToList();
                if (p.Count == 1)
                {
                    if (toImport.ContainsKey(p[0].MasterId))
                    {
                        if (!toImport[p[0].MasterId].Contains(i.XymogenId))
                        {
                            toImport[p[0].MasterId].Add(i.XymogenId);
                        }
                        else
                        {
                            System.Console.WriteLine($"{i.Name} - {i.XymogenId} - {i.Size} - {i.Flavor}");
                        }
                    }
                    else
                    {
                        toImport.Add(p[0].MasterId, new List <int>()
                        {
                            i.XymogenId
                        });
                    }
                }
                else
                {
                    System.Console.WriteLine($"{i.Name} - {i.XymogenId} - {i.Size} - {i.Flavor}");
                }
            }

            foreach (KeyValuePair <long, List <int> > vp in toImport)
            {
                XymogenProduct prod = prods.Values.FirstOrDefault(p => p.MasterId == vp.Key);
                if (prod != null)
                {
                    prod.Variants.RemoveAll(v => !vp.Value.Contains(v.ProductID));
                    foreach (InvSupplement i in inv2.Where(iv => vp.Value.Contains(iv.XymogenId)))
                    {
                        i.Imported = true;
                        XymogenProduct.Variant v = prod.Variants.FirstOrDefault(pv => pv.ProductID == i.XymogenId);
                        if (v != null)
                        {
                            if (i.Retail == 0.00m)
                            {
                            }
                            v.Price = i.Retail;
                        }
                        else
                        {
                        }
                    }
                    System.Console.Write($"{prod.Name} ");
                    await BuildProductAsync(prod);

                    File.WriteAllText(@"C:\Users\Robert\Documents\supplements.json", JsonConvert.SerializeObject(inv2, Formatting.Indented,
                                                                                                                 new JsonSerializerSettings {
                        NullValueHandling = NullValueHandling.Ignore
                    }));
                    System.Console.WriteLine($"completed");
                }
                else
                {
                }
            }
        }