public override IEnumerable<DynamicNode> GetDynamicNodeCollection(ISiteMapNode node)
        {
            using (var ef = new ECoupounEntities())
            {
                // Create a node for each sites 
                foreach (var obj in ef.Categories)
                {
                    DynamicNode dynamicNode;

                    dynamicNode = new DynamicNode();
                    dynamicNode.Title = obj.MappingName;
                    dynamicNode.ParentKey = "CulturePages";
                    dynamicNode.RouteValues.Add("parentCategory", obj.MappingName);
                    dynamicNode.RouteValues.Add("categoryName", obj.MappingName);
                    yield return dynamicNode;
                }
            }
        }
        public void MakeWalmartCallAndProcess(string url, int categoryId, int providerId, ECoupounEntities db)
        {
            try
            {
                responseText += "\n" + url;

                ProductsJSON productsJSON = null;
                HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
                List<Products> productsList = null;
                // Get response
                using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
                {
                    // Get the response stream
                    StreamReader reader = new StreamReader(response.GetResponseStream());

                    var serializer = new JavaScriptSerializer();
                    productsJSON = serializer.Deserialize<ProductsJSON>(reader.ReadToEnd());
                    productsList = new List<Products>();
                    if (productsJSON != null && productsJSON.Items != null)
                    {
                        foreach (var item in productsJSON.Items)
                        {
                            Products product = new Products();
                            product.Sku = item.ItemId.ToString();
                            product.Name = item.Name;
                            product.ModelNumber = item.ModelNumber;
                            product.Image = item.MediumImage;
                            product.RegularPrice = item.msrp;
                            product.SalePrice = item.SalePrice;
                            product.Manufacturer = item.BrandName;
                            product.Url = item.ProductUrl;

                            productsList.Add(product);
                        }

                        walmartCount += dbProducts.InsertProduct(categoryId, providerId, productsList, db);
                        productsList = new List<Products>();
                        MakeWalmartCallAndProcess("http://api.walmartlabs.com" + productsJSON.NextPage, categoryId, providerId, db);
                    }
                }
            }
            catch (Exception ex)
            {
            }
        }
        /// <summary>
        /// Insert Product Details in DB
        /// </summary>
        /// <returns></returns>
        public string InsertData()
        {
            responseText = string.Empty;
            foreach (ConnectionStringSettings ConnectionStrings in ConfigurationManager.ConnectionStrings)
            {
                walmartCount = 0;
                int bestbuyCount = 0;
                int amazonCount = 0;
                using (var db = new ECoupounEntities(ConnectionStrings.ConnectionString))
                {
                    List<APIDetail> apiDetailsList = db.APIDetails.Where(x => x.IsActive == true && x.Provider.Name == "Walmart").ToList();

                    ProductsJSON jsonObject = null;
                    List<Products> productsList = null;
                    try
                    {
                        db.DeleteProducts();

                        foreach (var apiDetail in apiDetailsList)
                        {
                            switch (apiDetail.Provider.Name)
                            {
                                case "BestBuy":
                                    jsonObject = MakeAPICall(apiDetail.ServiceUrl);
                                    if (jsonObject != null)
                                    {
                                        for (int i = 1; i <= jsonObject.totalPages; i++)
                                        {
                                            jsonObject = MakeAPICall(apiDetail.ServiceUrl + "&page=" + i);
                                            productsList = new List<Products>();
                                            if (jsonObject != null)
                                            {
                                                foreach (var product in jsonObject.Products)
                                                {
                                                    productsList.Add(product);
                                                }

                                                bestbuyCount += dbProducts.InsertProduct(apiDetail.CategoryId, apiDetail.ProviderId, productsList, db);
                                            }
                                        }
                                    }

                                    break;
                                case "Walmart":
                                    MakeWalmartCallAndProcess(apiDetail.ServiceUrl, apiDetail.CategoryId, apiDetail.ProviderId, db);

                                    break;

                                case "Amazon":
                                    SignedRequestHelper helper = new SignedRequestHelper(ECoupounConstants.AccessKeyId, ECoupounConstants.SecretKey, ECoupounConstants.DESTINATION);
                                    for (int p = 1; p <= 10; p++)
                                    {
                                        string requestUrl = helper.Sign(string.Format(apiDetail.ServiceUrl, p));

                                        List<Products> amazonProductList = new List<Products>();
                                        HttpWebRequest request = WebRequest.Create(requestUrl) as HttpWebRequest;

                                        // Get response
                                        using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
                                        {
                                            // Get the response stream
                                            StreamReader reader = new StreamReader(response.GetResponseStream());

                                            XmlDocument xmlDoc = new XmlDocument();
                                            xmlDoc.Load(response.GetResponseStream());
                                            XmlNodeList xmlnodelstTrack = xmlDoc.GetElementsByTagName("Item");
                                            XmlNodeList xmlnodelstTrack1 = xmlDoc.GetElementsByTagName("TotalPages");

                                            Products product = new Products();
                                            productsList = new List<Products>();

                                            foreach (XmlNode NodeObj in xmlnodelstTrack)
                                            {
                                                product = new Products();
                                                for (int i = 0; i < NodeObj.ChildNodes.Count; i++)
                                                {
                                                    if (NodeObj.ChildNodes[i].HasChildNodes)
                                                    {
                                                        for (int j = 0; j < NodeObj.ChildNodes[i].ChildNodes.Count; j++)
                                                        {
                                                            string key = NodeObj.ChildNodes[i].ChildNodes[j].Name == "#text" ? NodeObj.ChildNodes[i].ChildNodes[j].ParentNode.Name : NodeObj.ChildNodes[i].ChildNodes[j].Name;
                                                            switch (key)
                                                            {
                                                                case "ASIN":
                                                                    product.Sku = NodeObj.ChildNodes[i].ChildNodes[j].InnerText;
                                                                    break;
                                                                case "DetailPageURL":
                                                                    product.Url = NodeObj.ChildNodes[i].ChildNodes[j].InnerText;
                                                                    break;
                                                                case "Manufacturer":
                                                                    product.Manufacturer = NodeObj.ChildNodes[i].ChildNodes[j].InnerText;
                                                                    break;
                                                                case "Model":
                                                                    product.ModelNumber = NodeObj.ChildNodes[i].ChildNodes[j].InnerText;
                                                                    break;
                                                                case "Color":
                                                                    product.Color = NodeObj.ChildNodes[i].ChildNodes[j].InnerText;
                                                                    break;
                                                                case "Title":
                                                                    product.Name = NodeObj.ChildNodes[i].ChildNodes[j].InnerText;
                                                                    break;
                                                                case "Size":
                                                                    product.ScreenSizeIn = NodeObj.ChildNodes[i].ChildNodes[j].InnerText.Split('-')[0];
                                                                    break;
                                                                case "ListPrice":
                                                                    product.SalePrice = Convert.ToDecimal(NodeObj.ChildNodes[i].ChildNodes[j].InnerText.Split('$')[1]);
                                                                    product.RegularPrice = Convert.ToDecimal(NodeObj.ChildNodes[i].ChildNodes[j].InnerText.Split('$')[1]);
                                                                    break;
                                                                case "URL":
                                                                    product.Image = NodeObj.ChildNodes[i].ChildNodes[j].InnerText;
                                                                    break;
                                                            }
                                                        }
                                                    }
                                                }

                                                productsList.Add(product);
                                            }

                                            amazonCount += dbProducts.InsertProduct(apiDetail.CategoryId, apiDetail.ProviderId, productsList, db);
                                        }
                                    }
                                    break;
                            }
                        }

                        responseText += string.Format("\nBesyBuy {0} Records.\n", bestbuyCount);
                        responseText += string.Format("Walmart {0} Records.\n", walmartCount);
                        responseText += string.Format("Amazon {0} Records.\n", amazonCount);
                        responseText += string.Format("Total {0} Records.\n", bestbuyCount + walmartCount + amazonCount);
                    }
                    catch (Exception ex)
                    {
                        responseText += string.Format("\nBesyBuy {0} Records.\n", bestbuyCount);
                        responseText += string.Format("Walmart {0} Records.\n", walmartCount);
                        responseText += string.Format("Amazon {0} Records.\n", amazonCount);
                        responseText += string.Format("Total {0} Records.\n", bestbuyCount + walmartCount + amazonCount);

                        responseText += "Some exception is occurred while Inserting Data, exception is : " + ex.Message;
                    }
                }
            }

            return responseText;
        }
