Exemplo n.º 1
0
        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"));
        }
Exemplo n.º 5
0
        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 }));
        }