Beispiel #1
0
        /// <summary>
        /// 递归获取任意部门
        /// </summary>
        /// <param name="parentOU">父OU</param>
        protected void GetChildOU(DirectoryOrganizationalUnit parentOU)
        {
            var     childOUs = ous.Where(u => u.ParentGuid == parentOU.Guid);
            DepInfo di;

            if (childOUs != null && childOUs.Count() > 0)
            {
                foreach (var childOU in childOUs)
                {
                    using (MMSProDBDataContext db = new MMSProDBDataContext(ConfigurationManager.ConnectionStrings["mmsConString"].ConnectionString))
                    {
                        using (DirectoryContext dc = new DirectoryContext(this._domainName, this._adminOfDC, this._pwdOfDC))
                        {
                            var tempDep = db.DepInfo.SingleOrDefault(u => u.DepName == childOU.Name);
                            if (tempDep == null)
                            {
                                di          = new DepInfo();
                                di.DepName  = childOU.Name;
                                di.DepCode  = childOU.Guid.ToString();
                                di.InCharge = "";
                                di.Contact  = "";
                                di.Remark   = "";
                                db.DepInfo.InsertOnSubmit(di);
                                db.SubmitChanges();
                            }
                        }
                    }
                    GetChildOU(childOU);
                }
            }
        }
Beispiel #2
0
        /// <summary>
        /// 递归获取任意员工
        /// </summary>
        /// <param name="parentOU">父OU</param>
        protected void GetChildUser(DirectoryOrganizationalUnit parentOU)
        {
            //string domainName = ConfigurationManager.AppSettings["mmsDomainName"].ToString();
            //string adminOfDC = ConfigurationManager.AppSettings["mmsAdminOfDC"].ToString();
            //string pwdOfDC = ConfigurationManager.AppSettings["mmsPwdOfDC"].ToString();
            //string nameOfRootOU = ConfigurationManager.AppSettings["mmsNameOfRootOU"].ToString();
            //string domainAbbreviate = ConfigurationManager.AppSettings["mmsDomainAbbreviate"].ToString();
            var     childOUs = ous.Where(u => u.ParentGuid == parentOU.Guid);
            EmpInfo ei;

            if (childOUs != null && childOUs.Count() > 0)
            {
                foreach (var curChildOU in childOUs)//遍历当前OU下的所有OU
                {
                    using (MMSProDBDataContext db = new MMSProDBDataContext(ConfigurationManager.ConnectionStrings["mmsConString"].ConnectionString))
                    {
                        var curChildUsers = users.Where(u => u.ParentGuid == curChildOU.Guid);
                        if (curChildUsers != null && curChildUsers.Count() > 0)
                        {
                            using (DirectoryContext dc = new DirectoryContext(this._domainName, this._adminOfDC, this._pwdOfDC))
                            {
                                foreach (var curUser in curChildUsers)//遍历curChildOU下的所有用户
                                {
                                    var eiTemp = db.EmpInfo.SingleOrDefault(u => u.Account == this._domainAbbreviate + "\\" + curUser.LogonName);
                                    if (eiTemp == null) //表示员工表中不存在该员工才添加
                                    {
                                        ei         = new EmpInfo();
                                        ei.Account = this._domainAbbreviate + "\\" + curUser.LogonName;
                                        ei.EmpName = curUser.DisplayName;
                                        var diTemp = db.DepInfo.SingleOrDefault(u => u.DepName == curChildOU.Name); //根据组织单元的名称找到相应的部门
                                        if (diTemp != null)                                                         //表示部门表中存在该部门才添加
                                        {
                                            ei.DepID = diTemp.DepID;                                                //把员工关联到相应部门
                                            db.EmpInfo.InsertOnSubmit(ei);
                                            db.SubmitChanges();

                                            //WSSRightHelper rightHelper = new WSSRightHelper();
                                            //SPWeb rWeb = SPContext.Current.Web;
                                            //string addLoginName = this._domainAbbreviate + "\\" + curUser.LogonName;
                                            //if (rightHelper.IsExistGroup(rWeb, this._mmsRightGroup))
                                            //{
                                            //    if (!rightHelper.IsExistUser(rWeb, addLoginName, this._mmsRightGroup))
                                            //    {
                                            //        rightHelper.AddUserToGroup(rWeb, addLoginName, this._mmsRightGroup, curUser.Mail, curUser.DisplayName, curUser.Note);
                                            //    }
                                            //}
                                        }
                                        else
                                        {
                                            noSyncDeps.Add(curChildOU.Name);//记录未同步到系统中的部门
                                        }
                                    }

                                    /*---------------------Begin 为了避免员工表中存在该员工时不能通步AD账户到Sharepoint权限里面-------------*/
                                    WSSRightHelper rightHelper  = new WSSRightHelper();
                                    SPWeb          rWeb         = SPContext.Current.Web;
                                    string         addLoginName = this._domainAbbreviate + "\\" + curUser.LogonName;
                                    if (rightHelper.IsExistGroup(rWeb, this._mmsRightGroup))
                                    {
                                        if (!rightHelper.IsExistUser(rWeb, addLoginName, this._mmsRightGroup))
                                        {
                                            rightHelper.AddUserToGroup(rWeb, addLoginName, this._mmsRightGroup, curUser.Mail, curUser.DisplayName, curUser.Note);
                                        }
                                    }
                                    /*---------------------End 为了避免员工表中存在该员工时不能通步AD账户到Sharepoint权限里面-------------*/
                                }
                            }
                        }
                        GetChildUser(curChildOU); //递归遍历curChildOU下的所有OU(部门),从而递归遍历所有用户(员工)
                    }
                }
            }
        }