示例#1
0
        public PlacesResponse GetPage(int page, int sizePage, bool @descending, string orderBy, string search)
        {
            if (!_fields.Contains(orderBy))
            {
                return(new PlacesResponse($"Invalid order filter: {orderBy}"));
            }

            if (sizePage < 5 && sizePage > 100)
            {
                return(new PlacesResponse($"Page size should be greater than 5 and lower than 100"));
            }

            if (page < 1)
            {
                return(new PlacesResponse($"Page should be greater than 1 : {page}"));
            }

            var result = _unitOfWork.Locations.GetPage(page, sizePage, descending, search, orderBy);

            if (result.PageCount < page && result.RowCount != 0)
            {
                return(new PlacesResponse($"Page should be lowest than {result.PageCount}"));
            }

            if (result.RowCount == 0)
            {
                var noContent = PagedResult <Place> .NoContent <PlaceInfoResource>(result);

                return(new PlacesResponse(noContent));
            }

            var viewPlaces = PagedResult <Place> .CopyPageInfo <PlaceInfoResource>(result);

            var listOfViewPlaces = result.Results.Select(place => new PlaceInfoResource(place)).ToList();

            viewPlaces.Results = listOfViewPlaces;
            return(new PlacesResponse(viewPlaces));
        }