예제 #1
0
        /// <summary>
        /// Create sort expression.
        /// </summary>
        /// <param name="me">Me.</param>
        /// <param name="orderByProperty">The order by property.</param>
        /// <param name="sortOrder">The sort order.</param>
        /// <returns>Expression.</returns>
        public static Expression Sort(this Expression me, String orderByProperty, SortOrderType sortOrder)
        {
            // Get sort property
            var  sortProperty  = me.Type.GenericTypeArguments[0].GetRuntimeProperty(orderByProperty);
            Type predicateType = typeof(Func <,>).MakeGenericType(me.Type.GetTypeInfo().GenericTypeArguments[0], sortProperty.PropertyType);
            var  sortMethod    = typeof(Enumerable).GetGenericMethod(sortOrder.ToString(),
                                                                     new Type[] { me.Type.GetTypeInfo().GenericTypeArguments[0], sortProperty.PropertyType },
                                                                     new Type[] { me.Type, predicateType });

            // Get builder methods
            var sortParameter = Expression.Parameter(me.Type.GetTypeInfo().GenericTypeArguments[0], "sort");
            var builderMethod = typeof(Expression).GetGenericMethod(nameof(Expression.Lambda), new Type[] { predicateType }, new Type[] { typeof(Expression), typeof(ParameterExpression[]) });
            var sortLambda    = builderMethod.Invoke(null, new object[] { Expression.MakeMemberAccess(sortParameter, sortProperty), new ParameterExpression[] { sortParameter } }) as Expression;

            return(Expression.Call(sortMethod as MethodInfo, me, sortLambda));
        }
 public override string ToString()
 {
     return("Framework.Persistence.SortOrder(PropertyName:{0}, SortOrderType:{1})".FormatInvariantCulture(PropertyName, SortOrderType.ToString()));
 }
        /// <summary>
        /// Get Presentations
        /// </summary>
        /// <param name="searchPresentation">Search Presentation</param>
        /// <param name="skip">Records to skip</param>
        /// <param name="top">Records Count</param>
        /// <param name="sortDirection">Sort Direction</param>
        /// <returns></returns>
        public List <Presentation> GetPresentations(string searchPresentation, int skip, int top, SortOrderType sortDirection)
        {
            List <Presentation> presentationList = null;
            var presentationUrl = Constants.PresentationUrl;

            if (!string.IsNullOrEmpty(searchPresentation))
            {
                presentationUrl += string.Concat(Constants.OneSpace, searchPresentation);
            }
            var request = new RestRequest(presentationUrl, Method.GET);

            request.AddParameter(Constants.Select, Constants.Full);
            request.AddParameter(Constants.Orderby, string.Concat(Constants.RecordDateOrder, sortDirection.ToString().ToLower()));
            request.AddParameter(Constants.Skip, skip);
            request.AddParameter(Constants.Top, top > 0 ? top : 2000);
            var presentations = ClientManager.Client.Execute <GenericResponse <PresentationFullRepresentation> >(request);

            if (presentations.Data?.Value != null)
            {
                presentationList = presentations.Data.Value.Select(MapToModel).ToList();
            }
            return(presentationList);
        }