Exemplo n.º 1
0
 /// <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);
        }