public Product GetDbProduct(OnlineShopModel.Product product)
        {
            var dbProduct = new Product
            {
                ProductName      = product.ProductName,
                AddedDate        = DateTime.Now,
                LastModifiedDate = DateTime.Now,
                IsActive         = true,
                Url         = product.Url,
                ImageUrl    = product.ImageUrl,
                Description = product.Description
            };

            return(dbProduct);
        }
        public Product GenerateProductDetails(Product product, ProductDetails specdetails, MobilesDbContext dbContext)
        {
            int index = 1;
            List <SpecifictionType>    specTypeList    = dbContext.SpecifictionTypes.ToList();
            List <SpecifictionHeading> specHeadingList = dbContext.SpecifictionHeadings.ToList();

            foreach (Specification specification in specdetails.Specifications)
            {
                SpecifictionType specType = specTypeList.Where(s => s.Name == specification.Type).FirstOrDefault();
                if (specType == null)
                {
                    specType = new SpecifictionType {
                        Name = specification.Type
                    };
                    dbContext.SpecifictionTypes.Add(specType);
                }


                var dbSpecifiction = new Specifiction {
                    Type = specType, Product = product
                };

                foreach (SpecificationDetail specDetail in specification.Details)
                {
                    SpecifictionHeading specHeading =
                        specHeadingList.Where(s => s.Name == specDetail.Key).FirstOrDefault();
                    if (specHeading == null)
                    {
                        specHeading = new SpecifictionHeading {
                            Name = specDetail.Key
                        };
                        dbContext.SpecifictionHeadings.Add(specHeading);
                    }

                    var dbSpecDetail = new SpecificatonDetail
                    {
                        Heading      = specHeading,
                        Specifiction = dbSpecifiction,
                        Value        = specDetail.Value
                    };
                    dbSpecifiction.SpecificatonDetails.Add(dbSpecDetail);
                }
                product.Specifictions.Add(dbSpecifiction);
            }
            return(product);
        }
 public Product GetDbProduct(OnlineShopModel.Product product)
 {
     var dbProduct = new Product
                         {
                             ProductName = product.ProductName,
                             AddedDate = DateTime.Now,
                             LastModifiedDate = DateTime.Now,
                             IsActive = true,
                             Url = product.Url,
                             ImageUrl = product.ImageUrl,
                             Description = product.Description
                         };
     return dbProduct;
 }
        public Product GenerateProductDetails(Product product, ProductDetails specdetails, MobilesDbContext dbContext)
        {
            int index = 1;
            List<SpecifictionType> specTypeList = dbContext.SpecifictionTypes.ToList();
            List<SpecifictionHeading> specHeadingList = dbContext.SpecifictionHeadings.ToList();

            foreach (Specification specification in specdetails.Specifications)
            {
                SpecifictionType specType = specTypeList.Where(s => s.Name == specification.Type).FirstOrDefault();
                if (specType == null)
                {
                    specType = new SpecifictionType {Name = specification.Type};
                    dbContext.SpecifictionTypes.Add(specType);
                }

                var dbSpecifiction = new Specifiction { Type = specType, Product = product };

                foreach (SpecificationDetail specDetail in specification.Details)
                {
                    SpecifictionHeading specHeading =
                        specHeadingList.Where(s => s.Name == specDetail.Key).FirstOrDefault();
                    if (specHeading == null)
                    {
                        specHeading = new SpecifictionHeading {Name = specDetail.Key};
                        dbContext.SpecifictionHeadings.Add(specHeading);
                    }

                    var dbSpecDetail = new SpecificatonDetail
                                           {
                                               Heading = specHeading,
                                               Specifiction = dbSpecifiction,
                                               Value = specDetail.Value
                                           };
                    dbSpecifiction.SpecificatonDetails.Add(dbSpecDetail);
                }
                product.Specifictions.Add(dbSpecifiction);
            }
            return product;
        }
        public void PopulateBrandMobilePhones(IEnumerable <int> brandIdList)
        {
            Settings.AttachToBrowserTimeOut = 240;
            Settings.WaitUntilExistsTimeOut = 240;
            Settings.WaitForCompleteTimeOut = 240;
            using (var dbContext = new MobilesDbContext())
            {
                try
                {
                    List <BrandPage> brandPages =
                        dbContext.BrandPages.Include("Brand").Where(p => brandIdList.Contains(p.Brand.Id) && p.IsRead == false).ToList();
                    foreach (BrandPage brandPage in brandPages)
                    {
                        string url = brandPage.Url;
                        try
                        {
                            using (var browser = new IE(url, true))
                            {
                                browser.ShowWindow(NativeMethods.WindowShowStyle.Hide);
                                browser.WaitForComplete();

                                IEnumerable <Div> productsDivs =
                                    browser.Divs.Where(d => d.ClassName != null && d.ClassName.Contains("makers"));

                                var listOfProducts = new List <OnlineShopModel.Product>();
                                foreach (Div productDiv in productsDivs)
                                {
                                    List productsList = productDiv.Lists.First();

                                    if (productsList != null && productsList.Exists)
                                    {
                                        foreach (ListItem productListItem in productsList.ListItems)
                                        {
                                            Link    productLink = productListItem.Links.First();
                                            Element productName =
                                                productLink.Children().Where(c => c.TagName.ToUpper() == "STRONG").First();
                                            Image productImage = productLink.Images.First();
                                            listOfProducts.Add(new OnlineShopModel.Product
                                            {
                                                ProductName = productName.Text,
                                                Url         = productLink.Url,
                                                ImageUrl    = productImage.Src,
                                                Description = productImage.Title
                                            });
                                        }
                                    }
                                }

                                Database.SetInitializer(new CreateDatabaseIfNotExists <MobilesDbContext>());

                                List <Product> dbProductsList = dbContext.Products.ToList();

                                foreach (OnlineShopModel.Product product in listOfProducts)
                                {
                                    Product filterProduct = dbProductsList.Where(p => p.Url == product.Url).FirstOrDefault();
                                    if (filterProduct == null)
                                    {
                                        Product dbProduct = GetDbProduct(product);
                                        dbProduct.Brand = brandPage.Brand;
                                        dbContext.Products.Add(dbProduct);
                                    }
                                }

                                brandPage.IsRead = true;

                                dbContext.SaveChanges();
                            }
                        }
                        catch (Exception)
                        {
                        }
                    }
                }

                catch (Exception ex)
                {
                    Console.WriteLine(ex.ToString());
                    Console.ReadLine();
                    //throw ex;
                }
            }
        }