コード例 #1
0
        public virtual JObject MakeToken(IFacet facet, ICriteriaConverter criteriaConverter = null, int?defaultSize = 10)
        {
            try
            {
                Argument.CheckNotNull("facet", facet);

                var specificBody   = this.Build(facet as dynamic);
                var orderableFacet = facet as IOrderableFacet;
                if (orderableFacet != null)
                {
                    var facetSize = orderableFacet.Size ?? defaultSize;
                    if (facetSize.HasValue)
                    {
                        specificBody["size"] = facetSize.Value.ToString(CultureInfo.CurrentCulture);
                    }
                }

                var namedBody = new JObject(new JProperty(facet.Type, specificBody));

                if (facet.Filter != null)
                {
                    // namedBody["filter"] = this.Build(facet.Filter as dynamic);
                    namedBody["filter"] = (criteriaConverter ?? new CriteriaJsonConverter())
                                          .MakeToken(facet.Filter);
                }

                return(namedBody);
            }
            catch (Exception ex)
            {
                throw new ArgumentException("Error on translate the given facet into jproperty, see inner exception for details.", ex);
            }
        }
コード例 #2
0
        /// <summary>
        /// Parse criteria converter
        /// </summary>
        /// <param name="converter">Criteria converter</param>
        /// <param name="objectName">Object name</param>
        /// <param name="fieldName">Field name</param>
        /// <returns>Reeturn format value</returns>
        internal static string ParseCriteriaConverter(ICriteriaConverter converter, string objectName, string fieldName)
        {
            var criteriaConverterParse = DataManager.GetCriteriaConverterParser(converter?.Name) ?? Parse;

            return(criteriaConverterParse(new CriteriaConverterParseOptions()
            {
                CriteriaConverter = converter,
                ServerType = DatabaseServerType.SQLServer,
                ObjectName = objectName,
                FieldName = fieldName
            }));
        }
コード例 #3
0
ファイル: DefaultQuery.cs プロジェクト: eznew-net/EZNEW
 /// <summary>
 /// Add order
 /// </summary>
 /// <param name="fieldName">Field name</param>
 /// <param name="desc">Sort by desc</param>
 /// <param name="converter">Field converter</param>
 public IQuery AddOrder(string fieldName, bool desc = false, ICriteriaConverter converter = null)
 {
     if (!string.IsNullOrWhiteSpace(fieldName))
     {
         sortCollection.Add(new SortCriteria()
         {
             Name      = fieldName,
             Desc      = desc,
             Converter = converter
         });
     }
     return(this);
 }
コード例 #4
0
 /// <summary>
 /// BeginLike Condition
 /// </summary>
 /// <typeparam name="TQueryModel">Query model</typeparam>
 /// <param name="sourceQuery">Source query</param>
 /// <param name="field">Field</param>
 /// <param name="value">Value</param>
 /// <param name="or">Connect with 'and'(true/default) or 'or'(false)</param>
 /// <param name="converter">Criteria converter</param>
 /// <returns>Return the newest IQuery object</returns>
 public static IQuery BeginLike <TQueryModel>(this IQuery sourceQuery, Expression <Func <TQueryModel, dynamic> > field, string value, bool or = false, ICriteriaConverter converter = null) where TQueryModel : IQueryModel <TQueryModel>
 {
     return(sourceQuery.AddCriteria(or ? QueryOperator.OR : QueryOperator.AND, ExpressionHelper.GetExpressionPropertyName(field.Body), CriteriaOperator.BeginLike, value, converter));
 }
コード例 #5
0
 /// <summary>
 /// BeginLike Condition
 /// </summary>
 /// <param name="sourceQuery">Source query</param>
 /// <param name="fieldName">Field name</param>
 /// <param name="value">Value</param>
 /// <param name="or">Connect with 'and'(true/default) or 'or'(false)</param>
 /// <param name="converter">Criteria converter</param>
 /// <returns>Return the newest IQuery object</returns>
 public static IQuery BeginLike(this IQuery sourceQuery, string fieldName, string value, bool or = false, ICriteriaConverter converter = null)
 {
     return(sourceQuery.AddCriteria(or ? QueryOperator.OR : QueryOperator.AND, fieldName, CriteriaOperator.BeginLike, value, converter));
 }
