Пример #1
0
        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 }));
        }
Пример #2
0
        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");
        }