public void EditProject(ProjectEditBindingModel form) { var project = _context.Projects .Include(p => p.Members) .Single(p => p.ProjectId == form.ProjectId); project.Title = form.Title; project.Description = form.Description; _userProjectService.AddMembersToProject(form.AddMembers, project); if (form.RemoveMembers != null) { // Remove UserProjects. var usernamesToRemove = form.RemoveMembers.Where(m => m.Value == true) .Select(m => m.Key) // Username. .ToList(); _userProjectService.RemoveMembersFromProject(usernamesToRemove, project); // Remove UserTickets. foreach (var username in usernamesToRemove) { var user = _context.Users.Single(u => u.UserName == username); Debug.Assert(user != null); _userTicketService.RemoveTicketsFromProject(user, project); } } _context.SaveChanges(true); }
public IHttpActionResult Edit(int id, ProjectEditBindingModel model) { var userId = RequestContext.Principal.Identity.GetUserId(); var project = this.projectsService.Edit(userId, id, model); return(CreatedAtRoute("GetProjectById", new { id = project.Id }, project)); }
public ActionResult Edit(ProjectEditBindingModel form) { if (!ModelState.IsValid) { IEnumerable <ModelError> errors = ModelState.Values.SelectMany(v => v.Errors); var viewModel = _projectService.CreateEditProjectViewModel(form.ProjectId, form, errors); return(View(viewModel)); } _projectService.EditProject(form); return(RedirectToAction(nameof(Edit), new { projectId = form.ProjectId })); }
public ProjectEditViewModel CreateEditProjectViewModel( Guid projectId, ProjectEditBindingModel binding = null, IEnumerable <ModelError> errors = null) { var project = _context.Projects .Include(p => p.Members) .ThenInclude(m => m.User) .Single(p => p.ProjectId == projectId); if (binding == null && errors == null) { return(EditProjectViewModel(project)); } // Otherwise return a view model populated with the form data and errors. var viewModel = EditProjectViewModel(project); if (binding != null) { viewModel.Title = binding.Title; viewModel.Description = binding.Description; viewModel.AddMembers = binding.AddMembers; } if (errors != null) { viewModel.Errors = new List <string>(); foreach (var error in errors) { viewModel.Errors.Add(error.ErrorMessage); } } return(viewModel); }
public ProjectViewModel Edit(string userId, int id, ProjectEditBindingModel model) { var project = this.data.ProjectRepository.GetById(id) .Include(p => p.ProjectLabels.Select(pl => pl.Label)) .Include(p => p.ProjectPriorities.Select(pp => pp.Priority)) .FirstOrDefault(); if (project == null) { throw new ArgumentException(Constants.UnexistingProjectErrorMessage); } var user = this.data.UserRepository.GetById(userId); if (project.LeadId != user.Id && !user.isAdmin) { throw new InvalidOperationException(Constants.NotProjectLeaderOrAdmin); } if (project.LeadId != model.LeadId) { if (!user.isAdmin) { throw new InvalidOperationException(Constants.NotAdmin); } var projectLead = this.data.UserRepository.GetById(model.LeadId); if (projectLead == null) { throw new ArgumentException(Constants.UnexistingUserErrorMessage); } project.LeadId = model.LeadId; } project.Name = model.Name; project.Description = model.Description; var labels = this.data.ProjectLabelsRepository.Get().Where(pl => pl.ProjectId == project.Id); foreach (var projectLabel in labels) { this.data.ProjectLabelsRepository.Delete(projectLabel); } if (model.Labels != null) { AddLabels(model.Labels, project); } if (model.Priorities != null) { var priorities = this.data.ProjectPrioritiesRepository.Get().Where(pl => pl.ProjectId == project.Id); foreach (var priority in priorities) { this.data.ProjectPrioritiesRepository.Delete(priority); } AddPriorities(model.Priorities, project); } AddTransitionScheme(model.TransitionSchemeId, project); this.data.Save(); return(GetMappedProject(project)); }