/// <summary> /// Modifies a given QueryCriteria to exclude inactive items /// </summary> /// <typeparam name="T">Type of object to return</typeparam> /// <param name="criteria">QueryCriteria to adjust</param> /// <returns></returns> private static QueryCriteria ExcludeInactiveItems <T>(QueryCriteria criteria) where T : TypeProjection { PropertyPathHelper pathHelper = new PropertyPathHelper(); pathHelper.PropertyName = "ObjectStatus"; pathHelper.ObjectClass = ClassConstants.GetClassIdByType <T>(); QueryCriteriaExpression activeItemsOnly = new QueryCriteriaExpression { PropertyName = pathHelper.ToString(), PropertyType = QueryCriteriaPropertyType.Property, Operator = QueryCriteriaExpressionOperator.Equal, Value = EnumerationConstants.ConfigItem.BuiltinValues.ObjectStatus.Active.ToString("D") }; QueryCriteria newCriteria = criteria; if (newCriteria.Expressions.Count > 0) { newCriteria.GroupingOperator = QueryCriteriaGroupingOperator.And; } else { newCriteria.GroupingOperator = QueryCriteriaGroupingOperator.SimpleExpression; } newCriteria.Expressions.Add(activeItemsOnly); return(newCriteria); }
/// <summary> /// Convenience method to retrieve an object derived from the TypeProjection class, using its FullName /// </summary> /// <typeparam name="T">TypeProjection derived type</typeparam> /// <param name="authToken">AuthorizationToken to use</param> /// <param name="name">FullName to find</param> /// <returns></returns> internal static async Task <T> GetByFullName <T>(AuthorizationToken authToken, string name) where T : TypeProjection { QueryCriteriaExpression expr = new QueryCriteriaExpression { PropertyName = "FullName", PropertyType = QueryCriteriaPropertyType.GenericProperty, Operator = QueryCriteriaExpressionOperator.Equal, Value = ClassConstants.GetClassNameByType <T>() + ":" + name }; QueryCriteria criteria = new QueryCriteria(TypeProjectionConstants.GetProjectionIdByType <T>()) { GroupingOperator = QueryCriteriaGroupingOperator.SimpleExpression }; criteria.Expressions.Add(expr); List <T> retList = await GetByCriteria <T>(authToken, criteria); if (retList.Count == 0) { return(null); } else if (retList.Count == 1) { return(retList[0]); } else { throw new CiresonApiException("More than one item found with identical full name"); } }
/// <summary> /// Takes a QueryCriteriaExpression and serializes it as a SimpleExpression JSON object /// </summary> /// <param name="writer">Writer to use</param> /// <param name="expression">QueryCriteriaExpression object to serialize</param> internal static void WriteSimpleExpression(JsonWriter writer, QueryCriteriaExpression expression) { writer.WritePropertyName("SimpleExpression"); writer.WriteStartObject(); #region ValueExpressionLeft JSON object { writer.WritePropertyName("ValueExpressionLeft"); writer.WriteStartObject(); #region Property/GenericProperty Property { writer.WritePropertyName(expression.PropertyType.ToString()); writer.WriteValue(expression.PropertyName); } #endregion Property/GenericProperty Property writer.WriteEndObject(); } #endregion ValueExpressionLeft JSON object #region Operator Property { writer.WritePropertyName("Operator"); writer.WriteValue(expression.Operator.ToString()); } #endregion Operator Property #region ValueExpressionRight JSON object { writer.WritePropertyName("ValueExpressionRight"); writer.WriteStartObject(); #region Value property writer.WritePropertyName("Value"); writer.WriteValue(expression.Value); #endregion Value property writer.WriteEndObject(); } #endregion ValueExpressionRight JSON object writer.WriteEndObject(); }
/// <summary> /// Takes a QueryCriteriaExpression and serializes it as a SimpleExpression JSON object /// </summary> /// <param name="writer">Writer to use</param> /// <param name="expression">QueryCriteriaExpression object to serialize</param> internal static void WriteSimpleExpression(JsonWriter writer, QueryCriteriaExpression expression) { writer.WritePropertyName("SimpleExpression"); writer.WriteStartObject(); #region ValueExpressionLeft JSON object { writer.WritePropertyName("ValueExpressionLeft"); writer.WriteStartObject(); #region Property/GenericProperty Property { writer.WritePropertyName(expression.PropertyType.ToString()); writer.WriteValue(expression.PropertyName); } #endregion Property/GenericProperty Property writer.WriteEndObject(); } #endregion ValueExpressionLeft JSON object #region Operator Property { writer.WritePropertyName("Operator"); writer.WriteValue(expression.Operator.ToString()); } #endregion Operator Property #region ValueExpressionRight JSON object { writer.WritePropertyName("ValueExpressionRight"); writer.WriteStartObject(); #region Value property writer.WritePropertyName("Value"); writer.WriteValue(expression.Value); #endregion Value property writer.WriteEndObject(); } #endregion ValueExpressionRight JSON object writer.WriteEndObject(); }