/// <summary> /// Gets a paginated list of reservations. /// </summary> /// <param name="queryResource">Paginating, sorting and searching query parameters.</param> /// <returns>Paginated list of reservations.</returns> public PagedResponse <List <ReservationResource> > ListAsync(QueryResource queryResource) { try { if (queryResource == null) { throw new ArgumentNullException(nameof(queryResource)); } var reservations = _reservationRepository.DbSet() .Include(r => r.Contact) .Include(r => r.Place) .Select(r => r); if (!string.IsNullOrWhiteSpace(queryResource.SearchBy)) { reservations = reservations.Where(c => c.Contact.Name.ToLower().Contains(queryResource.SearchBy.Trim().ToLower()) || c.Place.Name.ToLower().Contains(queryResource.SearchBy.Trim().ToLower())); } reservations = reservations.ApplyOrderToReservation(queryResource.SortOrder); var pagedResponse = PagedResponse <Reservation> .ToPagedResponse( reservations, queryResource.PageNumber, queryResource.PageSize); return(_mapper.Map <PagedResponse <List <ReservationResource> > >(pagedResponse)); } catch (Exception ex) { Console.WriteLine(ex.Message); return(new PagedResponse <List <ReservationResource> >( ex.Message, queryResource.PageNumber, queryResource.PageSize)); } }