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