public ActionResult <LinkedCollectionResourceWrapperDto <ConfigIdentifierDto> > GetConfigsByIdentifier( [FromQuery] ConfigResourceParameters configResourceParameters) { if (!_typeHelperService.TypeHasProperties <ConfigIdentifierDto> (configResourceParameters.OrderBy)) { return(BadRequest()); } var mappedConfigsWithLinks = GetConfigs <ConfigIdentifierDto>(configResourceParameters); var wrapper = new LinkedCollectionResourceWrapperDto <ConfigIdentifierDto>(mappedConfigsWithLinks.TotalCount, mappedConfigsWithLinks); //var wrapperWithLinks = CreateLinksForFacilities(wrapper, configResourceParameters, // mappedConfigsWithLinks.HasNext, mappedConfigsWithLinks.HasPrevious); return(Ok(wrapper)); }
/// <summary> /// Get lab results from repository and auto map to Dto /// </summary> /// <typeparam name="T">Identifier or detail Dto</typeparam> /// <param name="configResourceParameters">Standard parameters for representing resource</param> /// <returns></returns> private PagedCollection <T> GetConfigs <T>(ConfigResourceParameters configResourceParameters) where T : class { var pagingInfo = new PagingInfo() { PageNumber = configResourceParameters.PageNumber, PageSize = configResourceParameters.PageSize }; var orderby = Extensions.GetOrderBy <Config>(configResourceParameters.OrderBy, "asc"); var pagedConfigsFromRepo = _configRepository.List(pagingInfo, null, orderby, ""); if (pagedConfigsFromRepo != null) { // Map EF entity to Dto var mappedConfigs = PagedCollection <T> .Create(_mapper.Map <PagedCollection <T> >(pagedConfigsFromRepo), pagingInfo.PageNumber, pagingInfo.PageSize, pagedConfigsFromRepo.TotalCount); // Prepare pagination data for response var paginationMetadata = new { totalCount = mappedConfigs.TotalCount, pageSize = mappedConfigs.PageSize, currentPage = mappedConfigs.CurrentPage, totalPages = mappedConfigs.TotalPages, }; Response.Headers.Add("X-Pagination", JsonConvert.SerializeObject(paginationMetadata)); // Add HATEOAS links to each individual resource mappedConfigs.ForEach(dto => CreateLinksForConfig(dto)); return(mappedConfigs); } return(null); }