예제 #1
0
        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));
        }
예제 #2
0
        /// <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);
        }