private void DownloadSalesData() { try { this.StatusDescription = string.Format("Creating ChannelAdvisor Client"); //Create OrderService client and ready it for request string devKey = System.Configuration.ConfigurationManager.AppSettings["CaDevK"]; string devPW = System.Configuration.ConfigurationManager.AppSettings["CaDevPw"]; //int profileID = 32001327; string accountID = System.Configuration.ConfigurationManager.AppSettings["CaAcct"]; ; APICredentials cred = new APICredentials(); cred.DeveloperKey = devKey; cred.Password = devPW; OrderServiceSoapClient ordClient = new OrderServiceSoapClient(); //Get latest order date in DB, and pull all orders since then DateTime beginTime; using (var db = new CheapeesEntities()) { beginTime = (DateTime)db.MerchantFulfilledSales.OrderByDescending(o => o.OrderTime).FirstOrDefault().OrderTime; } OrderCriteria criteria = new OrderCriteria(); criteria.OrderCreationFilterBeginTimeGMT = beginTime; criteria.OrderCreationFilterEndTimeGMT = DateTime.Now; criteria.DetailLevel = "High"; List<ChannelAdvisorSale> listOfSales = new List<ChannelAdvisorSale>(); int page = 1; criteria.PageNumberFilter = page; //Issue requests this.StatusDescription = string.Format("Requesting sales data since latest sale ({0})", beginTime); APIResultOfArrayOfOrderResponseItem response = ordClient.GetOrderList(cred, accountID, criteria); int numberOfOrders = 0; //When everything has been retrieved, pages will be returned empty and should exit loop while (response.ResultData.Length != 0) { numberOfOrders += response.ResultData.Length; this.StatusDescription = string.Format("Downloading sales data: {0} orders retrieved", numberOfOrders); foreach (OrderResponseDetailHigh order in response.ResultData) { foreach (OrderLineItemItem item in order.ShoppingCart.LineItemSKUList) { ChannelAdvisorSale sale = new ChannelAdvisorSale(); sale.SKU = item.SKU; sale.Quantity = item.Quantity; sale.Marketplace = item.ItemSaleSource; sale.UnitPrice = item.UnitPrice; sale.OrderTime = ((DateTime)order.OrderTimeGMT).ToLocalTime(); sale.Invoice = order.OrderID.ToString(); listOfSales.Add(sale); } } //Get next page of results page++; criteria.PageNumberFilter = page; response = ordClient.GetOrderList(cred, accountID, criteria); } CommitToDatabase(listOfSales); } catch (Exception e) { throw new Exception(string.Format("ChannelAdvisorOrderService - {0}", e.Message)); } }
private void DownloadSalesData() { try { this.StatusDescription = string.Format("Creating ChannelAdvisor Client"); //Create OrderService client and ready it for request string devKey = System.Configuration.ConfigurationManager.AppSettings["CaDevK"]; string devPW = System.Configuration.ConfigurationManager.AppSettings["CaDevPw"]; //int profileID = 32001327; string accountID = System.Configuration.ConfigurationManager.AppSettings["CaAcct"];; APICredentials cred = new APICredentials(); cred.DeveloperKey = devKey; cred.Password = devPW; OrderServiceSoapClient ordClient = new OrderServiceSoapClient(); //Get latest order date in DB, and pull all orders since then DateTime beginTime; using (var db = new CheapeesEntities()) { beginTime = (DateTime)db.MerchantFulfilledSales.OrderByDescending(o => o.OrderTime).FirstOrDefault().OrderTime; } OrderCriteria criteria = new OrderCriteria(); criteria.OrderCreationFilterBeginTimeGMT = beginTime; criteria.OrderCreationFilterEndTimeGMT = DateTime.Now; criteria.DetailLevel = "High"; List <ChannelAdvisorSale> listOfSales = new List <ChannelAdvisorSale>(); int page = 1; criteria.PageNumberFilter = page; //Issue requests this.StatusDescription = string.Format("Requesting sales data since latest sale ({0})", beginTime); APIResultOfArrayOfOrderResponseItem response = ordClient.GetOrderList(cred, accountID, criteria); int numberOfOrders = 0; //When everything has been retrieved, pages will be returned empty and should exit loop while (response.ResultData.Length != 0) { numberOfOrders += response.ResultData.Length; this.StatusDescription = string.Format("Downloading sales data: {0} orders retrieved", numberOfOrders); foreach (OrderResponseDetailHigh order in response.ResultData) { foreach (OrderLineItemItem item in order.ShoppingCart.LineItemSKUList) { ChannelAdvisorSale sale = new ChannelAdvisorSale(); sale.SKU = item.SKU; sale.Quantity = item.Quantity; sale.Marketplace = item.ItemSaleSource; sale.UnitPrice = item.UnitPrice; sale.OrderTime = ((DateTime)order.OrderTimeGMT).ToLocalTime(); sale.Invoice = order.OrderID.ToString(); listOfSales.Add(sale); } } //Get next page of results page++; criteria.PageNumberFilter = page; response = ordClient.GetOrderList(cred, accountID, criteria); } CommitToDatabase(listOfSales); } catch (Exception e) { throw new Exception(string.Format("ChannelAdvisorOrderService - {0}", e.Message)); } }