public IList <MessageString> Validate(IUnitOfWork db) { var messages = new List <MessageString>(); var order = db.Orders.GetByOrderIdAsDto(OrderNumber); if (!String.IsNullOrEmpty(TrackingNumber)) { var shipping = db.OrderShippingInfos.GetAll().FirstOrDefault(sh => sh.TrackingNumber == TrackingNumber); MailLabelInfo mail = null; if (shipping == null) { mail = db.MailLabelInfos.GetAll().FirstOrDefault(m => m.TrackingNumber == TrackingNumber); } if (shipping == null && mail == null) { messages.Add(MessageString.From("TrackingNumber", "Tracking number not found")); } return(messages); } if (order == null) { messages.Add(MessageString.From("OrderNumber", "Order not found")); } return(messages); }
public static IList <MessageString> CancelCurrentOrderLabels( ILogService log, IUnitOfWork db, ILabelService labelService, ITime time, long orderId, bool sampleMode) { var cancelTrackings = GetOrdersToCancel(db, orderId); var results = new List <MessageString>(); foreach (var tracking in cancelTrackings) { MailLabelInfo mailInfo = null; OrderShippingInfo shippingInfo = null; if (tracking.LabelFromType == (int)LabelFromType.Mail) { mailInfo = db.MailLabelInfos.Get(tracking.Id); if (mailInfo != null) { mailInfo.CancelLabelRequested = true; } } else { shippingInfo = db.OrderShippingInfos.Get(tracking.Id); if (shippingInfo != null) { shippingInfo.CancelLabelRequested = true; } } try { string shipmentIdentifier = tracking.StampsTxId; if (tracking.ShipmentProviderType == (int)ShipmentProviderType.Stamps || tracking.ShipmentProviderType == (int)ShipmentProviderType.StampsPriority) { shipmentIdentifier = tracking.TrackingNumber; } var result = labelService.CancelLabel((ShipmentProviderType)tracking.ShipmentProviderType, shipmentIdentifier, sampleMode); if (result.IsSuccess) { results.Add(MessageString.Success(tracking.TrackingNumber + " (cancelled)" + ", OrderId=" + orderId)); if (tracking.LabelFromType == (int)LabelFromType.Mail) { if (mailInfo != null) { mailInfo.LabelCanceled = true; mailInfo.LabelCanceledDate = time.GetAppNowTime(); } } else { if (shippingInfo != null) { shippingInfo.LabelCanceled = true; shippingInfo.LabelCanceledDate = time.GetAppNowTime(); } } } else { results.Add(MessageString.Error(tracking.TrackingNumber + " (cancellation was failed with error: " + result.Message + ")")); } } catch (Exception ex) { results.Add(MessageString.Error(tracking.TrackingNumber + " (cancellation was failed with error: " + ExceptionHelper.GetMostDeeperException(ex) + ")")); } } db.Commit(); if (!cancelTrackings.Any()) { results.Add(MessageString.Success("No tracking numbers to cancel")); } return(results); }