public async Task Booking(BookingDto booking) { if (booking == null) { throw new ArgumentNullException(ErrorMessage.BookingDetailsIsEmpty); } var employeeId = await GetEmployeeDetails(booking); var roombookings = AutoMapper.Mapper.Map <IEnumerable <BookingDto> >(await _bookingRepository.GetAsync(booking.RoomId)); var isAvailable = _bookingValidation.IsRoomAvailable(roombookings, booking.StartDateTime, booking.EndDateTime); if (!isAvailable) { throw new Exception(ErrorMessage.RoomNotAvailable); } var bookingEntity = new Booking { EmployeeId = employeeId, RoomId = booking.RoomId, StartTime = booking.StartDateTime, EndTime = booking.EndDateTime }; await _bookingRepository.AddAsync(bookingEntity); await _bookingRepository.SaveAsync(); }
public async Task <bool> CheckRoomAvailability(CheckBookingDto checkBooking) { var roomBookings = await _bookingRepository.GetAsync(checkBooking.RoomId); var roomBookingsDto = Mapper.Map <IEnumerable <BookingDto> >(roomBookings); var isAvailable = _bookingValidation.IsRoomAvailable(roomBookingsDto, checkBooking.StartDateTime, checkBooking.EndDateTime); if (!isAvailable) { throw new Exception(ErrorMessage.RoomNotAvailable); } return(isAvailable); }