Exemplo n.º 1
0
        public void OnActionExecuted(ActionExecutedContext context)
        {
            if (context.Result is OkObjectResult okResult && okResult.Value is PagedList <Path> pagedList)
            {
                var helper = context.HttpContext.RequestServices.GetService <PagedListHeadersHelper>();

                var nextPageLink = pagedList.HasNext ?
                                   helper.CreatePathResourceUri(pagedList.CurrentPage, pagedList.PageSize, _requestParams, ResourceUriType.NextPage)
                    : null;
                var prevPageLink = pagedList.HasPrevious ?
                                   helper.CreatePathResourceUri(pagedList.CurrentPage, pagedList.PageSize, _requestParams, ResourceUriType.PreviousPage)
                    : null;

                var paginationMetadata = new PaginationMetadata
                {
                    TotalCount   = pagedList.TotalCount,
                    PageSize     = pagedList.PageSize,
                    CurrentPage  = pagedList.CurrentPage,
                    TotalPages   = pagedList.TotalPages,
                    PrevPageLink = prevPageLink,
                    NextPageLink = nextPageLink
                };
                var options = new JsonSerializerOptions {
                    PropertyNamingPolicy = JsonNamingPolicy.CamelCase
                };
                context.HttpContext.Response.Headers.Add("X-Pagination", JsonSerializer.Serialize(paginationMetadata, options));
            }
        }
Exemplo n.º 2
0
        public async Task <IActionResult> GetUncorrelatedEvents([FromQuery] PaginationMetadata pagination,
                                                                [FromQuery] EventFilters filter)
        {
            var result = await _mediator.Send(new GetUncorrelatedEventsRequest(pagination, filter, _authContext));

            return(Ok(result));
        }
Exemplo n.º 3
0
        public async Task OnResultExecutionAsync(ResultExecutingContext context, ResultExecutionDelegate next)
        {
            var result = context.Result as ObjectResult;

            if (FiltersHelper.IsResponseSuccesful(result))
            {
                PaginationModel <TEntity> paginationModel =
                    await FiltersHelper.GetParameterFromActionAsync <PaginationModel <TEntity> >(context);

                IQueryable <TDto> list = result.Value as IQueryable <TDto>;
                var dtoPagedList       = await list.ToPagedListAsync(paginationModel.PageSize, paginationModel.PageNumber);

                /// Doesn't support many pagination methods for a single controller
                var                paginationMethodInfo = filterConfiguration.ControllerInfoDictionary[context.Controller.GetType()].ControllerActions.Where(t => t.ResourceType == Attributes.ResourceType.Collection).FirstOrDefault();
                string             mediaType            = FiltersHelper.GetValueFromHeader(context, "Accept");
                PaginationMetadata paginationMetadata   = paginationHelperService.GeneratePaginationMetaData(dtoPagedList, paginationModel, context.Controller.GetType().Name, paginationMethodInfo.ActionName);
                if (filterConfiguration.SupportsCustomDataType && mediaType.Equals(filterConfiguration.CustomDataType, StringComparison.CurrentCultureIgnoreCase))
                {
                    var controllerType = context.Controller.GetType();
                    var dtoPagedListWithExternalLinks = HateoasHelper.CreateLinksForCollectionResource(dtoPagedList, filterConfiguration, paginationMetadata, context.Controller.GetType());
                    var shapedDtoPagedListWithLinks   = new EnvelopCollection <EnvelopDto <TDto> > {
                        Values = dtoPagedListWithExternalLinks.Values.Select(dto => {
                            return(HateoasHelper
                                   .CreateLinksForSingleResource(dto, filterConfiguration, linkGenerator, controllerType));
                        }), Links = dtoPagedListWithExternalLinks.Links
                    };
                    result.Value = shapedDtoPagedListWithLinks;
                }
                else
                {
                    result.Value = dtoPagedList;
                }
                await next();
            }
        }
