/// <summary> /// Saves the category. /// </summary> /// <returns>The category.</returns> /// <param name="category">Category.</param> internal async Task <bool> SaveCategory(CategoryDataModels category) { List <CategoryDataModels> categories = await db.Table <CategoryDataModels>().Where(x => x.CategoryName == category.CategoryName).ToListAsync(); if (categories.Count > 1) { throw new Exception("Duplicated"); } if (categories.Count == 0) { int res = await db.InsertAsync(category); return(res != -1); } else { CategoryDataModels cr = categories[0]; cr.CategoryName = category.CategoryName; int res = await db.UpdateAsync(cr); return(res != -1); } }
internal async Task <bool> DeleteCategoryAsync(CategoryDataModels example) { int res = await db.DeleteAsync(example); return(res != -1); }
/// <summary> /// Gets a specific category data. /// </summary> /// <returns>specific category data.</returns> /// <param name="id">Identifier.</param> internal async Task <CategoryDataModels> GetCategory(string categoryName) { CategoryDataModels c = await db.Table <CategoryDataModels>().Where(x => x.CategoryName == categoryName).FirstOrDefaultAsync(); return(c); }
public async Task GetReviewInfo(string url, string productId) { urlDetails = url + "#tab=spec"; url = url + ceneoUrlReviews; singleReviewData = new ObservableCollection <ReviewDetailsDataModel>(); string reviewInfo = await new HttpClient().GetStringAsync(new Uri(url + "1")); string productInfoDetails = await new HttpClient().GetStringAsync(new Uri(urlDetails)); HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument(); doc.LoadHtml(reviewInfo); HtmlAgilityPack.HtmlDocument docInfo = new HtmlAgilityPack.HtmlDocument(); docInfo.LoadHtml(productInfoDetails); HtmlNode[] CategoryOfproductInfoNode = doc.DocumentNode.Descendants("span").Where(x => x.Attributes.Contains("itemprop") && x.Attributes["itemprop"].Value == "title").ToArray(); if (CategoryOfproductInfoNode != null) { var catProd = new CategoryDataModels(); CategoryProductInfo = CategoryOfproductInfoNode[3].InnerText.ToString(); catProd.CategoryName = CategoryProductInfo; await App.CategoryData.SaveCategory(catProd); } HtmlNode[] ProductInfoNode = docInfo.DocumentNode.Descendants("div").Where(x => x.Attributes.Contains("class") && x.Attributes["class"].Value == "specs-group").ToArray(); if (ProductInfoNode != null) { ProductInfoData = ProductInfoNode[0].InnerText.ToString(); } var DbCount = await App.ReviewData.GetExampleReviewsDetails(); int dbCountBefore = DbCount.Count(); //HtmlAgilityPack.HtmlDocument brandInfo = new HtmlAgilityPack.HtmlDocument(); //brandInfo.LoadHtml(ProductInfoNode[0].InnerHtml); //HtmlNode[] BrandInfoProduct = brandInfo.DocumentNode.Descendants("a").ToArray(); //HtmlAgilityPack.HtmlDocument colorInfo = new HtmlAgilityPack.HtmlDocument(); //colorInfo.LoadHtml(ProductInfoNode[7].InnerHtml); //HtmlNode[] ColorInfoProduct = colorInfo.DocumentNode.Descendants("li").ToArray(); //string productBrand = BrandInfoProduct[0].InnerText.ToString(); //string productVersion= BrandInfoProduct[2].InnerText.ToString(); //string colorVersion = ColorInfoProduct[0].InnerText.ToString(); //colorVersion = colorVersion.Replace("\r\n", string.Empty).Replace(" ", string.Empty); //HtmlNode[] ProductBrandInfoNode = doc.DocumentNode.Descendants("meta").Where(x => x.Attributes.Contains("property") && x.Attributes["property"].Value == "og:brand").Where(x => x.Attributes.Contains("content")).ToArray(); //if (ProductBrandInfoNode != null) //{ // CategoryProductInfo = ProductBrandInfoNode[0].InnerText.ToString(); //} HtmlNode productInfoNode = doc.DocumentNode.Descendants("h2").Where(x => x.Attributes.Contains("class") && x.Attributes["class"].Value == "section-title with-context header-curl").FirstOrDefault(); productInfo = productInfoNode.InnerText.ToString(); productInfo = productInfo.Replace(" - Opinie", string.Empty); viewModel.ProductInfoLbl = productInfo; var prodInf = new ProductDataModels(); prodInf.ProductName = productInfo; prodInf.ProductKey = productId; prodInf.CategoryName = CategoryProductInfo; //prodInf.CategoryID = categoryNameValue; await App.ProductIdData.SaveProductId(prodInf); //HtmlNode[] reviewInfoNodes = doc.DocumentNode.Descendants("li").Where(x => x.Attributes.Contains("class") && x.Attributes["class"].Value == "review-box js_product-review").ToArray(); HtmlNode reviewsCountNode = doc.DocumentNode.Descendants("span").Where(x => x.Attributes.Contains("itemprop") && x.Attributes["itemprop"].Value == "reviewCount").FirstOrDefault(); int reviewCount = (int.Parse(reviewsCountNode.InnerText.ToString())) / 10; List <HtmlNode[]> allInfoNodesArray = new List <HtmlNode[]>(); for (int i = 1; i <= reviewCount + 1; i++) { reviewInfo = await new HttpClient().GetStringAsync(new Uri(url + i)); doc.LoadHtml(reviewInfo); HtmlNode[] reviewsInfoNodes = doc.DocumentNode.Descendants("li").Where(x => x.Attributes.Contains("class") && x.Attributes["class"].Value == "review-box js_product-review").ToArray(); await ParseDataAsync(reviewsInfoNodes, productId); } viewModel.ReviewList = singleReviewData; var DbCountAfter = await App.ReviewData.GetExampleReviewsDetails(); int dbCountAfter = DbCountAfter.Count(); if (dbCountAfter > dbCountBefore && dbCountBefore != 0) { dbCount = dbCountAfter - dbCountBefore; } else if (dbCountBefore == 0) { dbCount = dbCountAfter; } string reviewsNumber = dbCount.ToString(); viewModel.MessageLbl = "Do bazy zapisano: " + reviewsNumber + " opinii."; await Task.Delay(2000); var categoryValueTest = await App.ReviewData.GetExampleReviewsDetails(); var categoryValueTest4 = await App.ReviewData.GetExamplesProduct(); var categoryValueTest5 = await App.ReviewData.GetExamplesCategory(); viewModel.IsOverlayVisible = false; //HtmlNode[] allInfo = new HtmlNode[reviewInfoNodes.Length + reviewsInfoNodes.Length]; //Array.Copy(reviewInfoNodes, allInfo, reviewInfoNodes.Length); //Array.Copy(reviewsInfoNodes, 0, allInfo, reviewInfoNodes.Length, reviewsInfoNodes.Length); }