コード例 #1
0
        public async Task <ResponseBase> Handle(UpdateBookingCommand request, CancellationToken cancellationToken)
        {
            var input = new BookingUpdateInput
            {
                AggregateId = request.AggregateId,
                ArriveDate  = request.ArriveDate,
                RoomName    = request.RoomName
            };

            var result = await _bookingService.UpdateBooking(input);

            return(result ? ResponseBase.Success : ResponseBase.Fail);
        }
コード例 #2
0
        public async Task <bool> UpdateBooking(BookingUpdateInput input)
        {
            var currentVersion = await _eventStore.GetCurrentVersion(input.AggregateId);

            if (currentVersion == EventConstants.NOT_VALID_VERSION)
            {
                return(false);
            }

            // TODO check if booking was canceled or done

            var BookingUpdated = new BookingUpdated
            {
                AggregateId = input.AggregateId,
                DateAdded   = DateTime.Now,
                Version     = currentVersion++,
                Data        = await BuildCreateBookingEventData()
            };
            await _eventStore.Push(BookingUpdated);

            return(true);
        }