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