Exemplo n.º 4
0
        private async Task GetDogs(bool searching = false)
        {
            StateHasChanged();

            if (searching)
            {
                DogsList  = null;
                IsLoading = true;
            }

            Filters.ForcePageNumber =
                Pagination == null || searching
                    ? 1
                    : Filters.PageNumber;

            var filters = $"?Name={Filters.Name}&SizeId={Filters.SizeId}&RaceId={Filters.RaceId}&PageNumber={Filters.PageNumber}";

            var apiResponse =
                await httpClient.GetAsync($"api/Dog{filters}");

            var response = await ApiResponse <List <DogDto> > .Create(apiResponse);

            DogsList   = response.Data;
            Pagination = response.PaginationMetadata;
            TotalDogs  = response.PaginationMetadata.TotalCount;

            IsLoading = false;
        }
Exemplo n.º 5
0
        public async Task <TodoPreviewListDto> Handle(GetTodosQuery request, CancellationToken cancellationToken)
        {
            var todos = todoRepository.GetQueryable();

            if (request.Status == TodoStatus.Done)
            {
                todos = todos.Where(x => x.Status == TodoStatus.Done);
            }

            if (request.Status == TodoStatus.Todo)
            {
                todos = todos.Where(x => x.Status == TodoStatus.Todo);
            }

            if (!string.IsNullOrWhiteSpace(request.Search))
            {
                todos = todos.Where(x => x.Title.Contains(request.Search) || x.Description.Contains(request.Search));
            }

            todos = todos.OrderByDescending(x => x.Priority);
            var totalCount = await todos.CountAsync();

            todos = todos.ApplyPagination(request.PageNumber, request.PageSize);

            var todoList           = mapper.Map <List <Todo>, List <TodoPreviewDto> >(await todos.ToListAsync());
            var paginationMetadata = new PaginationMetadata(request.PageNumber, request.PageSize, totalCount);

            return(new TodoPreviewListDto()
            {
                TodoPreviewDtos = todoList,
                PaginationMetadata = paginationMetadata
            });
        }
Exemplo n.º 6
0
        public IActionResult GetHateoasUserList(ResourceParameter resourceParameter)
        {
            var skip      = (resourceParameter.PageNumber > 0) ? resourceParameter.PageNumber - 1 : 0;
            var userList  = Mapper.Map <IEnumerable <UserDto> >(this.usersServices.GetUsersList(skip, resourceParameter.PageSize));
            var pagedList = PagedList <UserDto> .Create(
                userList,
                resourceParameter.PageNumber,
                resourceParameter.PageSize);

            var previousPageLink = pagedList.HasPrevious
                ? this.CreateUserResourceUri(resourceParameter, ResourceUriType.PreviousPage)
                : null;
            var nextPageLink = pagedList.HasNext
                ? this.CreateUserResourceUri(resourceParameter, ResourceUriType.NextPage)
                : null;

            var paginationMetadata = new PaginationMetadata(
                pagedList.TotalCount,
                pagedList.PageSize,
                pagedList.CurrentPage,
                pagedList.TotalPages,
                previousPageLink,
                nextPageLink);

            // add links on each retrieved user
            userList = userList.Select(user => this.CreateLinksForUser(user));

            var wrapper = new LinkedCollectionResourceWrapperDto <UserDto>(userList);

            return(this.Ok(this.CreateLinksForUser(wrapper)));
        }
Exemplo n.º 7
0
        public void ReturnTwoRowsStartingAtSpecifiedFirstRecordInPageWhenFirstRecordMoreThanTwo()
        {
            var tableData = new List <List <string> >
            {
                new List <string> {
                    "kiwi", "cat", "green"
                },
                new List <string> {
                    "grape", "cat", "pink"
                },
                new List <string> {
                    "apple", "dog", "blue"
                },
                new List <string> {
                    "banana", "dog", "blue"
                },
                new List <string> {
                    "cherry", "rat", "yellow"
                },
                new List <string> {
                    "tomato", "dog", "blue"
                },
                new List <string> {
                    "passion fruit", "dog", "blue"
                },
                new List <string> {
                    "plum", "dog", "brown"
                },
            };
            var paginationMetadata = new PaginationMetadata(4, 2);

            Paginate.PaginateData(tableData, paginationMetadata).Count().ShouldBe(2);
            Paginate.PaginateData(tableData, paginationMetadata).First()[0].ShouldBe("cherry");
        }
