Beispiel #1
0
        private OrthoProduct GetProduct(string path, string name, WebClient wc)
        {
            System.Console.Write(name);
            OrthoProduct product = new OrthoProduct();
            HtmlDocument doc     = GetPage(path, wc);
            HtmlNode     node;

            node             = doc.DocumentNode.SelectSingleNode("//meta[@property='og:image']");
            product.ImageUrl = node.Attributes["content"].Value;


            product.Name             = name;
            product.BriefDescription = doc.DocumentNode.SelectSingleNode("//p[@id='pShortDesc']")?.OuterHtml.Trim();

            node = doc.DocumentNode.SelectSingleNode("//h3[contains(., 'OVERVIEW')]/..");
            node?.RemoveChild(node.FirstChild);
            product.Description = node?.InnerHtml.Trim();

            node = doc.DocumentNode.SelectSingleNode("//h3[contains(., 'CLINICAL APPLICATIONS')]/..");
            node?.RemoveChild(node.FirstChild);
            product.Benefits = node?.InnerHtml.Trim();

            HtmlNode nc = doc.DocumentNode.SelectSingleNode("//script[contains(., 'IdevSelections(')]");

            if (nc != null)
            {
                OrthoProduct.Option op = new OrthoProduct.Option
                {
                    variantTypeName = "Size"
                };
                string json = nc.InnerText;
                json = json.Substring(json.IndexOf('{'));
                json = json.Substring(0, json.LastIndexOf('}') + 1);
                Example ex = JsonConvert.DeserializeObject <Example>(json);

                if (ex.Classifications.Count == 0)
                {
                    HtmlNodeCollection nc2 = doc.DocumentNode.SelectNodes("//span[@class='bottleSize']");
                    if (nc2 != null)
                    {
                        foreach (HtmlNode n2 in nc2)
                        {
                            op.values.Add(n2.InnerText.Trim());
                        }
                    }
                    else
                    {
                        System.Console.Write(" Error");
                    }
                }

                if (ex.Classifications.Count > 1)
                {
                    System.Console.Write(" Error2");
                }

                foreach (Classification c in ex.Classifications)
                {
                    foreach (S s in c.s)
                    {
                        op.values.Add(s.s);
                    }
                }
                product.Options.Add(op);
            }
            else
            {
                System.Console.Write(" Error3");
            }

            foreach (OrthoProduct.Option vt in product.Options)
            {
                foreach (string value in vt.values)
                {
                    OrthoProduct.Variant v = new OrthoProduct.Variant
                    {
                        Option1 = value
                    };
                    product.Variants.Add(v);
                }
            }
            if (product.Variants.Count == 1)
            {
                product.Variants[0].ImageUrl = product.ImageUrl;
            }
            System.Console.WriteLine(" - Complete");
            return(product);
        }
Beispiel #2
0
        public async Task Supplement2()
        {
            List <InvSupplement> inv2  = JsonConvert.DeserializeObject <List <InvSupplement> >(File.ReadAllText(supplement));
            List <InvSupplement> inv   = inv2.Where(i => i.Active && !i.Imported && !string.IsNullOrEmpty(i.productNumber)).ToList();
            List <OrthoProduct>  prods = GetProducts();

            Dictionary <string, List <string> > toImport = new Dictionary <string, List <string> >();

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

            foreach (KeyValuePair <string, List <string> > vp in toImport)
            {
                OrthoProduct prod = prods.FirstOrDefault(p => p.Name == vp.Key);
                if (prod != null)
                {
                    prod.Variants.RemoveAll(v => !vp.Value.Contains(v.ProductNumber));
                    foreach (InvSupplement i in inv2.Where(iv => vp.Value.Contains(iv.productNumber)))
                    {
                        i.Imported = true;
                        OrthoProduct.Variant v = prod.Variants.FirstOrDefault(pv => pv.ProductNumber == i.productNumber);
                        if (v != null)
                        {
                            if (i.Retail == 0.00m)
                            {
                            }
                            v.Price = i.Retail;
                        }
                        else
                        {
                        }
                    }
                    System.Console.Write($"{prod.Name} ");
                    await BuildProduct(prod);

                    await File.WriteAllTextAsync(supplement, JsonConvert.SerializeObject(inv2, Formatting.Indented,
                                                                                         new JsonSerializerSettings {
                        NullValueHandling = NullValueHandling.Ignore
                    }));

                    System.Console.WriteLine($"completed");
                }
                else
                {
                }
            }
        }