/// <summary> /// Adds all Queries from a NavigationQueries as Link using this hypermediaObject type target. /// Existing if a Query is added for which a Link with the same relation exists it is replaced. /// </summary> /// <param name="navigationQueries">The Queries to add</param> public void AddNavigationQueries(NavigationQueries navigationQueries) { foreach (var navigationQuery in navigationQueries.Queries) { Links.Add(navigationQuery.Key, new HypermediaObjectQueryReference(GetType(), navigationQuery.Value)); } }
public static NavigationQueries Build <TSortPropertyEnum, TQueryFilter, TEntitiy>(QueryBase <TSortPropertyEnum, TQueryFilter> query, QueryResult <TEntitiy> queryResult) where TSortPropertyEnum : struct where TQueryFilter : IQueryFilter, new() { var result = new NavigationQueries(); if (!query.Pagination.HasPagination() || queryResult.TotalCountOfEnties <= 0) { return(result); } result.AddQuery(DefaultHypermediaRelations.Queries.All, CreateQueryAll(query)); QueryBase <TSortPropertyEnum, TQueryFilter> createdQuery; if (TryCreateQueryFirst(query, queryResult.TotalCountOfEnties, out createdQuery)) { result.AddQuery(DefaultHypermediaRelations.Queries.First, createdQuery); } if (TryCreateQueryNext(query, queryResult.TotalCountOfEnties, out createdQuery)) { result.AddQuery(DefaultHypermediaRelations.Queries.Next, createdQuery); } if (TryCreateQueryPrevious(query, queryResult.TotalCountOfEnties, out createdQuery)) { result.AddQuery(DefaultHypermediaRelations.Queries.Previous, createdQuery); } if (TryCreateQueryLast(query, queryResult.TotalCountOfEnties, out createdQuery)) { result.AddQuery(DefaultHypermediaRelations.Queries.Last, createdQuery); } return(result); }