示例#1
0
        /// <summary>
        /// Returns folders information by Select query ignoring user rights.
        /// </summary>
        /// <param name="folderSchemaName">Folder table name.</param>
        /// <param name="folderIds">Unique identifiers of the folders.</param>
        /// <param name="userConnection">User connection.</param>
        /// <returns>Collection of folder information containers.</returns>
        public virtual List <FolderInfoModel> GetFoldersInfo(string folderSchemaName, List <Guid> folderIds, UserConnection userConnection)
        {
            List <FolderInfoModel> foldersInfo = new List <FolderInfoModel>();
            Select selectQuery = new Select(userConnection)
                                 .Column("Id")
                                 .Column("Name")
                                 .Column("SearchData")
                                 .Column("FolderTypeId")
                                 .From(folderSchemaName)
                                 .Where("Id")
                                 .In(Column.Parameters(folderIds)) as Select;
            DBTypeConverter dbTypeConverter = userConnection.DBTypeConverter;

            using (DBExecutor dbExecutor = userConnection.EnsureDBConnection()) {
                using (IDataReader reader = selectQuery.ExecuteReader(dbExecutor)) {
                    var nameColumnIndex       = reader.GetOrdinal("Name");
                    var searchDataColumnIndex = reader.GetOrdinal("SearchData");
                    while (reader.Read())
                    {
                        Guid   folderId     = dbTypeConverter.DBValueToGuid(reader["Id"]);
                        string displayValue = reader.GetString(nameColumnIndex);
                        Guid   typeId       = dbTypeConverter.DBValueToGuid(reader["FolderTypeId"]);
                        byte[] searchData   = reader.GetValue(searchDataColumnIndex) as byte[];
                        var    folderInfo   = new FolderInfoModel {
                            Id            = folderId,
                            DisplayValue  = displayValue,
                            SearchDataBin = searchData,
                            TypeId        = typeId
                        };
                        foldersInfo.Add(folderInfo);
                    }
                }
            }
            return(foldersInfo);
        }
示例#2
0
        public List <ResponceEntryPoints> GetProcessEntryPointsData(string entitySchemaUId, string entityId)
        {
            entitySchemaUId.CheckArgumentNullOrEmpty("entitySchemaUId");
            entityId.CheckArgumentNullOrEmpty("entityId");
            UserConnection userConnection   = UserConnection;
            var            response         = new List <ResponceEntryPoints>();
            var            entryPointSelect =
                (Select) new Select(userConnection)
                .Column("SysProcessElementDataId")
                .From("EntryPoint")
                .Where("EntitySchemaUId").IsEqual(Column.Parameter(new Guid(entitySchemaUId)))
                .And("EntityId").IsEqual(Column.Parameter(new Guid(entityId)))
                .And("IsActive").IsEqual(Column.Parameter(true));
            IProcessEngine processEngine = userConnection.IProcessEngine;

            using (DBExecutor dbExecutor = userConnection.EnsureDBConnection()) {
                using (IDataReader reader = entryPointSelect.ExecuteReader(dbExecutor)) {
                    DBTypeConverter dbTypeConverter = userConnection.DBTypeConverter;
                    while (reader.Read())
                    {
                        Guid elementId             = dbTypeConverter.DBValueToGuid(reader[0]);
                        var  sysProcessElementData = new SysProcessElementData(userConnection);
                        if (!sysProcessElementData.FetchFromDB(elementId))
                        {
                            continue;
                        }
                        Guid    sysProcessId = sysProcessElementData.SysProcessId;
                        Process process      = processEngine.FindProcessByUId(sysProcessId.ToString(), true);
                        if (process == null)
                        {
                            continue;
                        }
                        var processActivity = (ProcessActivity)process.FindFlowElementByUId(elementId);
                        BaseProcessSchemaElement schemaElement = processActivity.GetSchemaElement();
                        response.Add(new ResponceEntryPoints {
                            id      = elementId.ToString(),
                            caption = schemaElement.Caption
                        });
                    }
                }
            }
            return(response);
        }