Esempio n. 1
0
        public async Task <ActionResult> GetInstitutions([FromQuery] InstitutionResourceParameters pagedResourceParameters, CancellationToken ct)
        {
            var institutionDtos = await _institutionService.GetInstitutionsAsync(pagedResourceParameters, ct);

            var previousPageLink = institutionDtos.HasPrevious ? CreateInstitutionsResourceUri(pagedResourceParameters, Enums.ResourceUriType.PreviousPage) : null;
            var nextPageLink     = institutionDtos.HasNext ? CreateInstitutionsResourceUri(pagedResourceParameters, Enums.ResourceUriType.NextPage) : null;

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

            if (institutionDtos == null)
            {
                return(NotFound());
            }

            Response.Headers.Add("X-Pagination", JsonConvert.SerializeObject(paginationMetadata));
            return(Ok(institutionDtos));
        }
Esempio n. 2
0
        public async Task <PagedList <InstitutionDto> > GetInstitutionsAsync(InstitutionResourceParameters resourceParameters, CancellationToken ct)
        {
            var institutionEntities = _uow.Institutions.GetAll();

            /*if (!string.IsNullOrEmpty(resourceParameters.Name))
             * {
             *  if (Enum.TryParse(resourceParameters.Name, true, out University name))
             *  {
             *      institutionEntities = institutionEntities.Where(a => a.Name == name);
             *  }
             * }*/

            if (!string.IsNullOrEmpty(resourceParameters.SearchQuery))
            {
                var searchQueryForWhereClause = resourceParameters.SearchQuery.Trim().ToLowerInvariant();
                institutionEntities = institutionEntities
                                      .Where(a => a.Name.ToLowerInvariant().Contains(searchQueryForWhereClause)
                                             );
            }

            var pagedListEntities = await PagedList <Institution> .CreateAsync(institutionEntities,
                                                                               resourceParameters.PageNumber, resourceParameters.PageSize, ct);

            var result = _mapper.Map <PagedList <InstitutionDto> >(pagedListEntities);

            result.TotalCount  = pagedListEntities.TotalCount;
            result.TotalPages  = pagedListEntities.TotalPages;
            result.CurrentPage = pagedListEntities.CurrentPage;
            result.PageSize    = pagedListEntities.PageSize;

            return(result);
        }
Esempio n. 3
0
        private string CreateInstitutionsResourceUri(InstitutionResourceParameters pagedResourceParameters, Enums.ResourceUriType type)
        {
            switch (type)
            {
            case Enums.ResourceUriType.PreviousPage:
                return(_linkGenerator.GetUriByName(this.HttpContext, "GetInstitutions",
                                                   new
                {
                    name = pagedResourceParameters.Name,
                    code = pagedResourceParameters.Code,
                    searchQuery = pagedResourceParameters.SearchQuery,
                    pageNumber = pagedResourceParameters.PageNumber - 1,
                    pageSize = pagedResourceParameters.PageSize
                }));        // TODO get the aboslute path

            case Enums.ResourceUriType.NextPage:
                return(_linkGenerator.GetUriByName(this.HttpContext, "GetInstitutions",
                                                   new
                {
                    name = pagedResourceParameters.Name,
                    code = pagedResourceParameters.Code,
                    searchQuery = pagedResourceParameters.SearchQuery,
                    pageNumber = pagedResourceParameters.PageNumber + 1,
                    pageSize = pagedResourceParameters.PageSize
                }));

            default:
                return(_linkGenerator.GetUriByName(this.HttpContext, "GetInstitutions",
                                                   new
                {
                    name = pagedResourceParameters.Name,
                    code = pagedResourceParameters.Code,
                    searchQuery = pagedResourceParameters.SearchQuery,
                    pageNumber = pagedResourceParameters.PageNumber,
                    pageSize = pagedResourceParameters.PageSize
                }));
            }
        }