コード例 #1
0
ファイル: RoleService.cs プロジェクト: zszqwe/MvcBase
        public List <UserLiteDto> GetStudyConsultantLeader(int userId)
        {
            var engine = PermissionDb.CreateEngine();

            var depId = engine.Esmart_Sys_Department_User.Where(n => n.UserId == userId).Select(n => n.DeparentId).FirstOrDefault();

            //所给用户不属于任何部门
            if (depId < 1)
            {
                return(new List <UserLiteDto>(0));
            }

            var query = from userRole in engine.Esmart_Sys_User_Roles
                        join role in engine.Esmart_Sys_Roles on userRole.RoleId equals role.RoleId
                        where userRole.UserId == userId && role.RoleName == BuiltinRoles.StudyConsultantAdmin
                        select userRole.UserId;

            //所给用户不是学习顾问
            if (!query.Any())
            {
                return(new List <UserLiteDto>(0));
            }

            //获取所有的上级部门
            var parentDepartmentIds = DepartmentDbAction.GetParentDepartments(userId).Select(n => n.DeparentId).ToList();

            var query2 = from user in engine.Esmart_Sys_Users
                         join depUser in engine.Esmart_Sys_Department_User on user.UserID equals depUser.UserId
                         join userRole in engine.Esmart_Sys_User_Roles on user.UserID equals userRole.UserId
                         join role in engine.Esmart_Sys_Roles on userRole.RoleId equals role.RoleId
                         where user.IsDelete != 1 && user.Isleave != 1
                         //本组学习顾问组长或值班组长、上级部门的学习顾问主管、学习顾问经理
                         && ((depUser.DeparentId == depId && (role.RoleName == BuiltinRoles.StudyConsultantAdmin || role.RoleName == BuiltinRoles.StudyConsultantAdmin)) ||
                             (parentDepartmentIds.Contains(depId) && role.RoleName == BuiltinRoles.StudyConsultantAdmin) ||
                             role.RoleName == BuiltinRoles.StudyConsultantAdmin)
                         select new UserLiteDto
            {
                UserID   = user.UserID,
                Ename    = user.Ename,
                TrueName = user.TrueName,
                WorkNo   = user.WorkNo
            };



            return(query2.Distinct().ToList());
        }