Exemplo n.º 8
0
        public IActionResult GetUserList(ResourceParameter resourceParameter)
        {
            var userList  = Mapper.Map <IEnumerable <UserDto> >(this.usersServices.GetUsersList(resourceParameter.PageNumber, resourceParameter.PageSize));
            var pagedList = PagedList <UserDto> .Create(
                userList,
                resourceParameter.PageNumber,
                resourceParameter.PageSize);

            var previousPageLink = pagedList.HasPrevious
                ? this.CreateUserResourceUri(resourceParameter, ResourceUriType.PreviousPage)
                : null;
            var nextPageLink = pagedList.HasNext
                ? this.CreateUserResourceUri(resourceParameter, ResourceUriType.NextPage)
                : null;

            var paginationMetadata = new PaginationMetadata(
                pagedList.TotalCount,
                pagedList.PageSize,
                pagedList.CurrentPage,
                pagedList.TotalPages,
                previousPageLink,
                nextPageLink);

            this.Response.Headers.Add("X-Pagination", Newtonsoft.Json.JsonConvert.SerializeObject(paginationMetadata));

            return(this.Ok(pagedList));
        }
Exemplo n.º 9
0
 public ApiResponse(bool isDone, string message, T data, PaginationMetadata paginationMetadata)
 {
     IsDone             = isDone;
     Message            = message;
     Data               = data;
     PaginationMetadata = paginationMetadata;
 }
Exemplo n.º 10
0
        public void GetHeaderValuesAssignsMetadataAndPaginationAsNull_WhenNoMetaDataPassedIn()
        {
            //Arrange
            methods.Clear();
            ids.Clear();
            var pagination = new PaginationMetadata()
            {
                PageNumber   = 2,
                PageSize     = 2,
                TotalRecords = 10
            };

            var linksHeaderWithoutMetadata = new LinksHeader(null, null, urlHelperMock.Object, "EventsController", null,
                                                             null);
            var linksHeaderWithMetadata = new LinksHeader(null, pagination, urlHelperMock.Object, "EventsController", null,
                                                          null);

            //Act
            var linksWithoutMetadata = linksHeaderWithoutMetadata.GetHeaderValues();
            var linksWithMetadata    = linksHeaderWithMetadata.GetHeaderValues();

            //Assert
            Assert.IsNull(linksWithoutMetadata.Metadata);
            Assert.IsNull(linksWithoutMetadata.Links.Pagination);

            Assert.IsNotNull(linksWithMetadata.Metadata);
            Assert.IsNotNull(linksWithMetadata.Links.Pagination);
            urlHelperMock.Verify(foo => foo.Link("EventsController", It.IsAny <object>()), Times.Exactly(2));

            Assert.AreEqual(GetProperty(ids[0], "id"), "");
            Assert.AreEqual(GetProperty(ids[1], "id"), "");
        }
Exemplo n.º 11
0
        public IActionResult GetAuthors([FromQuery] AuthorsResourceParameters authorsResourceParameters)
        {
            if (!_propertyMappingService.ValidMappingExistFor <AuthorDto, Author>(authorsResourceParameters.OrderBy) ||
                !_propertyCheckerService.TypeHasProperty <AuthorDto>(authorsResourceParameters.Fields))
            {
                return(BadRequest());
            }
            var authors = _courseLibraryRepository.GetAuthors(authorsResourceParameters);

            var metadata = PaginationMetadata.Create(authors);

            Response.Headers.Add("X-Pagination", JsonSerializer.Serialize(metadata));

            var links = GetLinksForAuthors(authorsResourceParameters, authors.HasNext, authors.HasPrevious);

            var shapedAuthors = _mapper.Map <IEnumerable <AuthorDto> >(authors)
                                .ShapeData(authorsResourceParameters.Fields);
            var shapedAuthorsWithLinks = shapedAuthors.Select(sa =>
            {
                var shapedAuthor = sa as IDictionary <string, object>;
                var authorLinks  = GetLinksForAuthor((Guid)shapedAuthor["Id"]);
                shapedAuthor.Add("links", authorLinks);
                return(shapedAuthor);
            });

            return(Ok(new { value = shapedAuthorsWithLinks, links }));
        }