コード例 #6
0
 /// <summary>
 /// Greater than or equal condition
 /// </summary>
 /// <param name="sourceQuery">Source query</param>
 /// <param name="fieldName">Field name</param>
 /// <param name="value">Value</param>
 /// <param name="or">Connect with 'and'(true/default) or 'or'(false)</param>
 /// <param name="converter">Criteria converter</param>
 /// <returns>Return the newest IQuery object</returns>
 public static IQuery GreaterThanOrEqual(this IQuery sourceQuery, string fieldName, dynamic value, bool or = false, ICriteriaConverter converter = null)
 {
     return(sourceQuery.AddCriteria(or ? QueryOperator.OR : QueryOperator.AND, fieldName, CriteriaOperator.GreaterThanOrEqual, value, converter));
 }
コード例 #7
0
ファイル: NotInExtensions.cs プロジェクト: eznew-net/EZNEW
 /// <summary>
 /// NotInclude Condition
 /// </summary>
 /// <param name="sourceQuery">Source query</param>
 /// <param name="fieldName">Field name</param>
 /// <param name="value">Value</param>
 /// <param name="or">Connect with 'and'(true/default) or 'or'(false)</param>
 /// <param name="converter">Criteria converter</param>
 /// <returns>Return the newest IQuery object</returns>
 public static IQuery NotIn(this IQuery sourceQuery, string fieldName, IEnumerable value, bool or = false, ICriteriaConverter converter = null)
 {
     return(sourceQuery.AddCriteria(or ? QueryOperator.OR : QueryOperator.AND, fieldName, CriteriaOperator.NotIn, value, converter));
 }
コード例 #8
0
ファイル: SortExtensions.cs プロジェクト: eznew-net/EZNEW
 /// <summary>
 /// Order by desc
 /// </summary>
 /// <typeparam name="TQueryModel">Query model</typeparam>
 /// <param name="sourceQuery">Source query</param>
 /// <param name="field">Field</param>
 /// <param name="converter">Field converter</param>
 /// <returns>Return the newest IQuery object</returns>
 public static IQuery Desc <TQueryModel>(this IQuery sourceQuery, Expression <Func <TQueryModel, dynamic> > field, ICriteriaConverter converter = null) where TQueryModel : IQueryModel <TQueryModel>
 {
     return(sourceQuery.AddOrder(ExpressionHelper.GetExpressionPropertyName(field.Body), true, converter));
 }
コード例 #9
0
ファイル: SortExtensions.cs プロジェクト: eznew-net/EZNEW
 /// <summary>
 /// Order by desc
 /// </summary>
 /// <param name="sourceQuery">Source query</param>
 /// <param name="field">Field</param>
 /// <param name="converter">Field converter</param>
 /// <returns>Return the newest IQuery object</returns>
 public static IQuery Desc(this IQuery sourceQuery, string field, ICriteriaConverter converter = null)
 {
     return(sourceQuery.AddOrder(field, true, converter));
 }
コード例 #10
0
ファイル: AndExtensions.cs プロジェクト: eznew-net/EZNEW
        /// <summary>
        /// Add a condition with 'and'
        /// </summary>
        /// <param name="sourceQuery">Source query</param>
        /// <param name="eachFieldConnectOperator">each field codition connect operator</param>
        /// <param name="operator">Condition operator</param>
        /// <param name="value">Value</param>
        /// <param name="converter">Criteria converter</param>
        /// <param name="fieldNames">Field names</param>
        /// <returns>Return the newest IQuery object</returns>
        public static IQuery And(this IQuery sourceQuery, QueryOperator eachFieldConnectOperator, CriteriaOperator @operator, dynamic value, ICriteriaConverter converter, params string[] fieldNames)
        {
            if (fieldNames.IsNullOrEmpty())
            {
                return(sourceQuery);
            }
            IQuery groupQuery = QueryManager.Create();

            foreach (string field in fieldNames)
            {
                switch (eachFieldConnectOperator)
                {
                case QueryOperator.AND:
                default:
                    groupQuery = And(groupQuery, field, @operator, value, converter);
                    break;

                case QueryOperator.OR:
                    groupQuery = OrExtensions.Or(groupQuery, field, @operator, value, converter);
                    break;
                }
            }
            return(sourceQuery.AddQueryItem(QueryOperator.AND, groupQuery));
        }
