Beispiel #1
0
        /// <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);
            }
        }
Beispiel #2
0
        internal async Task <bool> DeleteCategoryAsync(CategoryDataModels example)
        {
            int res = await db.DeleteAsync(example);

            return(res != -1);
        }
Beispiel #3
0
        /// <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);
        }
Beispiel #4
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);
        }