Exemplo n.º 12
0
        public void FilterSortPaginateFilters()
        {
            List <String>         headers   = SampleHorseData.GetSampleHeaders();
            List <List <string> > tableData = SampleHorseData.GetSampleTableData();
            List <FilterMetadata> filters   = new List <FilterMetadata>
            {
                new FilterMetadata("Colour", "Bay")
            };
            SortMetadata       sortMetadata       = null;
            PaginationMetadata paginationMetadata = null;
            var expectedTableData = new List <List <string> >
            {
                new List <string> {
                    "Thoroughbred", "Bay", "1.66", "3", "true"
                },
                new List <string> {
                    "Arabian horse", "Bay", "1.51", "5", "true"
                }
            };

            PaginatedTable table =
                Horse.FilterSortPaginateTable(headers, tableData, filters, sortMetadata, paginationMetadata);

            table.Headers.ShouldBe(headers);
            table.TotalRows.ShouldBe(2);
            table.TableData.ShouldBe(expectedTableData);
        }
 private void SetPaginationHeaders(PaginationMetadata metadata)
 {
     Response.Headers.Add("X-Paging-PageNumber", metadata.Page.ToString());
     Response.Headers.Add("X-Paging-PageSize", metadata.PageSize.ToString());
     Response.Headers.Add("X-Paging-PageCount", metadata.TotalPages.ToString());
     Response.Headers.Add("X-Paging-TotalRecordCount", metadata.TotalRecordCount.ToString());
 }
Exemplo n.º 14
0
        public LinksHeader CreateLinks(string id, PaginationMetadata pagination, string routeName)
        {
            var _operationLinks = new OperationLinks()
            {
                Single = new SingleOperationLinks()
                {
                    Get  = _urlHelper.Link(GetSingleRouteName, new { id }),
                    Post = _urlHelper.Link(PostSingleRouteName, new { })
                },
                Multiple = new MultipleOperationLinks()
                {
                    Get = _urlHelper.Link(GetMultipleRouteName, new { })
                }
            };
            RelationLinks _relationLinks = null;

            if (id != null)
            {
                _relationLinks = new RelationLinks()
                {
                    Children = new RelatedChildLinks()
                    {
                        Events = _urlHelper.Link(EventsController.GetMultipleRouteName, new { incidentId = id })
                    }
                };
            }

            return(new LinksHeader(null, pagination, _urlHelper, routeName, _operationLinks, _relationLinks));
        }
Exemplo n.º 15
0
        public async Task OnResultExecutionAsync(ResultExecutingContext context, ResultExecutionDelegate next)
        {
            PaginatedResult result = context.Result as PaginatedResult;

            if (FiltersHelper.IsResponseSuccesful(result))
            {
                PaginationModel paginationModel = await FiltersHelper.GetParameterKnowingBaseTypeFromActionAsync <PaginationModel>(context);

                var paginationMethodInfo = filterConfiguration.ControllerInfoDictionary[context.Controller.GetType()].ControllerActions.
                                           Where(t => t.ResourceType == Attributes.ResourceType.Collection).FirstOrDefault();
                PaginationMetadata paginationMetadata = paginationHelperService.GeneratePaginationMetaData(
                    result.PaginationInfo, paginationModel, FiltersHelper.GetControllerName(context), paginationMethodInfo.ActionName);
                string             mediaType = FiltersHelper.GetValueFromHeader(context, "Accept");
                IEnumerable <TDto> pagedList = (IEnumerable <TDto>)result.Value;
                if (filterConfiguration.HateoasConfiguration.SupportsCustomDataType && mediaType.Equals(filterConfiguration.HateoasConfiguration.CustomDataType, StringComparison.CurrentCultureIgnoreCase))
                {
                    EnvelopCollection <EnvelopDto <TDto> > pagedListWithLinks = AddInternalAndExternalLinks(context, paginationMetadata, pagedList);
                    result.Value = pagedListWithLinks;
                }
                else
                {
                    result.Value = pagedList;
                }
                await next();
            }
        }
