public async Task <IEnumerable <Booking> > GetBookingsAsync(BookingsResourceParameters bookingsResourceParameters) { if (bookingsResourceParameters == null) { throw new ArgumentNullException(nameof(bookingsResourceParameters)); } if (bookingsResourceParameters.RoomId == null && bookingsResourceParameters.ClientId == null && bookingsResourceParameters.CurrentBookings == null) { return(await GetBookingsAsync()); } var collection = _context.Bookings as IQueryable <Booking>; if (!(bookingsResourceParameters.RoomId == null)) { collection = collection.Where(b => b.RoomId == bookingsResourceParameters.RoomId); } if (!(bookingsResourceParameters.ClientId == null)) { collection = collection.Where(b => b.ClientId == bookingsResourceParameters.ClientId); } if (!(bookingsResourceParameters.CurrentBookings == null || bookingsResourceParameters.CurrentBookings == false)) { collection = collection.Where(b => b.CheckOutDate.Date >= DateTime.Now.Date && b.CheckInDate.Date <= DateTime.Now.Date); } return(await collection.ToListAsync()); }
public async Task <ActionResult <IEnumerable <BookingDTO> > > GetBookings([FromQuery] BookingsResourceParameters bookingsResourceParameters) { try { var bookings = await _bookingsRepository.GetBookingsAsync(bookingsResourceParameters); if (bookings != null && bookings.Any()) { return(Ok(_mapper.Map <IEnumerable <BookingDTO> >(bookings))); } } catch (Exception) { return(StatusCode(StatusCodes.Status500InternalServerError, "Database Failure")); } return(NotFound()); }