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 UpdateUserInformation(UserInfo request) { if (!CornerCaseCheckHelper.Check(request.username, 50, CornerCaseCheckHelper.Username)) { return(JsonReturnHelper.ErrorReturn(104, "Invalid username")); } if (HttpContext.Session.GetString(request.username) == null) { return(JsonReturnHelper.ErrorReturn(2, "User status error.")); } if (!CornerCaseCheckHelper.Check(request.nickname, 50, CornerCaseCheckHelper.Username)) { return(JsonReturnHelper.ErrorReturn(120, "Invalid nickname.")); } if (!CornerCaseCheckHelper.Check(request.birthday, 0, CornerCaseCheckHelper.Time)) { return(JsonReturnHelper.ErrorReturn(121, "Invalid birthday.")); } if (!CornerCaseCheckHelper.Check(request.description, 100, CornerCaseCheckHelper.Description)) { return(JsonReturnHelper.ErrorReturn(122, "Invalid description.")); } var user = _meshContext.Users.First(u => u.Email == request.username); try { user.Nickname = request.nickname; user.Gender = request.gender; user.Status = request.status; user.Address = request.address; user.Description = request.description; user.Birthday = Convert.ToDateTime(request.birthday); user.Avatar = AvatarSaveHelper.PutObject(request.avatar, user.Avatar); _meshContext.Users.Update(user); _meshContext.SaveChanges(); } catch (Exception e) { _logger.LogError(e.ToString()); return(JsonReturnHelper.ErrorReturn(1, "Unexpected error.")); } return(UserReturnValue(user)); }
public JsonResult Register(UserRequest request) { if (!CornerCaseCheckHelper.Check(request.username, 50, CornerCaseCheckHelper.Username)) { return(JsonReturnHelper.ErrorReturn(104, "Invalid username")); } if (!CornerCaseCheckHelper.Check(request.password, 0, CornerCaseCheckHelper.PassWord)) { return(JsonReturnHelper.ErrorReturn(111, "Invalid password.")); } var user = _meshContext.Users.FirstOrDefault(u => u.Email == request.username); if (user != null) { return(JsonReturnHelper.ErrorReturn(101, "User already exists.")); } HashPassword hashPassword = GetHashPassword(request.password); //Create new user var newUser = new User() { Email = request.username, Nickname = request.username, PasswordDigest = hashPassword.PasswordDigest, PasswordSalt = hashPassword.PasswordSalt, Avatar = AvatarSaveHelper.PutObject(""), ColorPreference = "blue", LayoutPreference = "default", RevealedPreference = "card" }; //try to save the user try { _meshContext.Users.Add(newUser); _meshContext.SaveChanges(); } catch (Exception e) { _logger.LogError(e.ToString()); return(JsonReturnHelper.ErrorReturn(1, "Unexpected error.")); } return(UserReturnValue(newUser)); }
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 UpdateProject(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.ProjectId, 0, CornerCaseCheckHelper.Id)) { return(JsonReturnHelper.ErrorReturn(701, "Invalid projectId.")); } if (!CornerCaseCheckHelper.Check(request.ProjectName, 50, CornerCaseCheckHelper.Title)) { return(JsonReturnHelper.ErrorReturn(710, "Invalid projectName.")); } //Check if team exists var team = _meshContext.Teams.FirstOrDefault(t => t.Id == request.TeamId); if (team == null) { return(JsonReturnHelper.ErrorReturn(302, "Invalid teamId.")); } //Check if project exists var project = _meshContext.Projects.FirstOrDefault(p => p.Id == request.ProjectId); if (project == null) { return(JsonReturnHelper.ErrorReturn(707, "Invalid projectId.")); } //Check if user in the team var teamCheckResult = _permissionCheck.CheckTeamPermission(request.Username, team); if (teamCheckResult == PermissionCheckHelper.TeamOutsider) { return(JsonReturnHelper.ErrorReturn(702, "Invalid username.")); } //Check if user is the admin of the project var projectCheckResult = _permissionCheck.CheckProjectPermission(request.Username, project); if (projectCheckResult != PermissionCheckHelper.ProjectAdmin) { return(JsonReturnHelper.ErrorReturn(701, "Permission denied.")); } try { project.Publicity = request.IsPublic; project.Name = request.ProjectName; project.Icon = AvatarSaveHelper.PutObject(request.ProjectLogo, project.Icon); _meshContext.Projects.Update(project); _meshContext.SaveChanges(); } catch (Exception e) { _logger.LogError(e.ToString()); return(JsonReturnHelper.ErrorReturn(1, "Unexpected error.")); } var user = _meshContext.Users.First(u => u.Id == project.AdminId); return(ProjectResult(project, user.Nickname)); }
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)); }