public ActionResult <LinkedCollectionResourceWrapperDto <MeddraTermDetailDto> > GetMeddraTermsByDetail( [FromQuery] MeddraTermResourceParameters meddraTermResourceParameters) { if (!_typeHelperService.TypeHasProperties <MeddraTermDetailDto> (meddraTermResourceParameters.OrderBy)) { return(BadRequest()); } var mappedTermsWithLinks = GetMeddraTerms <MeddraTermDetailDto>(meddraTermResourceParameters); var wrapper = new LinkedCollectionResourceWrapperDto <MeddraTermDetailDto>(mappedTermsWithLinks.TotalCount, mappedTermsWithLinks); //var wrapperWithLinks = CreateLinksForFacilities(wrapper, labTestResourceParameters, // mappedLabTestsWithLinks.HasNext, mappedLabTestsWithLinks.HasPrevious); return(Ok(wrapper)); }
/// <summary> /// Get common meddra terms from repository and auto map to Dto /// </summary> /// <typeparam name="T">Identifier or detail Dto</typeparam> /// <param name="meddraTermResourceParameters">Standard parameters for representing resource</param> /// <returns></returns> private PagedCollection <T> GetCommonMeddraTerms <T>(MeddraTermResourceParameters meddraTermResourceParameters) where T : class { var pagingInfo = new PagingInfo() { PageNumber = meddraTermResourceParameters.PageNumber, PageSize = meddraTermResourceParameters.PageSize }; var orderby = Extensions.GetOrderBy <TerminologyMedDra>(meddraTermResourceParameters.OrderBy, "asc"); var predicate = PredicateBuilder.New <TerminologyMedDra>(true); predicate = predicate.And(mt => mt.Common == true); var pagedTermsFromRepo = _termsRepository.List(pagingInfo, predicate, orderby, ""); if (pagedTermsFromRepo != null) { // Map EF entity to Dto var mappedTerms = PagedCollection <T> .Create(_mapper.Map <PagedCollection <T> >(pagedTermsFromRepo), pagingInfo.PageNumber, pagingInfo.PageSize, pagedTermsFromRepo.TotalCount); // Prepare pagination data for response var paginationMetadata = new { totalCount = mappedTerms.TotalCount, pageSize = mappedTerms.PageSize, currentPage = mappedTerms.CurrentPage, totalPages = mappedTerms.TotalPages, }; Response.Headers.Add("X-Pagination", JsonConvert.SerializeObject(paginationMetadata)); // Add HATEOAS links to each individual resource //mappedLabTests.ForEach(dto => CreateLinksForFacility(dto)); return(mappedTerms); } return(null); }