Ejemplo n.º 1
0
 public async Task Handle(CancelHotelRequest message, IMessageHandlerContext context)
 {
     Log.Info($"Hotel for Trip Id {message.TripId} is canceled");
     var result = new BookingHotelResponse {
         TripId = message.TripId, IsBooked = false
     };
     await context.Publish(result);
 }
Ejemplo n.º 2
0
        public async Task Handle(BookHotelRequest message, IMessageHandlerContext context)
        {
            var result = new BookingHotelResponse {
                TripId = message.TripId
            };

            try
            {
                Log.Info($"Hotel for Trip Id {message.TripId} is booked");
                result.IsBooked = true;
            }
            catch (Exception e)
            {
                Log.Error($"Hotel booking failed for Trip Id {message.TripId}", e);
                result.IsBooked = false;
            }

            await context.Publish(result);
        }
Ejemplo n.º 3
0
        public async Task Handle(BookingHotelResponse message, IMessageHandlerContext context)
        {
            if (message.IsBooked)
            {
                Data.OrderStatuses[OrderType.Hotel] = OrderStatus.Confirmed;
                Log.Info($"Hotel booking confirmation received for Tour Id {message.TripId}");
                Log.Info("Sending rent car request...");
                var command = new RentCarRequest {
                    TripId = message.TripId
                };
                await context.Send(command);

                Data.OrderStatuses[OrderType.Car] = OrderStatus.OrderRequestIsSent;
            }
            else
            {
                Log.Info($"Hotel is canceled for Tour Id {message.TripId}");
                Data.OrderStatuses[OrderType.Hotel] = OrderStatus.Canceled;
                await CancelSaga(context);
            }

            await TryCompleteSaga();
        }