/// <summary> /// Sample code to invoke the OrderFetcher to retrieve Orders and OrderItems. /// </summary> /// <param name="service">MarketplaceWebServiceOrders object.</param> public static void InvokeOrderFetcherSample(MarketplaceWebServiceOrders service, string sellerId, string[] marketplaceIdList) { OrderFetcher fetcher = new OrderFetcher(service, sellerId, marketplaceIdList); // Process each order as it comes in fetcher.ProcessOrder += delegate(Order order) { Console.WriteLine(order.ToString()); // Fetch the order items in each order fetcher.FetchOrderItems(order.AmazonOrderId, delegate(OrderItem item) { // Process order item here. Console.WriteLine("\t" + item.ToString()); }); Console.WriteLine("================================================="); Console.WriteLine(); }; // Fetch all orders from 1 day ago fetcher.FetchOrders(DateTime.Now.Subtract(TimeSpan.FromDays(1))); }
/// <summary> /// Method to continuously check orders over an interval, and list OrderItems for those Orders. /// </summary> private void OrdersJobThread(object obj) { orderFetcher.ProcessOrder += HandleOrder; if (this.CheckOrdersInterval == TimeSpan.MinValue) { throw new ArgumentException("The CheckOrdersInterval TimeSpan cannot be zero.", "CheckOrdersInterval"); } DateTime startCheckInterval = DateTime.Now.Subtract(CheckOrdersInterval); // Continue forever until the isRunning flag is cleared. while (isRunning) { try { // Check the orders for this interval. DateTime checkInterval = startCheckInterval; startCheckInterval = DateTime.Now.Subtract(TimeSpan.FromMinutes(3.0)); Console.WriteLine("Fetching orders from " + checkInterval.ToString() + " to " + startCheckInterval.ToString()); orderFetcher.FetchOrders(checkInterval, startCheckInterval); // Wait for the next interval. Console.WriteLine("Fetch complete. Sleeping until next interval."); while (isRunning && DateTime.Now.Subtract(startCheckInterval) < CheckOrdersInterval) { Thread.Sleep(1000); } } catch (Exception err) { Console.WriteLine("Error: " + err.Message + ". Orders job thread is exiting."); isRunning = false; } } }