/// <summary> /// Append join query condition /// </summary> /// <param name="joinQuery">Join query</param> /// <param name="conditionFilter">Condition filter</param> void AppendJoinQueryCondition(IQuery joinQuery, GlobalConditionFilter conditionFilter) { if (joinQuery == null) { return; } conditionFilter.SourceType = QuerySourceType.JoinQuery; conditionFilter.EntityType = joinQuery.GetEntityType(); conditionFilter.OriginalQuery = joinQuery; var conditionFilterResult = QueryManager.GetGlobalCondition(conditionFilter); if (conditionFilterResult != null) { conditionFilterResult.AppendTo(joinQuery); } //subqueries if (!joinQuery.Subqueries.IsNullOrEmpty()) { foreach (var squery in joinQuery.Subqueries) { AppendSubqueryCondition(squery, conditionFilter); } } //join query if (!joinQuery.JoinItems.IsNullOrEmpty()) { foreach (var jitem in joinQuery.JoinItems) { AppendJoinQueryCondition(jitem.JoinQuery, conditionFilter); } } }
/// <summary> /// Append repository condition /// </summary> /// <param name="originalQuery">Original query</param> /// <returns>Return the newest query object</returns> IQuery AppendRepositoryCondition(IQuery originalQuery, QueryUsageScene usageScene) { if (originalQuery == null) { originalQuery = QueryManager.Create(); originalQuery.SetEntityType(entityType); } else { originalQuery.SetEntityType(entityType); } //primary query GlobalConditionFilter conditionFilter = new GlobalConditionFilter() { OriginalQuery = originalQuery, UsageSceneEntityType = entityType, EntityType = entityType, SourceType = QuerySourceType.Repository, UsageScene = usageScene }; var conditionFilterResult = QueryManager.GetGlobalCondition(conditionFilter); if (conditionFilterResult != null) { conditionFilterResult.AppendTo(originalQuery); } //subqueries if (!originalQuery.Subqueries.IsNullOrEmpty()) { foreach (var squery in originalQuery.Subqueries) { AppendSubqueryCondition(squery, conditionFilter); } } //join if (!originalQuery.JoinItems.IsNullOrEmpty()) { foreach (var jitem in originalQuery.JoinItems) { AppendJoinQueryCondition(jitem.JoinQuery, conditionFilter); } } return(originalQuery); }