public ActionResult AddUrdmsUser(DataManagementPlanViewModel vm) { if (!string.IsNullOrWhiteSpace(vm.FindUserId)) { var urdmsUser = GetUser(vm.FindUserId.Trim()); if (urdmsUser != null) { var project = _projectRepository.GetByDataManagementPlanId(vm.Id); vm.AddUrdmsUser(urdmsUser, AccessRole.Members); var entityUser = project.Parties .Where(user => string.Compare(user.Party.UserId, urdmsUser.CurtinId, true) == 0) .Take(1) .FirstOrDefault(); var modelUser = vm.UrdmsUsers .Where(user => string.Compare(user.UserId, urdmsUser.CurtinId, true) == 0) .Take(1) .FirstOrDefault(); if (entityUser != null && modelUser != null) { modelUser.Id = entityUser.Id; modelUser.PartyId = entityUser.Party.Id; } } vm.FindUserId = null; } var viewName = string.Format("Step{0}", vm.Step); return(View(viewName, vm)); }
public ActionResult AddNonUrdmsUser(DataManagementPlanViewModel vm) { if (!string.IsNullOrWhiteSpace(vm.NonUrdmsNewUserName)) { var project = _projectRepository.GetByDataManagementPlanId(vm.Id); vm.AddNonUrdmsUser(vm.NonUrdmsNewUserName.Trim(), AccessRole.Visitors); var entityUser = project.Parties .Where(user => string.Compare(user.Party.FullName.Trim(), vm.NonUrdmsNewUserName.Trim(), true) == 0) .Take(1) .FirstOrDefault(); var modelUser = vm.NonUrdmsUsers .Where(user => string.Compare(user.FullName.Trim(), vm.NonUrdmsNewUserName.Trim(), true) == 0) .Take(1) .FirstOrDefault(); if (entityUser != null && modelUser != null) { modelUser.Id = entityUser.Party.Id; } vm.NonUrdmsNewUserName = null; } var viewName = string.Format("Step{0}", vm.Step); return(View(viewName, vm)); }
public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) { var form = controllerContext.HttpContext.Request.Form; var model = new DataManagementPlanViewModel(); model.DeserializeUrdmsUsers<AccessRole>(form); model.DeserializeNonUrdmsUsers<AccessRole>(form); bindingContext.ModelMetadata.Model = model; return base.BindModel(controllerContext, bindingContext); }
public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) { var form = controllerContext.HttpContext.Request.Form; var model = new DataManagementPlanViewModel(); model.DeserializeUrdmsUsers <AccessRole>(form); model.DeserializeNonUrdmsUsers <AccessRole>(form); bindingContext.ModelMetadata.Model = model; return(base.BindModel(controllerContext, bindingContext)); }
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 ActionResult Confirm(DataManagementPlanViewModel vm) { var project = _projectRepository.GetByDataManagementPlanId(vm.Id); if (project == null) { return(View("ProjectNotFound")); } if (!this.CurrentUser.IsPrincipalInvestigatorFor(project)) { return(View("NoProjectAccessRight")); } if (project.DataManagementPlan == null) { return(View("DmpNotFound")); } if (!ModelState.IsValid) { return(View(string.Format("Step{0}", vm.Step), vm)); } vm.Status = project.ProvisioningStatus; var projectModel = new ProjectViewModel().MapFrom(project); projectModel.DataManagementPlan = vm; project.MapFrom(projectModel); _projectRepository.Save(project); //Dmp form completion timer for step 5. _timerRepository.Save(new FormTimer { UserId = CurrentUser.CurtinId, EndTime = DateTime.Now, Id = vm.Id, StartTime = vm.Start, Step = vm.Step }); switch (project.ProvisioningStatus) { case ProvisioningStatus.NotStarted: return(RedirectToAction("Review", "Confirm", new { id = vm.Id })); case ProvisioningStatus.Provisioned: return(RedirectToAction("Republish", "Confirm", new { id = vm.Id })); case ProvisioningStatus.Pending: return(RedirectToAction("Pending", "Confirm", new { id = vm.Id })); default: throw new InvalidOperationException("Uncatered Dmp Status"); } }
public void Add_a_user_to_user_access_list_given_a_name() { _projectRepository.GetByDataManagementPlanId(Arg.Any <int>()).Returns(new Project()); var vm = new DataManagementPlanViewModel { NonUrdmsNewUserName = "******", Step = 5, Id = 1 }; _controller.WithCallTo(x => x.AddNonUrdmsUser(vm)).ShouldRenderView("Step5").WithModel <DataManagementPlanViewModel>( m => { Assert.That(m.NonUrdmsUsers, Is.Not.Null, "Users does not exist"); Assert.That(m.NonUrdmsUsers[0].FullName, Is.EqualTo("Tom Simon"), "User name the same"); return(true); }); }
public static DataManagementPlanViewModel MapFrom(this DataManagementPlanViewModel vm, Project entity) { if (vm == null || entity == null) { return(vm); } vm.ProjectId = entity.Id; vm.ProjectDescription = entity.Description; vm.ProjectTitle = entity.Title; vm.PrincipalInvestigator = entity.Parties.Where(p => p.Party.UserId != null && p.Relationship == ProjectRelationship.PrincipalInvestigator).Single().Party; vm.Status = entity.ProvisioningStatus; vm.InjectFrom <SameNameWithRecursion>(entity.DataManagementPlan); vm.UrdmsUsers = entity.Parties .Where( p => p.Relationship != ProjectRelationship.PrincipalInvestigator && !string.IsNullOrWhiteSpace(p.Party.UserId)) .Select( p => new UrdmsUserViewModel { UserId = p.Party.UserId, FullName = p.Party.FullName, PartyId = p.Party.Id, Id = p.Id, Relationship = (int)p.Role }) .ToList(); vm.NonUrdmsUsers = entity.Parties .Where(p => string.IsNullOrWhiteSpace(p.Party.UserId)) .Select( p => new NonUrdmsUserViewModel { FullName = p.Party.FullName, PartyId = p.Party.Id, Id = p.Party.Id, Relationship = (int)p.Role }) .ToList(); return(vm); }
public void Add_a_user_to_user_access_list_for_a_valid_staff_id() { _projectRepository.GetByDataManagementPlanId(Arg.Any <int>()).Returns(new Project()); var vm = new DataManagementPlanViewModel { FindUserId = "GA37493", Step = 5, Id = 1 }; _lookup.GetUser(vm.FindUserId) .Returns(new UrdmsUser { FullName = "Joe Research", EmailAddress = "*****@*****.**", CurtinId = vm.FindUserId }); _controller.WithCallTo(x => x.AddUrdmsUser(vm)).ShouldRenderView("Step5").WithModel <DataManagementPlanViewModel>( m => { Assert.That(m.UrdmsUsers, Is.Not.Null, "URDMS users does not exist"); Assert.That(m.UrdmsUsers.Count, Is.EqualTo(1), "URDMS users list does not match dmp list size"); Assert.That(m.UrdmsUsers[0].FullName, Is.EqualTo("Joe Research"), "URDMS user name the same"); return(true); }); }
public void Update_non_urdms_user_access_role_to_Contributor_when_RemoveNonUrdmsUser_call() { const int userIdToRemove = 55; var model = new DataManagementPlanViewModel(); model.NonUrdmsUsers = Builder <NonUrdmsUserViewModel> .CreateListOfSize(1).TheFirst(1).Do(x => { x.Id = userIdToRemove; x.Relationship = (int)AccessRole.Visitors; }).Build(); _form["nonurdms.users.row"] = model.NonUrdmsUsers[0].Id.ToString() + "," + model.NonUrdmsUsers[0].FullName.GetHashCode().ToString() + "," + model.NonUrdmsUsers[0].FullName + "," + model.NonUrdmsUsers[0].Relationship.ToString(); _form["RemoveUser" + userIdToRemove] = "true,false"; _form["Relationship" + userIdToRemove] = AccessRole.Visitors.ToString(); _controller.WithCallTo(x => x.RemoveNonUrdmsUser(model)).ShouldRenderView("Step" + model.Step).WithModel <DataManagementPlanViewModel>(m => { Assert.That(m.NonUrdmsUsers.Count, Is.EqualTo(1), "Non URDMS user has read only access"); Assert.That(m.NonUrdmsUsers[0].Relationship, Is.EqualTo((int)AccessRole.Visitors), "Non URDMS user has read only access"); return(true); }); }
public ActionResult AddNonUrdmsUser(DataManagementPlanViewModel vm) { if (!string.IsNullOrWhiteSpace(vm.NonUrdmsNewUserName)) { var project = _projectRepository.GetByDataManagementPlanId(vm.Id); vm.AddNonUrdmsUser(vm.NonUrdmsNewUserName.Trim(), AccessRole.Visitors); var entityUser = project.Parties .Where(user => string.Compare(user.Party.FullName.Trim(), vm.NonUrdmsNewUserName.Trim(), true) == 0) .Take(1) .FirstOrDefault(); var modelUser = vm.NonUrdmsUsers .Where(user => string.Compare(user.FullName.Trim(), vm.NonUrdmsNewUserName.Trim(), true) == 0) .Take(1) .FirstOrDefault(); if (entityUser != null && modelUser != null) { modelUser.Id = entityUser.Party.Id; } vm.NonUrdmsNewUserName = null; } var viewName = string.Format("Step{0}", vm.Step); return View(viewName, vm); }
public ActionResult AddUrdmsUser(DataManagementPlanViewModel vm) { if (!string.IsNullOrWhiteSpace(vm.FindUserId)) { var urdmsUser = GetUser(vm.FindUserId.Trim()); if (urdmsUser != null) { var project = _projectRepository.GetByDataManagementPlanId(vm.Id); vm.AddUrdmsUser(urdmsUser, AccessRole.Members); var entityUser = project.Parties .Where(user => string.Compare(user.Party.UserId, urdmsUser.CurtinId, true) == 0) .Take(1) .FirstOrDefault(); var modelUser = vm.UrdmsUsers .Where(user => string.Compare(user.UserId, urdmsUser.CurtinId, true) == 0) .Take(1) .FirstOrDefault(); if (entityUser != null && modelUser != null) { modelUser.Id = entityUser.Id; modelUser.PartyId = entityUser.Party.Id; } } vm.FindUserId = null; } var viewName = string.Format("Step{0}", vm.Step); return View(viewName, vm); }
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 ActionResult RemoveNonUrdmsUser(DataManagementPlanViewModel vm) { var viewName = string.Format("Step{0}", vm.Step); return(View(viewName, vm)); }
public void Add_a_user_to_user_access_list_for_a_valid_staff_id() { _projectRepository.GetByDataManagementPlanId(Arg.Any<int>()).Returns(new Project()); var vm = new DataManagementPlanViewModel { FindUserId = "GA37493", Step = 5, Id = 1 }; _lookup.GetUser(vm.FindUserId) .Returns(new UrdmsUser { FullName = "Joe Research", EmailAddress = "*****@*****.**", CurtinId = vm.FindUserId }); _controller.WithCallTo(x => x.AddUrdmsUser(vm)).ShouldRenderView("Step5").WithModel <DataManagementPlanViewModel>( m => { Assert.That(m.UrdmsUsers, Is.Not.Null, "URDMS users does not exist"); Assert.That(m.UrdmsUsers.Count, Is.EqualTo(1), "URDMS users list does not match dmp list size"); Assert.That(m.UrdmsUsers[0].FullName, Is.EqualTo("Joe Research"), "URDMS user name the same"); return true; }); }
public ActionResult RemoveNonUrdmsUser(DataManagementPlanViewModel vm) { var viewName = string.Format("Step{0}", vm.Step); return View(viewName, vm); }
public void Add_a_user_to_user_access_list_given_a_name() { _projectRepository.GetByDataManagementPlanId(Arg.Any<int>()).Returns(new Project()); var vm = new DataManagementPlanViewModel { NonUrdmsNewUserName = "******", Step = 5, Id = 1 }; _controller.WithCallTo(x => x.AddNonUrdmsUser(vm)).ShouldRenderView("Step5").WithModel <DataManagementPlanViewModel>( m => { Assert.That(m.NonUrdmsUsers, Is.Not.Null, "Users does not exist"); Assert.That(m.NonUrdmsUsers[0].FullName, Is.EqualTo("Tom Simon"), "User name the same"); return true; }); }
public ActionResult Confirm(DataManagementPlanViewModel vm) { var project = _projectRepository.GetByDataManagementPlanId(vm.Id); if (project == null) { return View("ProjectNotFound"); } if (!this.CurrentUser.IsPrincipalInvestigatorFor(project)) { return View("NoProjectAccessRight"); } if (project.DataManagementPlan == null) { return View("DmpNotFound"); } if (!ModelState.IsValid) { return View(string.Format("Step{0}", vm.Step), vm); } vm.Status = project.ProvisioningStatus; var projectModel = new ProjectViewModel().MapFrom(project); projectModel.DataManagementPlan = vm; project.MapFrom(projectModel); _projectRepository.Save(project); //Dmp form completion timer for step 5. _timerRepository.Save(new FormTimer { UserId = CurrentUser.CurtinId, EndTime = DateTime.Now, Id = vm.Id, StartTime = vm.Start, Step = vm.Step }); switch (project.ProvisioningStatus) { case ProvisioningStatus.NotStarted: return RedirectToAction("Review", "Confirm", new { id = vm.Id }); case ProvisioningStatus.Provisioned: return RedirectToAction("Republish", "Confirm", new { id = vm.Id }); case ProvisioningStatus.Pending: return RedirectToAction("Pending", "Confirm", new { id = vm.Id }); default: throw new InvalidOperationException("Uncatered Dmp Status"); } }
public void Update_non_urdms_user_access_role_to_Contributor_when_RemoveNonUrdmsUser_call() { const int userIdToRemove = 55; var model = new DataManagementPlanViewModel(); model.NonUrdmsUsers = Builder<NonUrdmsUserViewModel>.CreateListOfSize(1).TheFirst(1).Do(x => { x.Id = userIdToRemove; x.Relationship = (int)AccessRole.Visitors; }).Build(); _form["nonurdms.users.row"] = model.NonUrdmsUsers[0].Id.ToString() + "," + model.NonUrdmsUsers[0].FullName.GetHashCode().ToString() + "," + model.NonUrdmsUsers[0].FullName + "," + model.NonUrdmsUsers[0].Relationship.ToString(); _form["RemoveUser" + userIdToRemove] = "true,false"; _form["Relationship" + userIdToRemove] = AccessRole.Visitors.ToString(); _controller.WithCallTo(x => x.RemoveNonUrdmsUser(model)).ShouldRenderView("Step" + model.Step).WithModel<DataManagementPlanViewModel>(m => { Assert.That(m.NonUrdmsUsers.Count, Is.EqualTo(1), "Non URDMS user has read only access"); Assert.That(m.NonUrdmsUsers[0].Relationship, Is.EqualTo((int)AccessRole.Visitors), "Non URDMS user has read only access"); return true; }); }