public bool UpdateOrder(IUnitOfWork db, ShippingDTO shipping) { _log.Info("Update order: id=" + shipping.OrderId + ", orderId=" + shipping.AmazonIdentifier + ", marketId=" + shipping.MarketOrderId); IList <OrderItemDTO> orderItems; if (shipping.IsFromMailPage) { orderItems = db.OrderItems.GetByOrderIdAsDto(shipping.OrderId) //Remove canceled items with 0 price .Where(m => m.ItemPrice > 0 || m.QuantityOrdered > 0).ToList(); } else { orderItems = db.OrderItems.GetByShippingInfoIdAsDto(shipping.Id) //Remove canceled items with 0 price .Where(m => m.ItemPrice > 0 || m.QuantityOrdered > 0).ToList(); } var allItemWasUpdated = true; foreach (var item in orderItems) { _log.Info("OrderItem, itemId=" + item.ItemOrderIdentifier); DateTime?orderDate = null; if (shipping.OrderDate.HasValue) { orderDate = shipping.OrderDate.Value.ToUniversalTime(); } var shippingDate = shipping.ShippingDate.ToUniversalTime(); if (orderDate.HasValue && shippingDate < orderDate) { shippingDate = orderDate.Value.AddHours(2); } var result = _api.UpdateOrder(shipping.MarketOrderId, item.ItemOrderIdentifier, shippingDate, shipping.TrackingNumber, ShippingUtils.FormattedToMarketCurrierName(shipping.ShippingMethod.CarrierName, shipping.ShippingMethod.IsInternational, MarketType.eBay)); _log.Info(String.Format("Order date: {0}, shipping date: {1}", orderDate, shippingDate)); allItemWasUpdated = allItemWasUpdated && result.IsSuccess; if (result.IsSuccess) { _log.Info("Order was updated"); } else { _log.Info("Order update errors: ErrorCode=" + result.ErrorCode + ", Message=" + result.Details); } } return(allItemWasUpdated); }