public async Task <IActionResult> Create([Bind("UserProjectInfoId,UserId,ProjectId,PrivilegeId")] UserProjectInfo userProjectInfo)
        {
            userProjectInfo.UserId = GetUserId(userProjectInfo.UserId, userProjectInfo.ProjectId);
            if (string.IsNullOrEmpty(userProjectInfo.UserId))
            {
                ModelState.AddModelError("", "Error: You must enter a unique and valid user email!");
            }
            else if (!IsUserAdmin(userProjectInfo.ProjectId))
            {
                ModelState.AddModelError("", "You have insufficient privileges to create this item!");
            }
            else if (ModelState.IsValid)
            {
                _context.Add(userProjectInfo);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(ProjectsController.Details), "Projects", new { id = userProjectInfo.ProjectId }));
            }

            var project = _context.Project.FirstOrDefault(p => p.ProjectId == userProjectInfo.ProjectId);

            userProjectInfo.Project = project;
            ViewData["ProjectName"] = project.ProjectName;
            ViewData["PrivilegeId"] = GetPrivilegeSelectList();

            return(View(userProjectInfo));
        }
Esempio n. 2
0
        public async Task <IActionResult> Create([Bind("ProjectId,ProjectName,ProjectDescription")] Project project)
        {
            if (ModelState.IsValid)
            {
                // Add the project
                _context.Add(project);

                await _context.SaveChangesAsync();

                // Add the user to the project with the master privilege level
                var userProjectInfo = new UserProjectInfo()
                {
                    ProjectId   = project.ProjectId,
                    UserId      = userId,
                    PrivilegeId = _context.Privilege.Where(p => p.PrivilegeLevel == 4)
                                  .FirstOrDefault()?.PrivilegeId ?? 0
                };

                _context.Add(userProjectInfo);

                await _context.SaveChangesAsync();


                return(RedirectToAction(nameof(Index)));
            }

            return(View(project));
        }
        // GET: UserProjectInfos/Create
        public IActionResult Create(int id)
        {
            // To Do: Need to add privilege and user validation
            var project = _context.Project.FirstOrDefault(p => p.ProjectId == id);

            ViewData["ProjectName"] = project.ProjectName;
            ViewData["PrivilegeId"] = GetPrivilegeSelectList();

            var userProjectInfo = new UserProjectInfo()
            {
                ProjectId = id
            };

            return(View(userProjectInfo));
        }
        public async Task <IActionResult> Edit([Bind("UserProjectInfoId,UserId,ProjectId,PrivilegeId")] UserProjectInfo userProjectInfo)
        {
            var privilegeName = _context.Privilege.FirstOrDefault(p => p.PrivilegeId == userProjectInfo.PrivilegeId).PrivilegeName;

            if (!IsUserAdmin(userProjectInfo.ProjectId))
            {
                ModelState.AddModelError("", "You have insufficient privileges to edit this item!");
            }
            else if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(userProjectInfo);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!UserProjectInfoExists(userProjectInfo.UserProjectInfoId))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }

                return(RedirectToAction(nameof(ProjectsController.Details), "Projects", new { id = userProjectInfo.ProjectId }));
            }
            else if (privilegeName == MASTER)
            {
                ModelState.AddModelError("", "You cannot edit a master privilege");
            }

            var project = _context.Project.FirstOrDefault(p => p.ProjectId == userProjectInfo.ProjectId);

            userProjectInfo.User = await _context.Users.FindAsync(userProjectInfo.UserId);

            userProjectInfo.UserId  = userProjectInfo.User.Id;
            ViewData["ProjectName"] = project.ProjectName;
            ViewData["PrivilegeId"] = GetPrivilegeSelectList();

            return(View(userProjectInfo));
        }