Exemplo n.º 16
0
 public static PaginationMetadataValues ToSerializableValues(this PaginationMetadata pagination)
 => new PaginationMetadataValues()
 {
     PageNumber   = pagination.PageNumber.ToPathTokenString(),
     PageSize     = pagination.PageSize.ToPathTokenString(),
     TotalRecords = pagination.TotalRecords.ToPathTokenString(),
     TotalPages   = pagination.TotalPages.ToPathTokenString()
 };
Exemplo n.º 17
0
        public IActionResult GetPeople([FromQuery] PeopleParameters peopleParameters)
        {
            IPaginationMetadata metadata = new PaginationMetadata(peopleParameters.MaxPageSize, peopleParameters.PageNumber, peopleParameters.PageSize);

            Response.Headers.Add("X-Pagination", JsonConvert.SerializeObject(metadata));

            return(Ok(_peopleDataAccess.GetByPaginationParameters(peopleParameters.PageNumber, peopleParameters.PageSize)));
        }
Exemplo n.º 18
0
 public GetUncorrelatedEventsRequest(PaginationMetadata pagination,
                                     EventFilters filter,
                                     AuthenticatedUserContext userContext)
     : base(userContext)
 {
     Pagination = pagination;
     Filter     = filter;
 }
        /// <summary>
        /// GET request to the API
        /// </summary>
        /// <typeparam name="T">Type of return data</typeparam>
        /// <param name="resourceParameters">Resource parameters that will be sent as query string params</param>
        /// <param name="pathToAppend">Additional path to append on base url (e.g. "lock" custom operation as "/users/1/lock")</param>
        /// <returns></returns>
        public async Task <APIServiceResult <List <T> > > Get <T>(object resourceParameters = null, string pathToAppend = "")
        {
            try
            {
                if (!string.IsNullOrWhiteSpace(pathToAppend))
                {
                    request.Url.AppendPathSegment(pathToAppend);
                }

                var response = await request.SetQueryParams(resourceParameters).GetAsync();

                RevertToBaseRequest(resourceParameters);

                if (response.StatusCode != HttpStatusCode.OK)
                {
                    if (response.StatusCode == HttpStatusCode.Forbidden)
                    {
                    }

                    if (response.StatusCode == HttpStatusCode.BadRequest)
                    {
                        if (response.Content != null)
                        {
                            var errorMessage = await response.Content.ReadAsStringAsync();

                            return(APIServiceResult <List <T> > .BadRequest(errorMessage));
                        }
                    }

                    return(APIServiceResult <List <T> > .WithStatusCode(response.StatusCode));
                }

                var headers = response.Headers;

                var result = await response.Content.ReadAsAsync <List <T> >();

                if (response.StatusCode == HttpStatusCode.OK && result == null)
                {
                    return(APIServiceResult <List <T> > .OK());
                }

                var xpaginationHeader = headers.FirstOrDefault(x => x.Key == "X-Pagination").Value?.FirstOrDefault();

                PaginationMetadata paginationMetadata = null;

                if (!string.IsNullOrWhiteSpace(xpaginationHeader))
                {
                    paginationMetadata = JsonConvert.DeserializeObject <PaginationMetadata>(xpaginationHeader);
                }

                return(APIServiceResult <List <T> > .OK(result, paginationMetadata));
            }
            catch (Exception ex)
            {
                return(APIServiceResult <List <T> > .Exception());
            }
        }
