Ejemplo n.º 1
0
 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 }
     };
 }
Ejemplo n.º 2
0
        public void PutTopicReviewersTest400()
        {
            var usersFormModel = new UsersFormModel();

            _tester.TestControllerWithMockData()
            .Calling(c => c.PutTopicReviewers(_tester.TopicTwo.Id, usersFormModel))
            .ShouldReturn()
            .BadRequest();
        }
Ejemplo n.º 3
0
 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());
 }
Ejemplo n.º 4
0
 public IActionResult PutTopicStudents([FromRoute] int topicId, [FromBody] UsersFormModel users)
 {
     return(PutTopicUsers(topicId, Role.Student, users));
 }
Ejemplo n.º 5
0
 public IActionResult PutTopicReviewers([FromRoute] int topicId, [FromBody] UsersFormModel users)
 {
     return(PutTopicUsers(topicId, Role.Reviewer, users));
 }
Ejemplo n.º 6
0
 public IActionResult PutTopicSupervisors([FromRoute] int topicId, [FromBody] UsersFormModel users)
 {
     return(PutTopicUsers(topicId, Role.Supervisor, users));
 }
Ejemplo n.º 7
0
        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);
        }