コード例 #1
0
        private ILinkViewModel GetPreviousLink(int total, int skip, int take)
        {
            if (skip == 0)
            {
                return(null);
            }

            if (skip > total)
            {
                return(GetLastLink(total, take));
            }

            var previousPage = Math.Max(skip - take, 0);

            if (previousPage <= 0)
            {
                return(GetFirstLink(take));
            }

            var newLink = new PlaceholderLinkViewModel(_meta);

            SafeSetValue(newLink.Values, nameof(take), take);
            SafeSetValue(newLink.Values, nameof(skip), previousPage);
            newLink.Href = GetNewHrefByValues(newLink.Values);

            return(newLink);
        }
コード例 #2
0
        private ILinkViewModel GetFirstLink(int take)
        {
            var newLink = new PlaceholderLinkViewModel(_meta);

            SafeSetValue(newLink.Values, nameof(take), take);
            SafeSetValue(newLink.Values, "skip", 0);
            newLink.Href = GetNewHrefByValues(newLink.Values);
            return(newLink);
        }
コード例 #3
0
        public FormViewModel(string path, string method, string relation, IEnumerable <FormFieldViewModel> fields)
        {
            Meta = new PlaceholderLinkViewModel
            {
                Href      = path,
                Method    = method,
                Relations = new[] { relation }
            };

            Items = fields.ToArray();
        }
コード例 #4
0
        private ILinkViewModel GetNextLink(int total, int skip, int take)
        {
            var nextPage = skip + take;

            if (nextPage >= total)
            {
                return(null);
            }

            var newLink = new PlaceholderLinkViewModel(_meta);

            SafeSetValue(newLink.Values, nameof(take), take);
            SafeSetValue(newLink.Values, nameof(skip), nextPage);
            newLink.Href = GetNewHrefByValues(newLink.Values);

            return(newLink);
        }
コード例 #5
0
        private ILinkViewModel GetLastLink(int total, int take)
        {
            if (total <= take)
            {
                return(null);
            }

            var skip = Math.Ceiling((total - (double)take) / take) * take;

            var newLink = new PlaceholderLinkViewModel(_meta);

            SafeSetValue(newLink.Values, nameof(take), take);
            SafeSetValue(newLink.Values, nameof(skip), skip);

            newLink.Href = GetNewHrefByValues(newLink.Values);

            return(newLink);
        }
コード例 #6
0
        public static PlaceholderLinkViewModel ToCollection(string hrefPattern, string method = "GET",
                                                            object values = null)
        {
            var placeholderLinkViewModel = new PlaceholderLinkViewModel
            {
                Method    = method,
                Relations = new[] { "collection" },
                Values    = new RouteValueDictionary(values)
            };

            placeholderLinkViewModel.Href = hrefPattern;
            foreach (var newLinkValue in placeholderLinkViewModel.Values)
            {
                var hrefKey = "{" + newLinkValue.Key + "}";
                placeholderLinkViewModel.Href =
                    placeholderLinkViewModel.Href.Replace(hrefKey, newLinkValue.Value.ToString());
            }

            return(placeholderLinkViewModel);
        }