public JsonResult ProjectResult(Project project, string name) { var develops = _meshContext.Develops .Where(d => d.ProjectId == project.Id) .Join(_meshContext.Users, d => d.UserId, u => u.Id, (d, u) => new MemInfo() { UserId = u.Id, Username = u.Email, Nickname = u.Nickname, Avatar = AvatarSaveHelper.GetObject(u.Avatar) }) .ToList(); return(Json(new { err_code = 0, data = new { isSuccess = true, msg = "", project = new { projectId = project.Id, projectName = project.Name, adminName = name, isPublic = project.Publicity, projectLogo = AvatarSaveHelper.GetObject(project.Icon), members = develops } } })); }
public JsonResult UserReturnValue(User user) { //Find teams of the user var cooperation = _meshContext.Cooperations .Where(b => b.UserId == user.Id); var teams = _meshContext.Teams .Join(cooperation, t => t.Id, c => c.TeamId, (t, c) => new TeamInfo { TeamId = t.Id, TeamName = t.Name, AdminId = t.AdminId, CreateTIme = t.CreatedTime.ToString(), AdminName = _meshContext.Users.First(u => u.Id == t.AdminId).Nickname }).ToList(); var preferenceTeamId = -1; if (cooperation.FirstOrDefault() != null) { var preferenceTeamCount = cooperation.DefaultIfEmpty().Max(a => a.AccessCount); preferenceTeamId = cooperation.First(c => c.AccessCount == preferenceTeamCount).TeamId; } return(Json(new { err_code = 0, data = new { isSuccess = true, msg = "", username = user.Email, nickname = user.Nickname, gender = user.Gender, status = user.Status, description = user.Description, birthday = user.Birthday.ToLongDateString(), avatar = AvatarSaveHelper.GetObject(user.Avatar), role = "user", preference = new { preferenceColor = user.ColorPreference, preferenceLayout = user.LayoutPreference, preferenceShowMode = user.RevealedPreference, preferenceTeam = preferenceTeamId }, teams = teams } })); }
public JsonResult QueryUser(string username, string keyword) { if (!CornerCaseCheckHelper.Check(username, 50, CornerCaseCheckHelper.Username)) { return(JsonReturnHelper.ErrorReturn(104, "Invalid username.")); } if (!CornerCaseCheckHelper.Check(keyword, 50, CornerCaseCheckHelper.Username)) { return(JsonReturnHelper.ErrorReturn(457, "Invalid keyword.")); } if (HttpContext.Session.IsAvailable && HttpContext.Session.GetString(username) == null) { return(JsonReturnHelper.ErrorReturn(2, "User status error.")); } var userAccordingToUsername = _meshContext.Users .Where(u => u.Email.Contains(keyword)); var userAccordingToNickname = _meshContext.Users .Where(u => u.Nickname.Contains(keyword)); var userAccordingToDescription = _meshContext.Users .Where(u => u.Description.Contains(keyword)); var users = userAccordingToUsername .Union(userAccordingToNickname) .Union(userAccordingToDescription) .Select(u => new { username = u.Email, avatar = AvatarSaveHelper.GetObject(u.Avatar), nickname = u.Nickname, gender = u.Gender, status = u.Status, address = u.Address, description = u.Description, birthday = u.Birthday }) .ToList(); return(Json(new { err_code = 0, data = new { users = users } })); }
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 QueryUserInfo(string username, string keyword) { var checkResult = CheckUsername(username); if (checkResult != null) { return(checkResult); } if (!CornerCaseCheckHelper.Check(keyword, 50, CornerCaseCheckHelper.Username)) { return(JsonReturnHelper.ErrorReturn(130, "Invalid keyword.")); } var usersAccordingToUsername = _meshContext.Users .Where(u => u.Email.Contains(keyword)); var usersAccordingToNickname = _meshContext.Users .Where(u => u.Nickname.Contains(keyword)); var usersAccordingToDescription = _meshContext.Users .Where(u => u.Description.Contains(keyword)); var usersUnion = usersAccordingToUsername .Union(usersAccordingToNickname) .Union(usersAccordingToDescription) .ToList(); var users = new List <UserInfo>(); foreach (var u in usersUnion) { var cooperation = _meshContext.Cooperations .Where(c => c.UserId == u.Id) .OrderByDescending(c => c.AccessCount) .FirstOrDefault(); var teams = _meshContext.Cooperations .Where(c => c.UserId == u.Id) .Join(_meshContext.Teams, c => c.TeamId, t => t.Id, (c, t) => new TeamInfo() { TeamId = t.Id, TeamName = t.Name, AdminId = t.AdminId, AdminName = _meshContext.Users.First(s => s.Id == t.AdminId).Nickname, CreateTIme = t.CreatedTime.ToString() }) .ToList(); users.Add(new UserInfo() { username = u.Email, address = u.Address, avatar = AvatarSaveHelper.GetObject(u.Avatar), birthday = u.Birthday.ToString(), description = u.Description, preference = new UserPreference() { preferenceColor = u.ColorPreference, preferenceLayout = u.LayoutPreference, preferenceShowMode = u.RevealedPreference, preferenceTeam = cooperation?.TeamId ?? -1 }, teams = teams }); } return(Json(new { err_code = 0, data = new { isSuccess = true, msg = "", users = users } })); }
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)); }