示例#1
0
        public async Task <IActionResult> AssignUsers(ManageProjectUsersViewModel model)
        {
            if (!User.IsInRole("Demo"))
            {
                if (ModelState.IsValid)
                {
                    if (model.SelectedUsers != null)
                    {
                        var currentMembers = await _context.Projects.Include(p => p.ProjectUsers).FirstOrDefaultAsync(p => p.Id == model.Project.Id);

                        List <string> memberIds = currentMembers.ProjectUsers.Select(u => u.UserId).ToList();
                        memberIds.ForEach(i => _btProjectService.AddUserToProject(i, model.Project.Id));
                        //foreach (string id in memberIds)
                        //{
                        //    await _btProjectService.RemoveUserFromProject(id, model.Project.Id);
                        //}
                        foreach (string id in model.SelectedUsers)
                        {
                            await _btProjectService.AddUserToProject(id, model.Project.Id);
                        }
                        return(RedirectToAction("Details", "Projects", new { id = model.Project.Id }));
                    }
                    else
                    {
                    }
                    return(View(model));
                }
            }
            return(View(model));
        }
 public async Task <IActionResult> RemoveUserFromProject(ManageProjectUsersViewModel model)
 {
     foreach (var userId in model.SelectedUsers)
     {
         if (!await _projectService.IsUserOnProject(userId, model.Project.Id))
         {
             await _projectService.RemoveUserFromProject(userId, model.Project.Id);
         }
     }
     return(RedirectToAction("RemoveUserFromProject"));
 }
示例#3
0
        public async Task <IActionResult> AssignUsers(int id)   //By default, this is a get method//
        {
            var model   = new ManageProjectUsersViewModel();    //Newing up an instance of ManageProjectUsersViewModel
            var project = _context.Projects.Find(id);

            model.Project = project;
            List <PSUser> users = await _context.Users.ToListAsync();

            List <PSUser> members = (List <PSUser>) await _PSProjectService.UsersOnProject(id); //

            model.Users = new MultiSelectList(users, "Id", "FullName", members);
            return(View(model));
        }
        public async Task <IActionResult> AssignProjectToUser(ManageProjectUsersViewModel item, string userId)
        {
            if (ModelState.IsValid)
            {
                if (item.SelectedProject != 0)
                {
                    var user    = _context.Users.Find(userId);
                    var project = _context.Projects.Find(item.SelectedProject);
                    if (await _projectService.IsUserOnProject(user.Id, project.Id))
                    {
                        // Handle user already assigned instead of error
                        TempData["UserAlreadyOn"] = $"{user.FullName} is already assigned to {project.Name}";
                        return(RedirectToAction("ManageProjectUsers"));
                    }
                    else
                    {
                        await _projectService.AddUserToProject(user.Id, project.Id);

                        return(RedirectToAction("ManageProjectUsers"));
                    }
                }

                // FIGURE OUT WHY MODEL IS ALWAYS NULL
                //if (model.SelectedUsers != null)
                //{
                //  var currentMembers = await _context.Projects
                //    .Include(p => p.ProjectUsers)
                //    .FirstOrDefaultAsync(p => p.Id == model.Project.Id);
                //  List<string> memberIds = currentMembers.ProjectUsers.Select(u => u.UserId).ToList();
                //  //model.SelectedUsers.ToList().ForEach(i => _projectService.RemoveUserFromProject(i, model.Project.Id));

                //  foreach (string id in memberIds)
                //  {
                //    await _projectService.RemoveUserFromProject(id, model.Project.Id);
                //  }

                //  foreach (string id in model.SelectedUsers)
                //  {
                //    await _projectService.AddUserToProject(id, model.Project.Id);
                //  }

                //  return RedirectToAction("Index", "Projects");
                //}
                //else
                //{
                //  // send error
                //}
            }
            return(RedirectToAction("Index"));
        }
