Ejemplo n.º 1
0
 protected override bool InternalExecute(ProcessExecutingContext context)
 {
     if (string.IsNullOrEmpty(NumberValue))
     {
         Result = true;
     }
     else
     {
         var entitySchemaManager = context.UserConnection.GetSchemaManager("EntitySchemaManager") as EntitySchemaManager;
         var entitySchema        = entitySchemaManager.GetInstanceByUId(EntitySchemaUId) as EntitySchema;
         var entitySchemaName    = entitySchema.Name;
         var columnName          = entitySchema.Columns.GetByUId(ColumnUId).Name;
         var numberSelect        = new Terrasoft.Core.DB.Select(context.UserConnection)
                                   .Column(Terrasoft.Core.DB.Func.Count(columnName)).As("NumberCount")
                                   .From(entitySchema.Name).Where(columnName).IsEqual(new QueryParameter(NumberValue)) as Terrasoft.Core.DB.Select;
         using (var dbExecutor = context.UserConnection.EnsureDBConnection()) {
             using (var reader = numberSelect.ExecuteReader(dbExecutor)) {
                 if (reader.Read() && UserConnection.DBTypeConverter.DBValueToInt(reader[0]) > 0)
                 {
                     Result = false;
                 }
                 else
                 {
                     Result = true;
                 }
             }
         }
     }
     return(true);
 }
    private static System.Collections.ObjectModel.Collection <KeyValuePair <Guid, string> > GetParentProjects(Guid projectId, UserConnection userConnection)
    {
        Select projectSelect =
            new Terrasoft.Core.DB.Select(userConnection)
            .Column("Id").As("Id")
            .Column("Name").As("Name")
            .Column("ParentProjectId").As("ParentProjectId")
            .From("Project") as Select;
        HierarchicalSelectOptions options = new HierarchicalSelectOptions()
        {
            PrimaryColumnName = "Id",
            ParentColumnName  = "ParentProjectId",
            SelectType        = HierarchicalSelectType.Parents
        };
        QueryCondition startingCondition = options.StartingPrimaryColumnCondition;

        startingCondition.LeftExpression = new QueryColumnExpression("Id");
        startingCondition.IsEqual(Column.Parameter(projectId, "ParentProjectId", Terrasoft.Common.ParameterDirection.Input));
        projectSelect.HierarchicalOptions = options;
        var list = new System.Collections.ObjectModel.Collection <KeyValuePair <Guid, string> >();

        using (var dbExecutor = userConnection.EnsureDBConnection()) {
            using (var reader = projectSelect.ExecuteReader(dbExecutor)) {
                while (reader.Read())
                {
                    Guid id = Guid.Empty;
                    if (Guid.TryParse(reader[0].ToString(), out id))
                    {
                        list.Add(new KeyValuePair <Guid, string>(id, reader[1].ToString()));
                    }
                }
            }
        }
        return(list);
    }
        /// <summary>
        /// ##### ## ########### ############## #### ###### ###### # ########## ############## #### ######## ###############
        /// (###########, #############, ############ ### #######) ### ############## ##### ####### ##########.
        /// </summary>
        /// <param name="parentRoleId">############# ############### ### ############## ####.</param>
        /// <returns>###### ############### #### ########### ############### #####, ####### ##########.</returns>
        public object[] GetChildAdminUnits(string parentRoleId)
        {
            Select adminUnitSelect =
                new Terrasoft.Core.DB.Select(UserConnection).Column("Id")
                .As("Id")
                .Column("Name")
                .As("Name")
                .Column("ParentRoleId")
                .As("ParentRoleId")
                .From("SysAdminUnit")
                .Where("SysAdminUnitTypeValue")
                .In(Column.Parameter(Terrasoft.Core.DB.SysAdminUnitType.Organisation, "AdminUnitType_Organisation", Common.ParameterDirection.Input),
                    Column.Parameter(Terrasoft.Core.DB.SysAdminUnitType.Department, "AdminUnitType_Department", Common.ParameterDirection.Input),
                    Column.Parameter(Terrasoft.Core.DB.SysAdminUnitType.Manager, "AdminUnitType_Manager", Common.ParameterDirection.Input),
                    Column.Parameter(Terrasoft.Core.DB.SysAdminUnitType.Team, "AdminUnitType_Team", Common.ParameterDirection.Input),
                    Column.Parameter(6, "AdminUnitType_FunctionalRole", Common.ParameterDirection.Input)) as Select;
            HierarchicalSelectOptions options = new HierarchicalSelectOptions()
            {
                PrimaryColumnName = "Id",
                ParentColumnName  = "ParentRoleId",
                SelectType        = HierarchicalSelectType.Children
            };
            QueryCondition startingCondition = options.StartingPrimaryColumnCondition;

            startingCondition.LeftExpression = new QueryColumnExpression("ParentRoleId");
            startingCondition.IsEqual(Column.Parameter(new Guid(parentRoleId), "FolderId", Common.ParameterDirection.Input));
            adminUnitSelect.HierarchicalOptions = options;
            var list = new List <object>();

            list.Add(new Guid(parentRoleId));
            using (DBExecutor dbExecutor = UserConnection.EnsureDBConnection())
            {
                using (IDataReader reader = adminUnitSelect.ExecuteReader(dbExecutor))
                {
                    while (reader.Read())
                    {
                        Guid id = reader.GetColumnValue <Guid>("Id");
                        list.Add(id);
                    }
                }
            }
            return(list.ToArray());
        }
    public static Dictionary <Guid, KeyValuePair <Guid, string> > GetChildProjects(Guid projectId, UserConnection userConnection)
    {
        Select projectSelect =
            new Terrasoft.Core.DB.Select(userConnection)
            .Column("Id").As("Id")
            .Column("Name").As("Name")
            .Column("ParentProjectId").As("ParentProjectId")
            .From("Project") as Select;
        HierarchicalSelectOptions options = new HierarchicalSelectOptions()
        {
            PrimaryColumnName = "Id",
            ParentColumnName  = "ParentProjectId",
            SelectType        = HierarchicalSelectType.Children
        };
        QueryCondition startingCondition = options.StartingPrimaryColumnCondition;

        startingCondition.LeftExpression = new QueryColumnExpression("Id");
        startingCondition.IsEqual(Column.Parameter(projectId, "ParentProjectId", Terrasoft.Common.ParameterDirection.Input));
        projectSelect.HierarchicalOptions = options;
        var list = new Dictionary <Guid, KeyValuePair <Guid, string> >();

        using (var dbExecutor = userConnection.EnsureDBConnection()) {
            using (var reader = projectSelect.ExecuteReader(dbExecutor)) {
                while (reader.Read())
                {
                    if (!reader.IsDBNull(0))
                    {
                        var parentId = Guid.Empty;
                        if (!reader.IsDBNull(2))
                        {
                            parentId = userConnection.DBTypeConverter.DBValueToGuid(reader[2]);
                        }
                        var id = userConnection.DBTypeConverter.DBValueToGuid(reader[0]);
                        list.Add(id, new KeyValuePair <Guid, string>(parentId, reader[1].ToString()));
                    }
                }
            }
        }
        return(list);
    }
        public override void FillData(DataSourceRequest dataSourceRequest)
        {
            Page.TreeGrid.Clear();
            var dataSource = GetDataSource();

            dataSource.Clear();
            var entitySchemaManager = Page.UserConnection.EntitySchemaManager;
            var rightsSchema        = entitySchemaManager.GetInstanceByName("VwSysEntitySchemaColumnRight");

            Terrasoft.Core.DB.Select select = new Terrasoft.Core.DB.Select(Page.UserConnection)
                                              .Column(rightsSchema.Name, "Id")
                                              .Column(rightsSchema.Name, "SubjectSchemaUId")
                                              .Column(rightsSchema.Name, "SubjectColumnUId")
                                              .Column("RightLevel", "Name").As("RightLevelName")
                                              .Column("RightLevel", "Id").As("RightLevelId")
                                              .From(rightsSchema.Name)
                                              .InnerJoin("SysEntitySchemaColRightLevel").As("RightLevel")
                                              .On("RightLevel", "Id").IsEqual(rightsSchema.Name, "RightLevelId") as Select;
            string code = GetViewCode();

            if (code == "All" && SelectedNodePrimaryColumnValue != Guid.Empty)
            {
                var filterValuesObj = Page.UserConnection.DBSecurityEngine.GetUserAdminUnitCollection(SelectedNodePrimaryColumnValue);
                select.And("SysAdminUnitId")
                .In(Terrasoft.Core.DB.Column.Parameters(filterValuesObj));
            }
            else
            {
                select.And("SysAdminUnitId").IsEqual(Column.Parameter(SelectedNodePrimaryColumnValue));
            }
            select.OrderByAsc(rightsSchema.Name, "SubjectSchemaUId");
            select.OrderByAsc(rightsSchema.Name, "SubjectColumnUId");
            select.OrderByAsc(rightsSchema.Name, "Position");
            string             schemaName  = String.Empty;
            string             columnName  = String.Empty;
            Guid               schemaId    = Guid.Empty;
            Guid               columnId    = Guid.Empty;
            Guid               curSchemaId = Guid.Empty;
            Guid               curColumnId = Guid.Empty;
            Guid               sParentId   = Guid.Empty;
            Guid               cParentId   = Guid.Empty;
            Entity             row;
            int                ordinal;
            string             rightLevelName = String.Empty;
            EntitySchema       entitySchema   = null;
            EntitySchemaColumn entityColumn;

            using (var dbExecutor = UserConnection.EnsureDBConnection()) {
                using (var reader = select.ExecuteReader(dbExecutor)) {
                    while (reader.Read())
                    {
                        ordinal = reader.GetOrdinal("SubjectSchemaUId");
                        if (!reader.IsDBNull(ordinal))
                        {
                            schemaId     = UserConnection.DBTypeConverter.DBValueToGuid(reader[ordinal]);
                            entitySchema = entitySchemaManager.FindInstanceByUId(schemaId);
                            if (entitySchema == null)
                            {
                                continue;
                            }
                            schemaName = entitySchema.Caption.Value;
                        }
                        ordinal = reader.GetOrdinal("SubjectColumnUId");
                        if (!reader.IsDBNull(ordinal))
                        {
                            columnId     = UserConnection.DBTypeConverter.DBValueToGuid(reader[ordinal]);
                            entityColumn = entitySchema.Columns.FindByUId(columnId);
                            if (entityColumn == null)
                            {
                                continue;
                            }
                            columnName   = entityColumn.Caption.Value;
                            entityColumn = null;
                        }
                        if (!schemaId.Equals(curSchemaId))
                        {
                            row       = dataSource.CreateRow();
                            sParentId = Guid.NewGuid();
                            row.SetColumnValue("Id", sParentId);
                            row.SetColumnValue("Name", schemaName);
                            row.SetColumnValue("ParentId", null);
                            row.SetColumnValue("Type", "EntitySchema");
                            dataSource.Add(row);
                            curSchemaId = schemaId;
                        }
                        if (!columnId.Equals(curColumnId))
                        {
                            row       = dataSource.CreateRow();
                            cParentId = Guid.NewGuid();
                            row.SetColumnValue("Id", cParentId);
                            row.SetColumnValue("Name", columnName);
                            row.SetColumnValue("ParentId", sParentId);
                            row.SetColumnValue("Type", "EntitySchemaColumn");
                            var rightLevelId = reader["RightLevelId"];
                            if (rightLevelId != null && new Guid(rightLevelId.ToString()) != Guid.Empty)
                            {
                                row.SetColumnValue("RightLevel", new Guid(rightLevelId.ToString()));
                            }
                            dataSource.Add(row);
                            curColumnId = columnId;
                        }
                    }
                }
            }
            dataSource.LoadRows(dataSourceRequest);
        }