public async Task SetBooked(IBookingPeriodOfTimeChecker checker) { CheckRule(new BookingOnStatusChangeMustHaveCorrectPreviousStatusRule(status, BookingStatus.Booked)); CheckRule(new BookingRequestingCannotExceedTimeoutRule(requestedDate)); await CheckRuleAsync(new RecordsOfProcessingBookingMustBeAvailableAsyncRule(this, bookedRecords, checker)); status = BookingStatus.Booked; bookedDate = DateTime.Now; }
internal async Task <bool> IsTermAvailable(BookingId bookingId, FacilityId facilityId, IBookingPeriodOfTimeChecker checker) => await checker.IsRecordAvailable(bookingId, facilityId, employeeId, date, date.AddMinutes(durationInMinutes));
public ProcessBookingRequestCommandHandler(IBookingRepository repository, IUnitOfWork unitOfWork, IBookingPeriodOfTimeChecker checker) { this.repository = repository; this.unitOfWork = unitOfWork; this.checker = checker; }
public RecordsOfProcessingBookingMustBeAvailableAsyncRule(Booking booking, List <BookedRecord> records, IBookingPeriodOfTimeChecker checker) { this.booking = booking; this.records = records; this.checker = checker; }