Example #1
0
        private void AddOrderByParameter(QueryReciever request)
        {
            if (!request.Query.OrderBy.Contains(':'))
            {
                AddError(request, ErrorMessage.Query.OrderParameterSeperator);
                return;
            }

            var orderQuery = request.Query.OrderBy.Split(":");

            if (!orderQuery[0].Contains(OrderParameterDescriptor.Ascending, StringComparison.OrdinalIgnoreCase) &&
                !orderQuery[0].Contains(OrderParameterDescriptor.Descending, StringComparison.OrdinalIgnoreCase))
            {
                AddError(request, ErrorMessage.Query.OrderParameterDescriptor);
                return;
            }

            if (!_querySemantics.DefaultFields.Contains(orderQuery[0]))
            {
                AddError(request, ErrorMessage.Query.OrderParameterField);
                return;
            }

            request.OrderByParameter = new OrderByParameter(orderQuery);
        }
Example #2
0
        private void AddExpandMembers(QueryReciever request)
        {
            var expandMembers = new List <string>();

            foreach (var member in request.Query.Expand.Split('.'))
            {
                if (_querySemantics.RelationalFields.Contains(member))
                {
                    expandMembers.Add(member);
                    continue;
                }

                AddError(request, ErrorMessage.Query.ExpandParameterField);
            }

            request.ExpandMembers = expandMembers.ToArray();
        }
Example #3
0
        public static PagedResponse <T> CreatePaginatedResponse <T>(
            IUriService uriService,
            QueryReciever request,
            ICollection <T> response,
            int?total)
        {
            var pagination = request.PaginationQuery;
            var nextPage   = pagination.PageNumber >= 1
                ? uriService.GetUri(request.RequestRoute,
                                    new PaginationQuery
            {
                PageNumber = pagination.PageNumber + 1,
                PageSize   = pagination.PageSize
            }).ToString()
                : null;

            var previousPage = pagination.PageNumber - 1 >= 1
                ? uriService.GetUri(request.RequestRoute,
                                    new PaginationQuery
            {
                PageNumber = pagination.PageNumber - 1,
                PageSize   = pagination.PageSize
            }).ToString()
                : null;

            return(new PagedResponse <T>
            {
                Data = response,
                PageNumber = pagination.PageNumber >= 1 ? pagination.PageNumber : null,
                PageSize = pagination.PageSize > response.Count ? response.Count
                : pagination.PageSize >= 1 ? pagination.PageSize : null,
                NextPage = total > pagination.PageSize ? nextPage : null,
                PreviousPage = previousPage,
                Total = total,
                Errors = request.Errors
            });
        }
Example #4
0
 private static void AddError(QueryReciever request, string errorMessage)
 {
     request.Errors ??= new List <string>();
     request.Errors.Add(errorMessage);
 }