Example #1
0
        /// <summary>
        /// 得到一个机构下人员
        /// </summary>
        /// <param name="id">机构ID</param>
        /// <param name="hasPartTime">是否包含兼任人员</param>
        /// <returns></returns>
        public List <Model.User> GetUsers(Guid id, bool hasPartTime = true)
        {
            List <Model.User> users        = new List <Model.User>();
            OrganizeUser      organizeUser = new OrganizeUser();
            User user          = new User();
            var  organizeUsers = organizeUser.GetListByOrganizeId(id);

            foreach (var organizeUserModel in organizeUsers)
            {
                if (!hasPartTime && organizeUserModel.IsMain != 1)//如果不包含兼任人员,则跳过
                {
                    continue;
                }
                var userModel = user.Get(organizeUserModel.UserId);
                if (organizeUserModel.IsMain == 0)
                {
                    userModel.PartTimeId = organizeUserModel.Id;
                }
                if (null != userModel)
                {
                    users.Add(userModel);
                }
            }
            return(users.Distinct(new Model.User()).ToList());
        }
Example #2
0
        /// <summary>
        /// 删除一个组织机构
        /// </summary>
        /// <param name="id"></param>
        /// <param name="localizer">语言包</param>
        /// <returns></returns>
        public int Delete(Guid id, IStringLocalizer localizer = null)
        {
            var org = Get(id);

            if (null == org)
            {
                return(0);
            }
            if (id == GetRootId())//不能删除根
            {
                Log.Add(localizer == null ? "删除组织架构根节点失败-不能删除根" : localizer["Delete_CanotRootLog"], "", Log.Type.系统管理);
                return(0);
            }
            var allChilds = GetAllChilds(id);//要删除所有下级机构;

            allChilds.Add(org);
            List <Model.User>         allUsers        = new List <Model.User>();         //要删除机构下所有人员
            List <Model.OrganizeUser> allOrganizeUser = new List <Model.OrganizeUser>(); //要删除所有机构与人员关系
            OrganizeUser organizeUser = new OrganizeUser();

            foreach (var child in allChilds)
            {
                allUsers.AddRange(GetAllUsers(child.Id, false));
                allOrganizeUser.AddRange(organizeUser.GetListByOrganizeId(child.Id));
            }
            int i = organizeData.Delete(allChilds.ToArray(), allUsers.ToArray(), allOrganizeUser.ToArray());

            //同步企业微信人员
            if (Config.Enterprise_WeiXin_IsUse)
            {
                EnterpriseWeiXin.Organize wxOrganize = new EnterpriseWeiXin.Organize();
                foreach (var user in allUsers)
                {
                    wxOrganize.DeleteUser(user.Account);
                }
            }

            Log.Add((localizer == null ? "删除了组织架构及其下级和人员-" : localizer["Delete_Log"]) + org.Name + (localizer == null ? "-共" : localizer["Delete_Log1"]) + i.ToString() + (localizer == null ? "条数据" : localizer["Delete_Log2"])
                    , (localizer == null ? "组织:" : localizer["Delete_Log3"]) + Newtonsoft.Json.JsonConvert.SerializeObject(allChilds) +
                    (localizer == null ? "人员:" : localizer["Delete_Log4"]) + Newtonsoft.Json.JsonConvert.SerializeObject(allUsers) +
                    (localizer == null ? "人员与架构关系:" : localizer["Delete_Log5"]) + Newtonsoft.Json.JsonConvert.SerializeObject(allOrganizeUser), Log.Type.系统管理);
            return(i);
        }