public ActionResult EditUserProject(int projectId, UserProjectModel projectModel) { UserProjectHelpers helper = new UserProjectHelpers(); if (ModelState.IsValid) { string[] empt = { }; projectModel.SelectedUsers = projectModel.SelectedUsers ?? empt; foreach (var user in db.Users) { if (projectModel.SelectedUsers.Contains(user.Id)) { helper.AddUserToProject(projectId, user.Id); } //If not selected remove else { helper.RemoveUserFromProject(projectId, user.Id); } } // Hema if (User.IsInRole("ProjectManager")) { var user = db.Users.Find(User.Identity.GetUserId()); helper.AddUserToProject(projectId, user.Id); } } return(RedirectToAction("ProjectList")); }
public async Task <IActionResult> NewProject() { //Get all Users from DB and format into List of UserListingModels var allUsers = _userServices.GetAll(); var userModels = await _userServices.FormatUsersAsync(allUsers); //Create UserIndexModel from List var userIndex = new UserIndexModel { Users = userModels }; //Create Common Model for Project and Users var projectModel = new ProjectModel(); var model = new UserProjectModel { UserModel = userIndex, ProjectModel = projectModel }; ViewData["cardHeader"] = "Create New Project"; ViewData["buttonLabel"] = "Create Project"; ViewData["formTitle"] = "newProjectForm"; ViewData["aspAction"] = "NewProject"; return(View(model)); }
public async Task <IActionResult> EditProject(int projectId) { var project = _projectServices.GetById(projectId); if ((_userManager.GetUserId(User) != project.Creator.Id) && !(User.IsInRole("Admin"))) { return(RedirectToAction("Index")); } var listingResult = await _projectServices.FormatProjectAsync(project); //Add IDs of all Users in project to list List <string> userIds = new List <string>(); foreach (var user in listingResult.ProjectUsers.Users) { userIds.Add(user.Id); } var projectModel = new ProjectModel { Id = project.Id, Title = project.Title, Description = project.Description, UserIds = userIds }; var userModel = new UserIndexModel { Users = await _userServices.FormatUsersAsync(_userServices.GetAll()) }; var model = new UserProjectModel { UserModel = userModel, ProjectModel = projectModel }; ViewData["cardHeader"] = "Edit Project"; ViewData["buttonLabel"] = "Save Changes"; ViewData["formTitle"] = "editProjectForm"; ViewData["aspAction"] = "EditProject"; return(View(model)); }
public async Task <IActionResult> NewProject(UserProjectModel model, string[] userIds) { if (!ModelState.IsValid) { return(View(model)); } var newProject = new Project { Title = model.ProjectModel.Title, Description = model.ProjectModel.Description, CreateDate = DateTime.Now, Creator = await _userManager.GetUserAsync(User), LastUpdatedBy = await _userManager.GetUserAsync(User), LastUpdateDate = DateTime.Now }; List <ApplicationUser> selectedUsers = new List <ApplicationUser>(); foreach (var id in userIds) { var user = await _userManager.FindByIdAsync(id); selectedUsers.Add(user); } for (int i = 0; i < selectedUsers.Count; i++) { var projUser = new ProjectUser { ApplicationUser = selectedUsers[i], Project = newProject }; newProject.ProjectUsers.Add(projUser); } _context.Projects.Add(newProject); _context.SaveChanges(); return(RedirectToAction("Index")); }
public ActionResult EditUserProject(int projectId) { var project = db.Projects.Find(projectId); UserProjectModel projectModel = new UserProjectModel(); // Creating an object of helper class UserProjectHelpers helper = new UserProjectHelpers(); // Calling Helper Method var selected = helper.ListOfUsers(projectId).Select(l => l.Id); // Only Developers will be displayed for the Project Manager. var userRole = roleHelpers.UsersInRole("Developer"); if (User.IsInRole("Admin")) { projectModel.ApplicationUser = new MultiSelectList(db.Users, "Id", "FirstName", selected); } if (User.IsInRole("ProjectManager")) { projectModel.ApplicationUser = new MultiSelectList(userRole, "Id", "FirstName", selected); } projectModel.Project = project; return(View(projectModel)); }
public async Task <IActionResult> EditProject(UserProjectModel model, string[] userIds) { if (!ModelState.IsValid) { return(View(model)); } //Get Project from DB by ID var project = _projectServices.GetById(model.ProjectModel.Id); //Ensure that current User is either the creator of the Project or an Admin if ((_userManager.GetUserId(User) != project.Creator.Id) && !(User.IsInRole("Admin"))) { return(RedirectToAction("Index")); } //Change appropriate Fields project.Title = model.ProjectModel.Title; project.Description = model.ProjectModel.Description; project.LastUpdatedBy = await _userManager.GetUserAsync(User); project.LastUpdateDate = DateTime.Now; //Get List of ProjectUsers and their IDs that were already associated with the project var projectUsers = _context.ProjectUsers.Where(p => p.ProjectId == project.Id).ToList(); var projUserIds = new List <string>(); foreach (var user in projectUsers) { projUserIds.Add(user.UserId); //Remove existing User from ProjectUsers if they were not selected if (!userIds.Contains(user.UserId)) { _context.Remove(user); } } //Add selected Users to Project List <ApplicationUser> selectedUsers = new List <ApplicationUser>(); foreach (var id in userIds) { var user = await _userManager.FindByIdAsync(id); selectedUsers.Add(user); } for (int i = 0; i < selectedUsers.Count; i++) { var projUser = new ProjectUser { UserId = selectedUsers[i].Id, ApplicationUser = selectedUsers[i], Project = project, ProjectId = project.Id }; //If project didn't already have this User, add them if (!projUserIds.Contains(projUser.UserId)) { project.ProjectUsers.Add(projUser); } } _context.SaveChanges(); return(RedirectToAction("ProjectDetails", new { projectId = project.Id })); }