public ActionResult <IEnumerable <UserDto> > GetUsers([FromQuery]
                                                              UsersResourceParameters usersResourceParameters
                                                              )
        {
            if (!_propertyMappingService.ValidMappingExistsFor <UserDto, User>(usersResourceParameters.OrderBy))
            {
                return(BadRequest());
            }

            var usersFromRepo    = _articleLibraryRepository.GetUsers(usersResourceParameters);
            var previousPageLink = usersFromRepo.HasPrevious
                ? CreateUsersResourceUri(usersResourceParameters,
                                         ResourceUriTypes.PreviousPage)
                : null;

            var nextPageLink = usersFromRepo.HasNext
                ? CreateUsersResourceUri(usersResourceParameters,
                                         ResourceUriTypes.NextPage)
                : null;

            var paginationMetadata = new
            {
                totalCount  = usersFromRepo.TotalCount,
                pageSize    = usersFromRepo.PageSize,
                currentPage = usersFromRepo.CurrentPage,
                totalPages  = usersFromRepo.TotalPages,
                previousPageLink,
                nextPageLink,
            };

            Response.Headers.Add("X-Pagination",
                                 JsonSerializer.Serialize(paginationMetadata));

            return(Ok(_mapper.Map <IEnumerable <UserDto> >(usersFromRepo)));
        }
Example #2
0
        public IActionResult GetUserCollection(
            [FromRoute]
            [ModelBinder(BinderType = typeof(ArrayModelBinder))] IEnumerable <Guid> ids)
        {
            if (ids == null)
            {
                return(BadRequest());
            }

            var userEntities = _articleLibraryRepository.GetUsers(ids);

            if (ids.Count() != userEntities.Count())
            {
                return(NotFound());
            }

            var usersToReturn = _mapper.Map <IEnumerable <UserDto> >(userEntities);

            return(Ok(usersToReturn));
        }