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 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)); }