private string CreateResourceUri(SiteSSFP options, ResourceUriType type) { switch (type) { case ResourceUriType.PreviousPage: return(Url.Link("GetAllParaglidersAsync", new { PageNumber = options.PageNumber = 1, options.PageSize, })); case ResourceUriType.NextPage: return(Url.Link("GetAllParaglidersAsync", new { PageNumber = options.PageNumber + 1, options.PageSize })); default: return(Url.Link("GetAllParaglidersAsync", new { options.PageNumber, options.PageSize })); } }
public async Task <IReadOnlyCollection <SiteDto> > GetAllSitesAsync(SiteSSFP options) { var sites = _paraContext.Sites .AsNoTracking() .SearchSitesBy(options.SearchBy, options.SiteApproach, options.SiteName) .SortSitesBy(options.SortBy) .FilterSitesBy(options.FilterBy, options.Orientation, options.AltitudeTakeOff) .MapSiteDto(); options.SetPagingValues(sites); var pagedQuery = sites.Page(options.PageNumber - 1, options.PageSize); return(await pagedQuery.ToListAsync()); }
public async Task <ActionResult <IReadOnlyCollection <SiteDto> > > GetAllSiteAsync([FromQuery] SiteSSFP options) { var sites = await _sitesService.GetAllSitesAsync(options); if (sites == null) { return(NotFound("Collection was empty")); } var previousPageLink = options.HasPrevious ? CreateResourceUri(options, ResourceUriType.PreviousPage) : null; var nextPageLink = options.HasNext ? CreateResourceUri(options, ResourceUriType.NextPage) : null; var paginationMetadata = new { options.TotalCount, options.PageSize, options.PageNumber, options.TotalPages, previousPageLink, nextPageLink }; Response.Headers.Add("X-Pagination", System.Text.Json.JsonSerializer.Serialize(paginationMetadata)); return(Ok(sites)); }