コード例 #11
0
ファイル: AndExtensions.cs プロジェクト: eznew-net/EZNEW
 /// <summary>
 /// Add a condition with 'and'
 /// </summary>
 /// <param name="sourceQuery">Source query</param>
 /// <param name="fieldName">Field name</param>
 /// <param name="operator">Condition operator</param>
 /// <param name="value">Value</param>
 /// <param name="converter">Criteria converter</param>
 /// <returns>Return the newest IQuery object</returns>
 public static IQuery And(this IQuery sourceQuery, string fieldName, CriteriaOperator @operator, dynamic value, ICriteriaConverter converter = null)
 {
     return(sourceQuery.AddCriteria(QueryOperator.AND, fieldName, @operator, value, converter));
 }
コード例 #12
0
ファイル: AndExtensions.cs プロジェクト: eznew-net/EZNEW
        /// <summary>
        /// Add a condition with 'and'
        /// </summary>
        /// <typeparam name="TQueryModel">Query model</typeparam>
        /// <param name="sourceQuery">Source query</param>
        /// <param name="eachFieldConnectOperator">Each field connect operator</param>
        /// <param name="operator">Condition operator</param>
        /// <param name="value">Value</param>
        /// <param name="converter">Criteria converter</param>
        /// <param name="fields">Fields</param>
        /// <returns>Return the newest IQuery object</returns>
        public static IQuery And <TQueryModel>(this IQuery sourceQuery, QueryOperator eachFieldConnectOperator, CriteriaOperator @operator, dynamic value, ICriteriaConverter converter, params Expression <Func <TQueryModel, dynamic> >[] fields) where TQueryModel : IQueryModel <TQueryModel>
        {
            if (fields.IsNullOrEmpty())
            {
                return(sourceQuery);
            }
            IEnumerable <string> fieldNames = fields.Select(c => ExpressionHelper.GetExpressionPropertyName(c.Body));

            return(And(sourceQuery, eachFieldConnectOperator, @operator, value, converter, fieldNames.ToArray()));
        }
コード例 #13
0
ファイル: AndExtensions.cs プロジェクト: eznew-net/EZNEW
 /// <summary>
 /// Add a condition with 'and'
 /// </summary>
 /// <typeparam name="TQueryModel">Query model</typeparam>
 /// <param name="sourceQuery">Source query</param>
 /// <param name="field">Field</param>
 /// <param name="operator">Condition operator</param>
 /// <param name="value">Value</param>
 /// <param name="converter">Criteria converter</param>
 /// <returns>Return the newest IQuery object</returns>
 public static IQuery And <TQueryModel>(this IQuery sourceQuery, Expression <Func <TQueryModel, dynamic> > field, CriteriaOperator @operator, dynamic value, ICriteriaConverter converter = null) where TQueryModel : IQueryModel <TQueryModel>
 {
     return(And(sourceQuery, ExpressionHelper.GetExpressionPropertyName(field.Body), @operator, value, converter));
 }
コード例 #14
0
ファイル: DefaultQuery.cs プロジェクト: eznew-net/EZNEW
        /// <summary>
        /// Add a criteria
        /// </summary>
        /// <param name="queryOperator">Connect operator</param>
        /// <param name="fieldName">Field name</param>
        /// <param name="criteriaOperator">Condition operator</param>
        /// <param name="value">Value</param>
        /// <param name="converter">Converter</param>
        /// <param name="queryOption">query parameter option</param>
        public IQuery AddCriteria(QueryOperator queryOperator, string fieldName, CriteriaOperator criteriaOperator, dynamic value, ICriteriaConverter converter = null, QueryParameterOptions queryOption = null)
        {
            if (string.IsNullOrWhiteSpace(fieldName))
            {
                return(this);
            }
            Criteria newCriteria = Criteria.CreateNewCriteria(fieldName, criteriaOperator, value);

            newCriteria.Converter = converter;
            return(AddQueryItem(queryOperator, newCriteria, queryOption));
        }