Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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));
        }
Ejemplo n.º 3
0
        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 }));
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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));
        }