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); } }
/// <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 })); }
/// <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); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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())); }
/// <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)); }
/// <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)); }