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