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); }
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); }
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(); }