private void ParseColumn(Models.Buyer buyer, string priceRange, string productName, string quality, DateTime asOf) { if (priceRange.TrimEnd() != "--" && priceRange.TrimEnd() != "nb" && priceRange.TrimEnd() != "na") { var p = new Models.Product(); p.Name = productName; p.Quality = quality; var price = new Models.Price(); price.AsOf = asOf; if (priceRange.Contains("-")) { var prices = priceRange.Split('-'); price.MinPrice = decimal.Parse(prices[0]); price.MaxPrice = decimal.Parse(prices[1]); } else { price.MinPrice = decimal.Parse(priceRange); price.MaxPrice = decimal.Parse(priceRange); } var bp = new Models.BuyerProduct(); bp.Id = Guid.NewGuid().ToString(); bp.Buyer = buyer; bp.Product = p; bp.Price = price; this.items.Add(bp); } }
private void ParseNewProduct(HtmlNodeNavigator navigator, Models.Product product, ParsingResults res, string link) { string header = ConnectStrings(navigator.Select(Rules_.HeaderXpath)); string desctiption = ConnectStrings(navigator.Select(Rules_.DescriptionXpath)); string priceValue = ConnectStrings(navigator.Select(Rules_.PriceXpath)); List <string> pictures = ListValue(navigator.Select(Rules_.PicturesXpath)); product = new Models.Product() { Description = desctiption, Name = header, Link = link, ImageUrl = (pictures.Count > 0 ? pictures[0] : ""), Price = priceValue }; Models.Price price = new Models.Price() { Product = product, Date = DateTime.Now, PriceValue = priceValue }; List <Models.Picture> thumbs = new List <Models.Picture>(); foreach (string url in pictures) { thumbs.Add(new Models.Picture() { Product = product, PictureUrl = url }); } res.AddedPictures.AddRange(thumbs); res.AddedPrices.Add(price); res.AddedProducts.Add(product); }
public static Price ToCoreModel(this Models.Price price) { var retVal = new Price(); retVal.InjectFrom(price); retVal.Currency = price.Currency; return(retVal); }
public static Models.Price ToWebModel(this Price price) { var retVal = new Models.Price(); retVal.InjectFrom(price); retVal.Currency = price.Currency; if (price.Pricelist != null) { retVal.PriceListName = price.Pricelist.Name; } return(retVal); }
public ParsingResults Parse(System.Net.WebClient client, List <Models.Product> ProductList) { HtmlDocument doc = new HtmlDocument(); for (int i = 0; i < PagesLinks_.Count; i++) { try { string source = client.DownloadString(PagesLinks_[i]); Console.Write(PagesLinks_[i] + " " + i.ToString() + "\n"); doc.LoadHtml(source); HtmlNodeNavigator navigator = (HtmlNodeNavigator)doc.CreateNavigator(); var productNodes = navigator.Select(Rules_.DetailsXpath); AddProducts(productNodes); var pagesNodes = navigator.Select(Rules_.PaginationXpath); AddPages(pagesNodes); } catch (System.Net.WebException) { } } ParsingResults res = new ParsingResults(); for (int i = 0; i < ProductsLinks_.Count; i++) { string source = client.DownloadString(ProductsLinks_[i]); Console.Write(ProductsLinks_[i] + " " + i.ToString() + "\n"); doc.LoadHtml(source); HtmlNodeNavigator navigator = (HtmlNodeNavigator)doc.CreateNavigator(); var product = IsAlreadyParsed(source, ProductList); if (product != null) { string priceValue = ConnectStrings(navigator.Select(Rules_.PriceXpath)); Models.Price price = new Models.Price() { Product = product, Date = DateTime.Now, PriceValue = priceValue }; product.Price = priceValue; res.AddedPrices.Add(price); } else { ParseNewProduct(navigator, product, res, ProductsLinks_[i]); } } return(res); }