private string CreateTeachersResourceUri(TeachersResourceParameters teachersResourceParameters,
                                                 ResourceUriType resourceUriType)
        {
            switch (resourceUriType)
            {
            case ResourceUriType.PreviousPage:
                return(Url.Link("GetTeachers",
                                new
                {
                    pageNumber = teachersResourceParameters.PageNumber - 1,
                    pageSize = teachersResourceParameters.PageSize
                               //todo add search query
                }));

            case ResourceUriType.NextPage:
                return(Url.Link("GetTeachers",
                                new
                {
                    pageNumber = teachersResourceParameters.PageNumber + 1,
                    pageSize = teachersResourceParameters.PageSize
                               //todo add search query
                }));

            default:
                return(Url.Link("GetTeachers",
                                new
                {
                    pageNumber = teachersResourceParameters.PageNumber,
                    pageSize = teachersResourceParameters.PageSize
                               //todo add search query
                }));
            }
        }
Ejemplo n.º 2
0
        public PagedList <TeacherDto> GetAll(TeachersResourceParameters teachersResourceParameters)
        {
            var allTeachers = teachersRepository.All().To <TeacherDto>();

            return(PagedList <TeacherDto> .Create(allTeachers
                                                  , teachersResourceParameters.PageNumber
                                                  , teachersResourceParameters.PageSize));
        }
        public IActionResult GetTeachers([FromQuery] TeachersResourceParameters resourceParameters)
        {
            ThrowHelper.ThrowIfNull(resourceParameters, nameof(resourceParameters));

            var teachers = teachersService
                           .GetAll(resourceParameters);

            if (teachers == null)
            {
                return(NoContent());
            }

            var previousPageLink = teachers.HasPrevious
                ?CreateTeachersResourceUri(resourceParameters,
                                           ResourceUriType.PreviousPage).LowerCaseLink()
                : null;

            var nextPageLink = teachers.HasNext
                ? CreateTeachersResourceUri(resourceParameters,
                                            ResourceUriType.NextPage).LowerCaseLink()
                : null;

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

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

            return(Ok(teachers.ShapeData(resourceParameters.Fields)));
        }