Exemplo n.º 1
0
        public void QueryDirectChildrenTest()
        {
            SCUser user = SCObjectGenerator.PrepareUserObject();

            string ticks = DateTime.Now.Ticks.ToString();

            SCOrganization parent3 = SCObjectGenerator.PrepareOrganizationObject("第三组织" + ticks, "第三组织");

            SCObjectOperations.Instance.AddOrganization(parent3, SCOrganization.GetRoot());

            SCOrganization parent32 = SCObjectGenerator.PrepareOrganizationObject("第三.二组织" + ticks, "第三.二组织");

            SCObjectOperations.Instance.AddOrganization(parent32, parent3);

            SCUser user3 = SCObjectGenerator.PrepareUserObject("李", "琪" + ticks, "liqi");

            SCObjectOperations.Instance.AddUser(user3, parent32);

            string path = string.Format(@"第三组织{0}\第三.二组织{0}\李琪{0}", ticks);

            SCObjectAndRelationCollection result = SCSnapshotAdapter.Instance.QueryObjectAndRelationByParentIDs(new string[0], new string[] { parent32.ID }, false, true, false, DateTime.MinValue);

            result.Sort((x, y) => (int)(x.InnerSort - y.InnerSort));

            result.FillDetails();

            Assert.IsTrue(result.Count > 0);

            Console.WriteLine(result[0].Detail.Properties.GetValue("Name", string.Empty));
            Assert.AreEqual(user3.ID, result[0].Detail.ID);
        }
        public IEnumerable <IOguObject> GetChildren(IOrganization parent)
        {
            SCObjectAndRelationCollection relations = SCSnapshotAdapter.Instance.QueryObjectAndRelationByParentIDs(SchemaInfo.FilterByCategory("Users", "Groups", "Organizations").ToSchemaNames(), new string[] { parent.ID }, false, true, false, DateTime.MinValue);

            relations.FillDetails();

            var parentList = SCSnapshotAdapter.Instance.LoadAllParentsInfo(true, parent.ID)[parent.ID];

            StringBuilder strB = new StringBuilder(parentList.Count * 15);

            for (int i = 0; i < parentList.Count; i++)
            {
                strB.Append(parentList[i].Name);
                strB.Append("");
            }

            var parentPath = strB.ToString();

            foreach (var item in relations)
            {
                OguBase ogu = (OguBase)item.Detail.ToPhantom();
                ogu.FullPath = parentPath + ogu.Name;

                yield return(ogu);
            }
        }
Exemplo n.º 3
0
		/// <summary>
		/// 将SchemaObject转换为DataTable
		/// </summary>
		/// <param name="obj"></param>
		/// <returns></returns>
		public DataTable Convert(SCObjectAndRelationCollection relations)
		{
			DataTable table = CreateTable();

			relations.FillDetails();

			foreach (SCObjectAndRelation obj in relations)
			{
				DataRow row = table.NewRow();
				FillPropertiesToTable(obj, row);

				table.Rows.Add(row);
			}

			return table;
		}
Exemplo n.º 4
0
        /// <summary>
        /// 将SchemaObject转换为DataTable
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        public DataTable Convert(SCObjectAndRelationCollection relations)
        {
            DataTable table = CreateTable();

            relations.FillDetails();

            foreach (SCObjectAndRelation obj in relations)
            {
                DataRow row = table.NewRow();
                FillPropertiesToTable(obj, row);

                table.Rows.Add(row);
            }

            return(table);
        }
        public DataSet GetChildrenInRoles(string orgRoot, string appCodeName, string roleCodeNames, bool doesMixSort, bool doesSortRank, bool includeDelegate)
        {
            string[] schemaTypes = SchemaInfo.FilterByCategory("Roles").ToSchemaNames();
            string[] roleIDs     = OGUReaderService.SplitObjectValues(roleCodeNames);

            bool removeDuplicateData = GetMethodSettingAttributeValue("GetChildrenInRoles", "removeDuplicateData", false);

            SCObjectAndRelationCollection relations = SCSnapshotAdapter.Instance.QueryRolesContainsMembers(schemaTypes, appCodeName, roleIDs, removeDuplicateData, false, DateTime.MinValue);

            relations.FillDetails();

            DataSet ds = new DataSet();

            ds.Tables.Add(QueryHelper.GetOguTableBuilder(new string[] { "OguObject" }).Convert(relations));

            return(ds);
        }
        public OguObjectCollection <IOguObject> GetObjects(params string[] ids)
        {
            ids.NullCheck("ids");

            SCObjectAndRelationCollection relations = SCSnapshotAdapter.Instance.QueryObjectAndRelationByIDs(SchemaInfo.FilterByCategory("Users", "Groups", "Organizations").ToSchemaNames(), ids, false, DateTime.MinValue);

            relations.FillDetails();

            List <IOguObject> list = new List <IOguObject>(relations.Count);

            foreach (var item in relations)
            {
                SchemaObjectBase obj = item.Detail;
                if (obj != null)
                {
                    IOguObject oguObj = obj.ToSimpleObject().ToOguObject();
                    list.Add(oguObj);
                }
            }

            return(new OguObjectCollection <IOguObject>(list));
        }
