public JsonResult CreateTeamKB(MemoRequest request) { var checkResult = CheckUsername(request.username); if (checkResult != null) { return(checkResult); } if (!CornerCaseCheckHelper.Check(request.teamId, 0, CornerCaseCheckHelper.Id)) { return(JsonReturnHelper.ErrorReturn(301, "Invalid teamId")); } if (!CornerCaseCheckHelper.Check(request.knowledgeName, 50, CornerCaseCheckHelper.Title)) { return(JsonReturnHelper.ErrorReturn(802, "Invalid KnowledgeName.")); } if (!CornerCaseCheckHelper.Check(request.hyperlink, 100, CornerCaseCheckHelper.Description)) { return(JsonReturnHelper.ErrorReturn(803, "Invalid hyperlink.")); } var user = _meshContext.Users.First(u => u.Email == request.username); var team = _meshContext.Teams.FirstOrDefault(t => t.Id == request.teamId); if (team == null) { return(JsonReturnHelper.ErrorReturn(302, "Team does not exist.")); } var memoCollection = _meshContext.TeamMemoCollections.First(p => p.TeamId == team.Id); if (_permissionCheck.CheckTeamPermission(request.username, team) == PermissionCheckHelper.TeamOutsider) { return(JsonReturnHelper.ErrorReturn(801, "Permission denied.")); } var newMemo = new TeamMemo() { Title = request.knowledgeName, CollectionId = memoCollection.Id, Text = request.hyperlink, UserId = user.Id }; try { _meshContext.TeamMemos.Add(newMemo); _meshContext.SaveChanges(); } catch (Exception e) { _logger.LogError(e.ToString()); return(JsonReturnHelper.ErrorReturn(1, "Unexpected error.")); } return(MemoResult(new MemoInfo() { KnowledgeName = request.knowledgeName, HyperLink = request.hyperlink, CreateTime = newMemo.CreatedTime, KnowledgeId = newMemo.Id, UploaderName = request.username })); }
public JsonResult QueryTeam(string username, int teamId) { var checkResult = CheckUsername(username); if (checkResult != null) { return(checkResult); } if (!CornerCaseCheckHelper.Check(teamId, 0, CornerCaseCheckHelper.Id)) { return(JsonReturnHelper.ErrorReturn(301, "Invalid teamId")); } var user = _meshContext.Users.First(u => u.Email == username); var team = _meshContext.Teams.FirstOrDefault(t => t.Id == teamId); if (team == null) { return(JsonReturnHelper.ErrorReturn(302, "Team does not exist.")); } if (_permissionCheck.CheckTeamPermission(username, team) == PermissionCheckHelper.TeamOutsider) { return(JsonReturnHelper.ErrorReturn(305, "Permission denied.")); } //Find team members var teamCooperation = _meshContext.Cooperations .Where(c => c.TeamId == team.Id); var adminName = _meshContext.Users.First(u => u.Id == team.AdminId).Nickname; var members = _meshContext.Users .Join(teamCooperation, u => u.Id, c => c.UserId, (u, c) => new Member() { Id = u.Id, Username = u.Email, Nickname = u.Nickname, Avatar = AvatarSaveHelper.GetObject(u.Avatar) }).ToList(); //Find projects of the team var project = _meshContext.Projects .Where(p => p.TeamId == teamId); var teamProjects = _meshContext.Users .Join(project, u => u.Id, p => p.AdminId, (u, p) => new TeamProject() { ProjectId = p.Id, ProjectName = p.Name, AdminName = u.Nickname, ProjectLogo = AvatarSaveHelper.GetObject(p.Icon) }).ToList(); var userTeamCooperation = teamCooperation.First(c => c.UserId == user.Id); try { userTeamCooperation.AccessCount += 1; _meshContext.Cooperations.Update(userTeamCooperation); _meshContext.SaveChanges(); } catch (Exception e) { _logger.LogError(e.ToString()); return(JsonReturnHelper.ErrorReturn(1, "Unexpected error.")); } return(Json(new { err_code = 0, data = new { isSuccess = true, msg = "", team = new { teamId = team.Id, teamName = team.Name, createTime = team.CreatedTime, adminName = adminName, members = members, teamProjects = teamProjects } } })); }
public JsonResult QueryTeamTasks(string username, int teamId) { var checkResult = CheckUsername(username); if (checkResult != null) { return(checkResult); } if (!CornerCaseCheckHelper.Check(teamId, 0, CornerCaseCheckHelper.Id)) { return(JsonReturnHelper.ErrorReturn(301, "Invalid teamId.")); } var user = _meshContext.Users.First(u => u.Email == username); var team = _meshContext.Teams.FirstOrDefault(t => t.Id == teamId); if (team == null) { return(JsonReturnHelper.ErrorReturn(302, "Invalid teamId.")); } if (_permissionCheck.CheckTeamPermission(username, team) == PermissionCheckHelper.TeamOutsider) { return(JsonReturnHelper.ErrorReturn(701, "Permission denied.")); } var tasks = _meshContext.Develops .Where(d => d.UserId == user.Id) .Join(_meshContext.TaskBoards, d => d.ProjectId, t => t.ProjectId, (d, t) => t) .Join(_meshContext.Projects, t => t.ProjectId, p => p.Id, (t, p) => new { projectId = p.Id, projectAdminId = p.AdminId, boardId = t.Id }) .Join(_meshContext.Tasks, t => t.boardId, s => s.BoardId, (t, s) => new { t.projectAdminId, s }) .Join(_meshContext.Users, t => t.projectAdminId, u => u.Id, (t, u) => new { Founder = u.Nickname, task = t.s }) .Select(m => new TaskInfo() { Id = m.task.Id, CreatedTime = m.task.CreatedTime, Description = m.task.Description, EndTime = m.task.EndTime, Founder = m.Founder, Name = m.task.Name, isFinished = m.task.Finished, Principal = _meshContext.Users.First(u => u.Id == m.task.LeaderId).Nickname, }) .ToList(); foreach (var task in tasks) { task.SubTasks = _meshContext.Subtasks .Where(b => b.TaskId == task.Id) .Select(s => new SubTaskInfo() { Title = s.Title, TaskId = s.TaskId, CreatedTime = s.CreatedTime, Description = s.Description, Founder = task.Founder, Status = GetStatus(task.EndTime, s.Finished), Principal = _meshContext.Assigns .Where(a => a.TaskId == s.TaskId && a.Title == s.Title) .Join(_meshContext.Users, n => n.UserId, u => u.Id, (n, u) => u.Nickname) .ToList() }) .ToList(); } return(TaskListResult(tasks)); }
public JsonResult CreateProject(ProjectRequest request) { var checkResult = CheckUsername(request.Username); if (checkResult != null) { return(checkResult); } if (!CornerCaseCheckHelper.Check(request.TeamId, 0, CornerCaseCheckHelper.Id)) { return(JsonReturnHelper.ErrorReturn(301, "Invalid teamId.")); } if (!CornerCaseCheckHelper.Check(request.ProjectName, 50, CornerCaseCheckHelper.Title)) { return(JsonReturnHelper.ErrorReturn(710, "Invalid projectName.")); } if (!CornerCaseCheckHelper.Check(request.AdminName, 50, CornerCaseCheckHelper.Username)) { return(JsonReturnHelper.ErrorReturn(711, "Invalid adminName")); } var user = _meshContext.Users.First(u => u.Email == request.Username); //Check if admin exists var admin = _meshContext.Users.FirstOrDefault(a => a.Email == request.AdminName); if (admin == null) { return(JsonReturnHelper.ErrorReturn(704, "Admin does not exist.")); } //Check if team exists var team = _meshContext.Teams.FirstOrDefault(t => t.Id == request.TeamId); if (team == null) { return(JsonReturnHelper.ErrorReturn(302, "Team does not exist.")); } //Check if admin is in the team var teamCheckResult = _permissionCheck.CheckTeamPermission(request.AdminName, team); if (teamCheckResult == PermissionCheckHelper.TeamOutsider) { return(JsonReturnHelper.ErrorReturn(702, "Invalid admin.")); } //Check if user is the admin of the team teamCheckResult = _permissionCheck.CheckTeamPermission(request.Username, team); if (teamCheckResult != PermissionCheckHelper.TeamAdmin) { return(JsonReturnHelper.ErrorReturn(701, "Permission denied.")); } var newProject = new Project() { Name = request.ProjectName, AdminId = admin.Id, TeamId = team.Id, Publicity = request.IsPublic, Icon = AvatarSaveHelper.PutObject("") }; var members = new List <MemInfo> { new MemInfo() { UserId = admin.Id, Username = admin.Email, Nickname = admin.Nickname, Avatar = AvatarSaveHelper.GetObject(admin.Avatar) } }; //Start a transaction to save the project using (var transaction = _meshContext.Database.BeginTransaction()) { try { _meshContext.Projects.Add(newProject); _meshContext.SaveChanges(); _meshContext.Develops.Add(new Develop() { ProjectId = newProject.Id, UserId = admin.Id }); _meshContext.BulletinBoards.Add(new BulletinBoard() { ProjectId = newProject.Id }); _meshContext.TaskBoards.Add(new TaskBoard() { ProjectId = newProject.Id }); _meshContext.ProjectMemoCollections.Add(new ProjectMemoCollection() { ProjectId = newProject.Id }); _meshContext.SaveChanges(); transaction.Commit(); } catch (Exception e) { _logger.LogError(e.ToString()); return(JsonReturnHelper.ErrorReturn(1, "Unexpected error.")); } } return(ProjectResult(newProject, admin.Nickname)); }