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; }
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; }