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