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