Exemplo n.º 20
0
        public async Task <IActionResult> GetAllShowtimesAsync([FromRoute] Guid movieId, [FromQuery] RequestParameters requestParameters, [FromHeader(Name = "Accept")] string mediaType)
        {
            if (!await _showtimeRepository.MovieExists(movieId))
            {
                return(NotFound());
            }

            if (string.IsNullOrWhiteSpace(requestParameters.OrderBy))
            {
                //  TODO: change to order by when playing
                requestParameters.OrderBy = "Id";
            }

            if (!_propertyMappingService.ValidMappingExistsFor <ShowtimeDto, Showtime>(requestParameters.Fields))
            {
                return(BadRequest());
            }

            if (!_typeHelperService.TypeHasProperties <ShowtimeDto>(requestParameters.Fields))
            {
                return(BadRequest());
            }

            var showtimesPagedList = await _showtimeRepository.GetAllShowtimesAsync(movieId, requestParameters.OrderBy, requestParameters.PageNumber, requestParameters.PageSize);

            var showtimes = Mapper.Map <IEnumerable <ShowtimeDto> >(showtimesPagedList);

            if (mediaType == "application/vnd.biob.json+hateoas")
            {
                return(Ok(CreateHateoasResponse(showtimesPagedList, requestParameters)));
            }
            else
            {
                var previousPageLink   = showtimesPagedList.HasPrevious ? CreateUrlForResource(requestParameters, PageType.PreviousPage) : null;
                var nextPageLink       = showtimesPagedList.HasNext ? CreateUrlForResource(requestParameters, PageType.NextPage) : null;
                var paginationMetadata = new PaginationMetadata()
                {
                    TotalCount       = showtimesPagedList.TotalCount,
                    PageSize         = showtimesPagedList.PageSize,
                    CurrentPage      = showtimesPagedList.CurrentPage,
                    TotalPages       = showtimesPagedList.TotalPages,
                    PreviousPageLink = previousPageLink,
                    NextPageLink     = nextPageLink
                };

                Response.Headers.Add("X-Pagination", Newtonsoft.Json.JsonConvert.SerializeObject(paginationMetadata));

                if (requestParameters.IncludeMetadata)
                {
                    var showtimesWithMetadata = new EntityWithPaginationMetadataDto <ShowtimeDto>(paginationMetadata, showtimes);
                    return(Ok(showtimesWithMetadata));
                }

                return(Ok(showtimes));
            }
        }
Exemplo n.º 21
0
 public GetEventsRequest(long incidentId,
                         PaginationMetadata pagination,
                         EventFilters filter,
                         AuthenticatedUserContext userContext)
     : base(userContext)
 {
     IncidentId = incidentId;
     Pagination = pagination;
     Filter     = filter;
 }
Exemplo n.º 22
0
        public async Task <IActionResult> Get([FromQuery] PaginationMetadata pagination)
        {
            var result = await _mediator
                         .Send(new GetIncidentsRequest(pagination, AuthContext))
                         .ConfigureAwait(continueOnCapturedContext: false);

            var links = Links.CreatePaginatedLinks(IncidentRoutes.GetSingle, pagination);

            return(OkIfFound(result, links));
        }
Exemplo n.º 23
0
        public async Task <IActionResult> GetEvents([FromRoute] long incidentId,
                                                    [FromQuery] PaginationMetadata pagination,
                                                    [FromQuery] EventFilters filter)
        {
            var result = await _mediator.Send(new GetEventsRequest(incidentId, pagination, filter, _authContext));

            Response.Headers.AddLinksHeader(CreateLinks(null, incidentId.ToString(), filter, pagination, GetMultipleRouteName));

            return(Ok(result));
        }
