public TopicsControllerUsersTest() { _tester = new ControllerTester <TopicsController>(); Student1 = new User { Id = 7, UId = "test-auth:student7", Email = "*****@*****.**", Role = "Student" }; Student2 = new User { Id = 8, UId = "test-auth:student8", Email = "*****@*****.**", Role = "Student" }; Supervisor1 = new User { Id = 9, UId = "test-auth:supervisor9", Email = "*****@*****.**", Role = "Supervisor" }; Supervisor2 = new User { Id = 10, UId = "test-auth:supervisor10", Email = "*****@*****.**", Role = "Supervisor" }; Reviewer1 = new User { Id = 11, UId = "test-auth:reviewer11", Email = "*****@*****.**", Role = "Reviewer" }; Reviewer2 = new User { Id = 12, UId = "test-auth:reviewer12", Email = "*****@*****.**", Role = "Reviewer" }; UsersFormModelForStudent = new UsersFormModel { Users = new[] { Student1.Email, Student2.Email } }; UsersFormModelForSupervisor = new UsersFormModel { Users = new[] { Supervisor1.Email, Supervisor2.Email } }; UsersFormModelForReviewer = new UsersFormModel { Users = new[] { Reviewer1.Email, Reviewer2.Email } }; }
public void PutTopicReviewersTest400() { var usersFormModel = new UsersFormModel(); _tester.TestControllerWithMockData() .Calling(c => c.PutTopicReviewers(_tester.TopicTwo.Id, usersFormModel)) .ShouldReturn() .BadRequest(); }
private IActionResult PutTopicUsers(int topicId, string role, UsersFormModel users) { if (!_topicPermissions.IsAssociatedTo(User.Identity.GetUserId(), topicId)) { return(Forbidden()); } if (!ModelState.IsValid) { return(BadRequest(ModelState)); } else if (_topicManager.ChangeAssociatedUsersByRole(User.Identity.GetUserId(), topicId, role, users.Users)) { return(Ok()); } return(BadRequest()); }
public IActionResult PutTopicStudents([FromRoute] int topicId, [FromBody] UsersFormModel users) { return(PutTopicUsers(topicId, Role.Student, users)); }
public IActionResult PutTopicReviewers([FromRoute] int topicId, [FromBody] UsersFormModel users) { return(PutTopicUsers(topicId, Role.Reviewer, users)); }
public IActionResult PutTopicSupervisors([FromRoute] int topicId, [FromBody] UsersFormModel users) { return(PutTopicUsers(topicId, Role.Supervisor, users)); }
public bool ChangeAssociatedUsersByRole(string updaterIdentity, int topicId, string role, UsersFormModel users) { Topic topic; try { topic = DbContext.Topics.Include(t => t.TopicUsers).ThenInclude(tu => tu.User).Single(t => t.Id == topicId); } catch (InvalidOperationException) { return(false); } var existingUsers = topic.TopicUsers.Where(tu => tu.Role == role).ToList(); var newUsers = new List <TopicUser>(); var removedUsers = new List <TopicUser>(); if (users.Users != null) { // new user? foreach (var email in users.Users) { if (!existingUsers.Any(tu => (tu.User.Email == email && tu.Role == role))) { newUsers.Add(new TopicUser() { UserId = GetUserByEmail(email).Id, Role = role }); } } // removed user? removedUsers.AddRange(existingUsers.Where(existingUser => !users.Users.Contains(existingUser.User.Email))); } topic.TopicUsers.AddRange(newUsers); topic.TopicUsers.RemoveAll(tu => removedUsers.Contains(tu)); // Updated // TODO add user topic.UpdatedAt = DateTime.Now; DbContext.Update(topic); DbContext.SaveChanges(); try { // Notifications new NotificationProcessor(DbContext, topic, updaterIdentity).OnUsersChanged(newUsers, removedUsers, role); } catch (NullReferenceException) { return(false); } return(true); }