Exemple #1
0
        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);
        }