public ActionResult Edit(DataManagementPlanViewModel vm) { var project = _projectRepository.GetByDataManagementPlanId(vm.Id); if (project == null) { return(View("DmpNotFound")); } if (!this.CurrentUser.IsPrincipalInvestigatorFor(project)) { return(View("NoProjectAccessRight")); } if (vm.Step < 1 || vm.Step > MaxStep) { return(View("PageNotFound")); } if (!ModelState.IsValid) { return(View(string.Format("Step{0}", vm.Step), vm)); } var currentStep = vm.Step; vm.Step = GetStep(vm.Step); var projectModel = new ProjectViewModel { DataManagementPlan = vm }; // Copy project details from project entity projectModel.MapFrom(project, false); // delete users when in the appropriate step project.MapFrom(projectModel, currentStep == UserManagementStep); var urdmsUsers = project.Parties.Where(o => !string.IsNullOrWhiteSpace(o.Party.UserId) && o.Party.Id == 0).Select(o => o.Party); // only update new parties this.UpdateUrdmsPartyDetails(urdmsUsers.ToList()); _projectRepository.Save(project); //Dmp form completion timer for steps 1-4. Only on next button submit. if (currentStep < vm.Step) { _timerRepository.Save(new FormTimer { UserId = CurrentUser.CurtinId, EndTime = DateTime.Now, Id = vm.Id, StartTime = vm.Start, Step = vm.Step - 1 }); } return(RedirectToAction("Edit", new { id = vm.Id, step = vm.Step })); }
public void Save_an_new_record_for_dmpId_and_step() { var timerEvent = Builder <FormTimer> .CreateNew().Build(); _repository.Save(timerEvent); var timerEventSaved = _repository.Get(timerEvent.Id, timerEvent.Step); Assert.That(timerEventSaved, Is.Not.Null, "Timer event not saved"); Assert.That(timerEventSaved.UserId, Is.EqualTo(timerEvent.UserId), "Saved user is not the same"); Assert.That(timerEventSaved.StartTime, Is.EqualTo(timerEvent.StartTime), "Saved start time is not the same"); Assert.That(timerEventSaved.EndTime, Is.EqualTo(timerEvent.EndTime), "Saved end time is not the same"); }