public virtual Select ProcessDynamicFolder(Guid folderId)
        {
            var           dataValueTypeManager   = (DataValueTypeManager)UserConnection.AppManagerProvider.GetManager("DataValueTypeManager");
            DataValueType dateTimeDataValueType  = dataValueTypeManager.GetInstanceByName("DateTime");
            DataValueType guidDataValueType      = dataValueTypeManager.GetInstanceByName("Guid");
            DataValueType intDataValueType       = dataValueTypeManager.GetInstanceByName("Integer");
            EntitySchema  targetSchema           = UserConnection.EntitySchemaManager.GetInstanceByUId(TargetSchemaUId);
            IEntitySchemaQueryFilterItem filters = CommonUtilities.GetFolderEsqFilters(
                UserConnection, folderId, TargetFolderSchemaUId, TargetSchemaUId, true);
            var esq = new EntitySchemaQuery(targetSchema);

            if (RootSchemaName.Equals("BulkEmail") || RootSchemaName.Equals("BulkEmailSplit"))
            {
                esq.AddColumn(RootSchemaRecordRId, intDataValueType).SetForcedQueryColumnValueAlias("RootSchemaRecordId");
                esq.AddColumn("Email");
            }
            else
            {
                esq.AddColumn(RootSchemaRecordId, guidDataValueType).SetForcedQueryColumnValueAlias("RootSchemaRecordId");;
                esq.AddColumn(DefResponseId, guidDataValueType);
                esq.AddColumn(true, dataValueTypeManager.GetInstanceByName("Boolean"));
                esq.AddColumn(UserConnection.CurrentUser.ContactId, guidDataValueType);
                esq.AddColumn(UserConnection.CurrentUser.ContactId, guidDataValueType);
                esq.AddColumn("Id").SetForcedQueryColumnValueAlias("ContactRecordId");
                if (IsSetCampaignFirstStep == true && RootSchemaName == "Campaign")
                {
                    var campaignFirstStepId = GetCampaignFirstStep(RootSchemaRecordId);
                    esq.AddColumn(campaignFirstStepId, guidDataValueType).SetForcedQueryColumnValueAlias("CurrentStepId");
                }
            }
            if (filters != null)
            {
                esq.Filters.Add(filters);
            }
            Select folderQuery = esq.GetSelectQuery(UserConnection);
            Select resultSelect;

            switch (RootSchemaName)
            {
            case "Event":
                resultSelect = GetContactInEventDynamicFolderProcessingQuery(folderQuery);
                break;

            case "BulkEmailSplit":
            case "BulkEmail":
                resultSelect = GetContactInBulkEmailDynamicFolderProcessingQuery(folderQuery);
                break;

            case "Campaign":
                resultSelect = GetContactInCampaignDynamicFolderProcessingQuery(folderQuery);
                break;

            default:
                resultSelect = null;
                break;
            }
            return(resultSelect);
        }
Пример #2
0
        /// <summary>
        /// Create esq for entity
        /// </summary>
        /// <param name="entitySchemaName">Entity schema name</param>
        /// <param name="folderId">Search folder id</param>
        /// <param name="newFolderId">New folder id</param>
        /// <returns></returns>
        protected virtual Select CreateEntityDataSelect(string entitySchemaName, Guid folderId, Guid newFolderId)
        {
            var entitySchemaManager = _userConnection.EntitySchemaManager;
            var entitySchema        = entitySchemaManager.GetInstanceByName(entitySchemaName);
            var sourceSchemaUId     = entitySchema.UId;
            var folderSchemaUId     = _userConnection.EntitySchemaManager.GetInstanceByName($"{entitySchemaName}Folder").UId;
            var esq = new EntitySchemaQuery(entitySchema);

            esq.PrimaryQueryColumn.IsAlwaysSelect = true;
            esq.AddColumn(newFolderId, _userConnection.DataValueTypeManager.FindDataValueTypeByType(typeof(Guid)));
            var esqFilter = CommonUtilities.GetFolderEsqFilters(_userConnection, folderId, folderSchemaUId, sourceSchemaUId, true);

            esq.Filters.Add(esqFilter);
            return(esq.GetSelectQuery(_userConnection));
        }
Пример #3
0
 public static IEntitySchemaQueryFilterItem GetFolderFilters(
     UserConnection userConnection, Guid recordId, Guid folderSchemaUId, Guid sourceSchemaUId)
 {
     return(CommonUtilities.GetFolderEsqFilters(
                userConnection, recordId, folderSchemaUId, sourceSchemaUId, true));
 }