Beispiel #1
0
        public virtual ActionResult Edit(int id, AddProjectViewModel viewModel)
        {
            Project project = _projectService.Get(id);

            if (ModelState.IsValid)
            {
                project.Name = viewModel.Name;

                var editedExperts   = viewModel.Users;
                var originalExperts = project.Experts.Select(x => x.UserId);

                var newExperts     = editedExperts.Except(originalExperts).ToArray();
                var removedExperts = originalExperts.Except(editedExperts).ToArray();

                if (project.FinalAssessment != null && (newExperts.Any() || removedExperts.Any()))
                {
                    ModelState.AddModelError(string.Empty, ApplicationStrings.CannotEditExpertsOnGeneratedFinal);
                }
                else
                {
                    foreach (var item in removedExperts)
                    {
                        var removedExpert     = project.Experts.FirstOrDefault(x => x.UserId == item);
                        var removedAssessment = project.Assessments.FirstOrDefault(x => x.ExpertId == item);
                        project.Experts.Remove(removedExpert);
                        project.Assessments.Remove(removedAssessment);
                    }
                    foreach (var item in newExperts)
                    {
                        project.Experts.Add(_userService.Get(item));
                        _projectService.SetExpertAssessments(project);
                    }
                    _projectService.Update(project);
                    TempData.AddFlash(ApplicationStrings.ProjectAdded);
                    return(RedirectToAction(MVC.Projects.Index()));
                }
            }

            SetupSelectLists(viewModel);
            ViewBag.Title = ViewTitles.EditProject;
            return(View(MVC.Projects.Views.Add, viewModel));
        }
Beispiel #2
0
        public virtual ActionResult Add(AddProjectViewModel viewModel)
        {
            if (ModelState.IsValid)
            {
                var domainModel = Mapper.Map <Project>(viewModel);
                domainModel.AssessmentQuestionCount = 10;
                domainModel.Experts = new List <User>();
                foreach (var item in viewModel.Users)
                {
                    domainModel.Experts.Add(_userService.Get(item));
                }
                _projectService.Add(domainModel);
                TempData.AddFlash(ApplicationStrings.ProjectAdded);
                return(RedirectToAction(MVC.Projects.Index()));
            }

            SetupSelectLists(viewModel);
            ViewBag.Title = ViewTitles.AddProject;
            return(View(viewModel));
        }