示例#5
0
        public async Task <IActionResult> RemoveUsers(int id)
        {
            var model = new ManageProjectUsersViewModel();
            //var project = _context.Projects.Find(id);
            var project = _context.Projects
                          .Include(p => p.ProjectUsers)
                          .ThenInclude(p => p.User)
                          .FirstAsync(p => p.Id == id);

            model.Project = await project;
            List <BTUser> members = (List <BTUser>) await _btProjectService.UsersOnProject(id);

            model.Users = new MultiSelectList(members, "Id", "FullName");
            return(View(model));
        }
        public async Task <IActionResult> AssignUsers(int id)
        {
            // By default, this is a get method//
            ManageProjectUsersViewModel model = new ManageProjectUsersViewModel( );   // Newing up an instance of ManageProjectUsersViewModel
            Project project = await this.context.Projects.FindAsync(id).ConfigureAwait(false);

            model.Project = project;
            List <HeimdallUser> users = await this.context.Users.ToListAsync( ).ConfigureAwait(false);

            List <HeimdallUser> members = (List <HeimdallUser>) await this.projectService.UsersOnProjectAsync(id).ConfigureAwait(false);

            model.Users = new MultiSelectList(users, "Id", "FullName", members);

            return(this.View(model));
        }
        //RemoveUserFromProject - GET
        public async Task <IActionResult> RemoveUserFromProject(int?id)
        {
            if (id == null)
            {
                return(RedirectToAction("Index", "Projects"));
            }
            var model = new ManageProjectUsersViewModel();

            model.Project = await _context.Projects.FindAsync((int)id);

            var users = await _context.Users.Where(u => _projectService.IsUserOnProject(u.Id, (int)id).Result).ToListAsync();

            model.Users = new MultiSelectList(users, "Id", "FullName");

            return(View(model));
        }
        // GET: ManageProjectUsers/projectId
        public async Task <IActionResult> ManageProjectUsers()
        {
            //// Display a list of users
            //var model = new ManageProjectUsersViewModel();
            //// Set vm's Project property to the currently selected project
            //model.Project = _context.Projects.Find(id);
            //// Get a list of users for the selectList
            //List<BTUser> users = await _context.Users.ToListAsync();
            //// Get a list of current members for the selectList
            //List<BTUser> members = (List<BTUser>)await _projectService.UsersOnProject(id);
            //// Set our Users property on the vm
            //model.Users = new MultiSelectList(users, "Id", "FullName", members);
            //// send the vm to the view
            ///

            TempData["InUserAssignmentsPage"] = true;

            // New Version - Display a list of users
            // For each user display a list of projects
            // Assign project to user button

            // Have a viewmodel for each user project assignment
            var model = new List <ManageProjectUsersViewModel>();
            // Get all users
            var users = await _context.Users.ToListAsync();

            foreach (var user in users)
            {
                var vm = new ManageProjectUsersViewModel();
                if (!await _rolesService.IsUserInRole(user, "Demo"))
                {
                    vm.User     = user;
                    vm.UserRole = await _rolesService.ListUserRoles(user);

                    vm.CurrentProjects = await _projectService.ListUserProjects(user.Id);

                    var projects = await _context.Projects.ToListAsync();

                    vm.Projects = new SelectList(projects, "Id", "Name");
                    model.Add(vm);
                }
            }



            return(View(model));
        }
        public async Task <IActionResult> AssignUsers(ManageProjectUsersViewModel model)
        {
            if (!this.User.IsInRole("Demo"))
            {
                if (this.ModelState.IsValid)
                {
                    if (model.SelectedUsers != null)
                    {
                        Project currentMembers = await this.context.Projects.Include(p => p.ProjectUsers)
                                                 .FirstOrDefaultAsync(p => p.Id == model.Project.Id)
                                                 .ConfigureAwait(false);

                        List <string> memberIds = currentMembers.ProjectUsers.Select(u => u.UserId).ToList( );

                        foreach (string id in memberIds)
                        {
                            await this.projectService.RemoveUserFromProjectAsync(id, model.Project.Id).ConfigureAwait(false);
                        }

                        foreach (string id in model.SelectedUsers)
                        {
                            await this.projectService.AddUserToProjectAsync(id, model.Project.Id).ConfigureAwait(false);
                        }

                        return(this.RedirectToAction("Details", "Projects", new { id = model.Project.Id }));

                        // return RedirectToAction(name of(BlogPosts), new { id = post.BlogId }); Default statement that returns to all projects: return RedirectToAction("Index", "Projects");
                    }
                    else
                    {
                        Debug.WriteLine("****ERROR****");

                        // Send an error message back
                    }
                }

                return(this.View(model));
            }
            else
            {
                this.TempData["DemoLockout"] =
                    "Your changes have not been saved. To make changes to the database, please log in as a full user.";

                return(this.RedirectToAction("CurrentUserProjects", "Projects"));
            }
        }
示例#10
0
 public async Task <IActionResult> RemoveUsers(ManageProjectUsersViewModel model)
 {
     if (!User.IsInRole("Demo"))
     {
         if (ModelState.IsValid)
         {
             if (model.SelectedUsers != null)
             {
                 foreach (string id in model.SelectedUsers)
                 {
                     await _btProjectService.RemoveUserFromProject(id, model.Project.Id);
                 }
                 return(RedirectToAction("Details", "Projects", new { id = model.Project.Id }));
             }
             else
             {
                 return(View(model));
             }
         }
     }
     return(RedirectToAction("Details", "Projects", new { id = model.Project.Id }));
 }