Пример #1
0
        public async Task SubmitBookingTest()
        {
            var saga = new ProcessBookingSaga()
            {
                Data = new ProcessBookingSaga.BookingData()
            };
            var context = new TestableMessageHandlerContext();

            SubmitBooking submitBooking = new SubmitBooking();

            submitBooking.BookingItem                  = new BookingItem();
            submitBooking.BookingItem.Name             = "Jon snow";
            submitBooking.BookingItem.Phone            = "13324124";
            submitBooking.BookingItem.Email            = "*****@*****.**";
            submitBooking.BookingItem.CheckInDatetime  = DateTime.Now;
            submitBooking.BookingItem.CheckOutDatetime = DateTime.Now;

            await saga.Handle(submitBooking, context)
            .ConfigureAwait(false);

            var bookingPlaced = (BookingPlaced)context.PublishedMessages[0].Message;

            Assert.AreEqual(Constants.Booked, bookingPlaced.BookingItem.Status);
            Assert.AreEqual(Constants.Booked, saga.Data.BookingItem.Status);
        }
Пример #2
0
    public async Task PlaceBooking(BookingItem bookingItem)
    {
        var command = new SubmitBooking
        {
            ClientId      = Context.ConnectionId,
            BookingNumber = Interlocked.Increment(ref bookingNumber),
            BookingItem   = bookingItem
        };

        var sendOptions = new SendOptions();
        await MvcApplication.EndpointInstance.Send(command, sendOptions);
    }
Пример #3
0
    public Task Handle(SubmitBooking message, IMessageHandlerContext context)
    {
        Data.BookingNumber = message.BookingNumber;
        Data.BookingItem   = message.BookingItem;
        Data.ClientId      = message.ClientId;

        log.Info($"Received Booking request #{message.BookingNumber} .");

        Data.BookingItem.Status = Constants.Booked;

        // tell the client the order was received
        var bookingPlaced = new BookingPlaced
        {
            ClientId      = message.ClientId,
            BookingNumber = message.BookingNumber,
            BookingItem   = message.BookingItem
        };

        return(context.Publish(bookingPlaced));
    }