Пример #1
0
        public Task Handle(ShipWithFanCourierResponse message, IMessageHandlerContext context)
        {
            if (!message.PackageShipped)
            {
                ShipWithUrgentCargus(context);
            }
            else
            {
                if (Data.Status == ShippingStatus.ShippingWithFanCourier)
                {
                    context.Publish <IOrderShipped>(m => { m.OrderId = Data.OrderId; });
                    MarkAsComplete();

                    Log.Info($"Done shipping Order with Id {Data.OrderId}.");
                }
                else
                {
                    Log.Info(
                        "Uh-oh. We received the response too late. "
                        + $"Cancel Fan Courier shipping command for Order with Id {Data.OrderId} has already been sent.");
                }
            }

            return(Task.CompletedTask);
        }
        public Task Handle(ShipWithFanCourierResponse message, IMessageHandlerContext context)
        {
            if (!message.PackageShipped)
            {
                if (!Data.CouldNotShip)
                {
                    Log.Info($"Couldn't ship Batch {message.CorrelationId} from Order {Data.OrderId}. Compensating...");
                    Compensate(context);

                    Data.CouldNotShip = true;
                }

                return(Task.CompletedTask);
            }

            Log.Info($"Done shipping Batch {message.CorrelationId} from Order {Data.OrderId}.");
            Data.BatchStatuses[message.CorrelationId] = true;

            if (Data.BatchStatuses.Values.All(v => v))
            {
                Log.Info($"Done shipping Order with Id {Data.OrderId}.");
                context.Publish <IOrderShipped>(m => { m.OrderId = Data.OrderId; });
                MarkAsComplete();
            }

            return(Task.CompletedTask);
        }