Exemple #1
0
        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
                }));
            }
        }
Exemple #2
0
        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());
        }
Exemple #3
0
        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));
        }