public ActionResult <LinkedCollectionResourceWrapperDto <MetaFormDetailDto> > GetMetaFormsByDetail( [FromQuery] MetaFormResourceParameters metaFormResourceParameters) { if (!_typeHelperService.TypeHasProperties <MetaFormDetailDto> (metaFormResourceParameters.OrderBy)) { return(BadRequest()); } var mappedFormsWithLinks = GetMetaForms <MetaFormDetailDto>(metaFormResourceParameters); // Add custom mappings to patients //mappedFormsWithLinks.ForEach(dto => CustomPatientMap(dto)); var wrapper = new LinkedCollectionResourceWrapperDto <MetaFormDetailDto>(mappedFormsWithLinks.TotalCount, mappedFormsWithLinks); //var wrapperWithLinks = CreateLinksForPatients(wrapper, metaFormResourceParameters, //mappedFormsWithLinks.HasNext, mappedFormsWithLinks.HasPrevious); return(Ok(wrapper)); }
/// <summary> /// Get meta forms from repository and auto map to Dto /// </summary> /// <typeparam name="T">Identifier or detail Dto</typeparam> /// <param name="metaFormResourceParameters">Standard parameters for representing resource</param> /// <returns></returns> private PagedCollection <T> GetMetaForms <T>(MetaFormResourceParameters metaFormResourceParameters) where T : class { var pagingInfo = new PagingInfo() { PageNumber = metaFormResourceParameters.PageNumber, PageSize = metaFormResourceParameters.PageSize }; var orderby = Extensions.GetOrderBy <MetaForm>(metaFormResourceParameters.OrderBy, "asc"); var pagedFormsFromRepo = _metaFormRepository.List(pagingInfo, null, orderby, ""); if (pagedFormsFromRepo != null) { // Map EF entity to Dto var mappedForms = PagedCollection <T> .Create(_mapper.Map <PagedCollection <T> >(pagedFormsFromRepo), pagingInfo.PageNumber, pagingInfo.PageSize, pagedFormsFromRepo.TotalCount); // Prepare pagination data for response var paginationMetadata = new { totalCount = mappedForms.TotalCount, pageSize = mappedForms.PageSize, currentPage = mappedForms.CurrentPage, totalPages = mappedForms.TotalPages, }; Response.Headers.Add("X-Pagination", JsonConvert.SerializeObject(paginationMetadata)); // Add HATEOAS links to each individual resource //mappedFacilities.ForEach(dto => CreateLinksForFacility(dto)); return(mappedForms); } return(null); }