public void UpdateOrderVendorProductInventory(List <MarketplaceOrder> orders) { try { var results = new List <OrderProductResult>(); // iterate to each order and also to its order item foreach (var order in orders) { // then, to its order items foreach (var orderItem in order.OrderItems) { // let's determine if this item has already record in order upate history var hasHistory = _repository.HasOrderItemUpdateHistory(orderItem.OrderItemId, order.OrderStatus, order.PurchaseDate); if (hasHistory) { continue; } // otherwise let's create order item update history _repository.CreateOrderItemUpdateHistory(orderItem, order.OrderStatus, order.PurchaseDate); // manage the vendor product inventory if (order.OrderStatus != OrderStatus.Canceled) { var result = _service.ManageOrderVendorProduct(orderItem); results.Add(result); } else { _repository.ReturnVendorProductInventory(orderItem); } } } // notify Admin if there are insufficient products for the orders _service.EvaluateForInsufficientVendorProducts(results); } catch (Exception ex) { Console.Error.WriteLine("Error Message: " + EisHelper.GetExceptionMessage(ex) + "\n" + ex.StackTrace); _logger.LogError(LogEntryType.OrderService, string.Format("Error in updating vendor product inventory <br/>Error message: {0}", EisHelper.GetExceptionMessage(ex)), ex.StackTrace); } }