Exemplo n.º 24
0
        public async Task <IActionResult> GetAllMoviesAsync(
            [FromQuery] RequestParameters requestParameters,
            [FromHeader(Name = "Accept")] string mediaType)
        {
            if (string.IsNullOrWhiteSpace(requestParameters.OrderBy))
            {
                requestParameters.OrderBy = "Title";
            }

            if (!_propertyMappingService.ValidMappingExistsFor <MovieDto, Movie>(requestParameters.Fields))
            {
                return(BadRequest());
            }

            if (!_typeHelperService.TypeHasProperties <MovieDto>(requestParameters.Fields))
            {
                return(BadRequest());
            }

            var moviesPagedList = await _movieRepository.GetAllMoviesAsync(requestParameters.OrderBy,
                                                                           requestParameters.SearchQuery,
                                                                           requestParameters.PageNumber, requestParameters.PageSize);

            var movies = Mapper.Map <IEnumerable <MovieDto> >(moviesPagedList);

            if (mediaType == "application/vnd.biob.json+hateoas")
            {
                return(Ok(CreateHateoasResponse(moviesPagedList, requestParameters)));
            }
            else
            {
                var previousPageLink   = moviesPagedList.HasPrevious ? CreateUrlForResource(requestParameters, PageType.PreviousPage) : null;
                var nextPageLink       = moviesPagedList.HasNext ? CreateUrlForResource(requestParameters, PageType.NextPage) : null;
                var paginationMetadata = new PaginationMetadata()
                {
                    TotalCount       = moviesPagedList.TotalCount,
                    PageSize         = moviesPagedList.PageSize,
                    CurrentPage      = moviesPagedList.CurrentPage,
                    TotalPages       = moviesPagedList.TotalPages,
                    PreviousPageLink = previousPageLink,
                    NextPageLink     = nextPageLink
                };

                Response.Headers.Add("X-Pagination", Newtonsoft.Json.JsonConvert.SerializeObject(paginationMetadata));

                if (requestParameters.IncludeMetadata)
                {
                    var shapedMovies       = movies.ShapeData(requestParameters.Fields);
                    var moviesWithMetadata = new EntityWithPaginationMetadataDto <ExpandoObject>(paginationMetadata, shapedMovies);
                    return(Ok(moviesWithMetadata));
                }

                return(Ok(movies.ShapeData(requestParameters.Fields)));
            }
        }
Exemplo n.º 25
0
        public ILinksHeader CreatePaginatedLinks(string routeName, PaginationMetadata pagination)
        {
            ThrowIf.NullOrWhiteSpace(routeName, nameof(routeName));
            var routeValues = new { };
            var route       = UrlHelper.Link(routeName, routeValues);

            var           operationLinks = GetOperationLinks(routeValues);
            RelationLinks relationLinks  = null;

            return(new PaginatedLinksHeader(route, operationLinks, relationLinks, pagination));
        }
Exemplo n.º 26
0
        public async Task <IActionResult> Get([FromQuery] PaginationMetadata pagination)
        {
            var result = await _mediator.Send(new GetIncidentsRequest(pagination, _authContext));

            if (result == null)
            {
                return(NotFound($"{nameof(Incident)}s not found"));
            }
            Response.Headers.AddLinksHeader(CreateLinks(null, pagination, GetSingleRouteName));
            return(Ok(result));
        }
Exemplo n.º 27
0
        public ExpandoObject CreateLinkedentityWithmetadataObject <T>(
            PaginationMetadata paginationMetadata,
            IEnumerable <T> objs, IEnumerable <LinkDto> links)
        {
            var objWithMetadata = new ExpandoObject();

            ((IDictionary <string, object>)objWithMetadata).Add("metadata", paginationMetadata);
            ((IDictionary <string, object>)objWithMetadata).Add("records", objs);
            ((IDictionary <string, object>)objWithMetadata).Add("links", links);
            return(objWithMetadata);
        }
 public static APIServiceResult <T> OK(T data, PaginationMetadata paginationMetadata)
 {
     return(new APIServiceResult <T>
     {
         Data = data,
         PaginationMetadata = paginationMetadata,
         Succeeded = true,
         StatusCode = HttpStatusCode.OK,
         HasData = data != null && ((!typeof(T).IsAssignableFrom(typeof(IList))) ? (data as IList)?.Count > 0 : true)
     });
 }
        public PaginationMetadata PaginationMetadata(QueryParameters queryParameters)
        {
            PaginationMetadata paginationMetadata = new PaginationMetadata()
            {
                TotalCount  = _operationHistoryRepository.GetCountPerAccount(queryParameters.AccountId),
                PageSize    = queryParameters.PageCount,
                CurrentPage = queryParameters.Page,
            };

            paginationMetadata.TotalPages = queryParameters.GetTotalPages(paginationMetadata.TotalCount);
            return(paginationMetadata);
        }
        private PaginationMetadata CreatePaginationMetadata(TransactionFilterEntityModel filterModel, int totalRecordCount)
        {
            var metadata = new PaginationMetadata
            {
                Page             = filterModel.Page,
                PageSize         = filterModel.PageSize,
                TotalPages       = PaginationHelper.CalculateTotalPages(filterModel, totalRecordCount),
                TotalRecordCount = totalRecordCount
            };

            return(metadata);
        }