예제 #4
0
        public int InsertProduct(int categoryId, int providerId, List<Products> productList, ECoupounEntities db)
        {
            int i = 0;
            foreach (var product in productList)
            {
                string table = string.Empty;
                try
                {
                    ProductMaster productMaster = db.ProductMasters.Where(x => x.ModelNumber == product.ModelNumber).SingleOrDefault();
                    if (productMaster == null)
                    {
                        productMaster = new ProductMaster();

                        Manufacturer manufacturer = db.Manufacturers.Where(x => x.Name == product.Manufacturer).SingleOrDefault();
                        if (manufacturer != null)
                        {
                            productMaster.ManufacturerId = manufacturer.ManufacturerId;
                        }
                        else if (manufacturer == null && product.Manufacturer != null)
                        {
                            manufacturer = new Manufacturer();
                            manufacturer.Name = product.Manufacturer;
                            manufacturer.CreatedOn = System.DateTime.Now;
                            manufacturer.IsActive = true;
                            db.Manufacturers.Add(manufacturer);

                            productMaster.ManufacturerId = manufacturer.ManufacturerId;
                        }
                        table = "manufacturer";

                        if (product.CategoryPath != null && product.CategoryPath.Count > 3)
                        {
                            Category subCategory = db.Categories.Where(x => x.IsActive == true).ToList().Where(x => x.Name == product.CategoryPath[3].Name.ToString()).SingleOrDefault();
                            if (subCategory != null)
                                productMaster.SubCategoryId = subCategory.CategoryId;
                        }

                        productMaster.CategoryId = categoryId;
                        productMaster.Name = product.Name;
                        productMaster.LongDescription = product.ShortDescription;
                        productMaster.ModelNumber = product.ModelNumber;
                        productMaster.Image = product.Image;
                        productMaster.Color = product.Color;
                        productMaster.Size = string.IsNullOrWhiteSpace(product.ScreenSizeIn) ? 0 : Convert.ToDouble(product.ScreenSizeIn);
                        productMaster.CreatedOn = System.DateTime.Now;
                        db.ProductMasters.Add(productMaster);
                        table = "ProductMasters";

                        ProductLink productLink = new ProductLink();
                        productLink.ProductId = productMaster.ProductId;
                        productLink.ProviderId = providerId;
                        productLink.SoruceUrl = product.Url;
                        productLink.MobileUrl = product.MobileUrl;
                        productLink.CreatedOn = System.DateTime.Now;
                        productLink.IsActive = true;
                        db.ProductLinks.Add(productLink);
                        table = "ProductLink";

                        ProductPricing productPricing = new ProductPricing();
                        productPricing.ProductId = productMaster.ProductId;
                        productPricing.ProviderId = providerId;
                        productPricing.SKU = product.Sku;
                        productPricing.RegularPrice = product.RegularPrice;
                        productPricing.SalePrice = product.SalePrice;
                        productPricing.AsofDate = System.DateTime.Now;
                        db.ProductPricings.Add(productPricing);
                        table = "ProductPricing";

                        db.SaveChanges();

                        i++;
                    }

                }
                catch (DbEntityValidationException e)
                {
                    foreach (var eve in e.EntityValidationErrors)
                    {
                        Console.WriteLine("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:",
                            eve.Entry.Entity.GetType().Name, eve.Entry.State);
                        foreach (var ve in eve.ValidationErrors)
                        {
                            Console.WriteLine("- Property: \"{0}\", Error: \"{1}\"",
                                ve.PropertyName, ve.ErrorMessage);
                        }
                    }
                    throw;
                }
                catch (Exception ex)
                {
                    return i;
                }
            }

            return i;
        }