Exemplo n.º 7
0
        public DataSet GetRolesUsers2(string orgRoot, string appCodeName, string roleCodeNames, DelegationMaskType delegationMask, SidelineMaskType sidelineMask, string extAttr, bool includeMatrixUsers)
        {
            string[] schemaTypes = SchemaInfo.FilterByCategory("Roles").ToSchemaNames();
            string[] roleIDs     = OGUReaderService.SplitObjectValues(roleCodeNames);

            bool removeDuplicateData = GetMethodSettingAttributeValue("GetChildrenInRoles", "removeDuplicateData", false);

            SCObjectAndRelationCollection relations = SCSnapshotAdapter.Instance.QueryRolesContainsUsers(schemaTypes, appCodeName, roleIDs, removeDuplicateData, false, DateTime.MinValue);

            if (includeMatrixUsers)
            {
                FillRoleMatrixRelations(relations, schemaTypes, roleIDs);
            }

            relations.FillDetails();

            DataSet ds = new DataSet();

            ds.Tables.Add(QueryHelper.GetOguTableBuilder(SchemaInfo.FilterByCategory("Users").ToSchemaNames()).Convert(relations));

            return(ds);
        }
Exemplo n.º 8
0
        public void QueryGroupMembersTest()
        {
            SCGroup group = SCObjectGenerator.PrepareGroupObject();

            SCObjectOperations.Instance.AddGroup(group, SCOrganization.GetRoot());

            SCUser user1 = SCObjectGenerator.PrepareUserObject();

            SCObjectOperations.Instance.AddUser(user1, SCOrganization.GetRoot());

            SCMemberRelation mr = SCObjectOperations.Instance.AddUserToGroup(user1, group);

            SCObjectAndRelationCollection result = SCSnapshotAdapter.Instance.QueryContainerContainsUsersByIDs(new string[] { "Groups" }, new string[] { group.ID }, false, DateTime.MinValue);

            Assert.IsTrue(result.Count > 0);

            result.FillDetails();

            Console.WriteLine(result[0].Detail.Properties.GetValue("Name", string.Empty));
            Console.WriteLine(result[0].ParentID);
            Assert.AreEqual(user1.ID, result[0].Detail.ID);
        }
Exemplo n.º 9
0
        public static List <T> ConvertToOguObjects <T>(this SCObjectAndRelationCollection relations) where T : IOguObject
        {
            relations.FillDetails();

            IOguObjectFactory factory = OguPermissionSettings.GetConfig().OguObjectFactory;

            //Dictionary<string, SCSimpleObjectCollection> allParentsInfo = SCSnapshotAdapter.Instance.LoadAllParentsInfo(true, relations.ToParentIDArray());
            List <T> objList = new List <T>(relations.Count);

            foreach (SCObjectAndRelation relation in relations)
            {
                SchemaObjectBase obj = relation.Detail;

                if (obj != null)
                {
                    SchemaType schemaType = SchemaType.Unspecified;

                    if (Enum.TryParse(obj.SchemaType, out schemaType))
                    {
                        T opObj = (T)factory.CreateObject(schemaType);

                        //SCSimpleObjectCollection parentsInfo = null;


                        //allParentsInfo.TryGetValue(relation.ParentID, out parentsInfo);

                        OguPropertyAdapterBase.GetConverter(opObj).Fill(opObj, obj, relation);
                        ((IOguPropertyAccessible)opObj).FullPath = relation.FullPath;

                        objList.Add(opObj);
                    }
                }
            }

            return(objList);
        }