public async Task RequestAdminAsync(string userId, string teamId) { var existingAdmin = await _repo.TeamAdmins.FirstOrDefaultAsync(m => m.UserId == userId && m.TeamId == teamId); if (existingAdmin == null) { existingAdmin = new TeamAdmin() { UserId = userId, TeamId = teamId, AdminStatus = AdminStatus.Pending }; await _repo.TeamAdmins.AddOrUpdateAndSaveAsync(existingAdmin); } }
public ActionResult AddTeamAdmins(string projectSeriesGuid, string userNames) { return(ActionUtils.Json(() => { //判断操作者权限 var projectSeriesLogicModel = new ProjectSeriesLogicModel(CurrentUserName, projectSeriesGuid); CommUtils.Assert(IsAdmin(projectSeriesLogicModel.Instance, CurrentUserName), "当前用户[{0}]不是项目[{1}]的创建者/负责人", Platform.UserProfile.GetDisplayRealNameAndUserName(CurrentUserName), projectSeriesLogicModel.Instance.Name); //判断传入userName是否有效 var userNameList = CommUtils.Split(userNames); foreach (var userName in userNameList) { CommUtils.Assert(m_dbAdapter.Authority.IsUserExist(userName), "用户[{0}]不存在", userName); CommUtils.Assert(!IsAdmin(projectSeriesLogicModel.Instance, userName), "用户[{0}]是产品创建者/负责人,无法增加至项目管理员", userName); } //判断项目管理员是否已经添加 var project = projectSeriesLogicModel.CurrentProject.Instance; var teamAdmins = m_dbAdapter.TeamAdmin.GetByProjectId(project.ProjectId); foreach (var teamAdmin in teamAdmins) { CommUtils.Assert(!userNameList.Contains(teamAdmin.UserName), "项目管理员中已经存在用户[{0}]", teamAdmin.UserName); } var projectActivityLogicModel = projectSeriesLogicModel.CurrentProject.Activity; //添加项目管理员 var teamMemberList = m_dbAdapter.TeamMember.GetByProjectId(project.ProjectId); var teamMemberDic = teamMemberList.ToDictionary(x => x.UserName); var teamMembeUserNames = teamMemberList.Select(x => x.UserName).ToList(); foreach (var userName in userNameList) { var teamAdmin = new TeamAdmin { UserName = userName, ProjectId = project.ProjectId }; m_dbAdapter.TeamAdmin.New(teamAdmin); projectActivityLogicModel.Add(project.ProjectId, ActivityObjectType.TeamAdmin, teamAdmin.Guid, "增加项目管理员:" + Platform.UserProfile.Get(teamAdmin.UserName).RealName); if (teamMembeUserNames.Contains(userName)) { m_dbAdapter.TeamMember.Remove(teamMemberDic[userName]); } } var teamMembers = new List <TeamMember>(); teamAdmins = m_dbAdapter.TeamAdmin.GetByProjectId(project.ProjectId); var newTeamAdmins = teamAdmins.Where(x => userNameList.Contains(x.UserName)).ToList(); var adminUserNames = new List <string>(); var permissionLogicModel = new PermissionLogicModel(CurrentUserName, projectSeriesLogicModel.Instance); permissionLogicModel.AddUserPermissionByProjectSeries(teamMembers, newTeamAdmins, adminUserNames); return ActionUtils.Success(1); })); }