Exemplo n.º 1
0
        internal async Task <bool> SaveProductId(ProductDataModels product)
        {
            List <ProductDataModels> products = await db.Table <ProductDataModels>().Where(x => x.ProductKey == product.ProductKey).ToListAsync();

            if (products.Count > 1)
            {
                throw new Exception("Duplicated");
            }

            if (products.Count == 0)
            {
                int res = await db.InsertAsync(product);

                return(res != -1);
            }
            else
            {
                ProductDataModels pr = products[0];
                pr.CategoryID  = product.CategoryID;
                pr.ProductKey  = product.ProductKey;
                pr.ProductName = product.ProductName;
                int res = await db.UpdateAsync(pr);

                return(res != -1);
            }
        }
Exemplo n.º 2
0
        internal async Task <ProductDataModels> GetProductById(int id)
        {
            ProductDataModels c = await db.Table <ProductDataModels>().Where(x => x.ID == id).FirstOrDefaultAsync();

            return(c);
        }
Exemplo n.º 3
0
        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);
        }