public ActionResult New(int projectId)
        {
            var project = ProjectRepository.Get(projectId);
            if (project == null)
            {
                return View("ProjectNotFound");
            }

            if (!this.CurrentUser.IsPrincipalInvestigatorFor(project))
            {
                return View("NoProjectAccessRight");
            }

            if (project.SourceProjectType != SourceProjectType.DEPOSIT)
            {
                return View("CannotCreateDataDeposit");
            }

            if (project.DataDeposit != null)
            {
                return View("DataDepositAlreadyExists");
            }

            var vm = new DataDepositViewModel
            {
                ProjectId = project.Id,
                ProjectTitle = project.Title,
                PrincipalInvestigator = project.Parties
                    .Where(p => !string.IsNullOrWhiteSpace(p.Party.UserId) && p.Relationship == ProjectRelationship.PrincipalInvestigator)
                    .Single()
                    .Party
            };
            return View(vm);
        }
示例#2
0
        public ActionResult Edit(int id)
        {
            var project = ProjectRepository.GetByDataDepositId(id);

            if (project == null)
            {
                return(View("ProjectNotFound"));
            }

            if (!this.CurrentUser.IsPrincipalInvestigatorFor(project))
            {
                return(View("NoProjectAccessRight"));
            }

            if (project.SourceProjectType != SourceProjectType.DEPOSIT)
            {
                return(View("CannotCreateDataDeposit"));
            }

            if (project.ProvisioningStatus != ProvisioningStatus.NotStarted)
            {
                return(View("CannotEditDataDeposit"));
            }

            var vm = new DataDepositViewModel();

            vm.MapFrom(project);

            return(View("New", vm));
        }
示例#3
0
        public ActionResult AddUrdmsUser(DataDepositViewModel vm)
        {
            if (string.IsNullOrWhiteSpace(vm.FindUserId))
            {
                return(View("New", vm));
            }

            var project = ProjectRepository.Get(vm.ProjectId);

            if (project == null)
            {
                return(View("ProjectNotFound"));
            }

            if (!this.CurrentUser.IsPrincipalInvestigatorFor(project))
            {
                return(View("NoProjectAccessRight"));
            }

            if (project.SourceProjectType != SourceProjectType.DEPOSIT)
            {
                return(View("CannotCreateDataDeposit"));
            }

            if (project.DataDeposit != null)
            {
                return(View("DataDepositAlreadyExists"));
            }

            var urdmsUsers = GetUser(vm.FindUserId.Trim());

            if (urdmsUsers != null)
            {
                vm.AddUrdmsUser(urdmsUsers, AccessRole.Members);
                var entityUser = project.Parties
                                 .Where(user => string.Compare(user.Party.UserId, urdmsUsers.CurtinId, true) == 0)
                                 .Take(1)
                                 .FirstOrDefault();
                var modelUser = vm.UrdmsUsers
                                .Where(user => string.Compare(user.UserId, urdmsUsers.CurtinId, true) == 0)
                                .Take(1)
                                .FirstOrDefault();
                if (entityUser != null && modelUser != null)
                {
                    modelUser.Id      = entityUser.Id;
                    modelUser.PartyId = entityUser.Party.Id;
                }
            }
            vm.FindUserId = null;

            return(View("New", vm));
        }
示例#4
0
        public ActionResult Edit(DataDepositViewModel model)
        {
            var project = ProjectRepository.GetByDataDepositId(model.Id);

            if (project == null)
            {
                return(View("ProjectNotFound"));
            }

            if (!this.CurrentUser.IsPrincipalInvestigatorFor(project))
            {
                return(View("NoProjectAccessRight"));
            }

            if (project.SourceProjectType != SourceProjectType.DEPOSIT)
            {
                return(View("CannotCreateDataDeposit"));
            }

            if (project.ProvisioningStatus != ProvisioningStatus.NotStarted)
            {
                return(View("CannotEditDataDeposit"));
            }

            var projectModel = new ProjectViewModel {
                DataDeposit = model
            };

            // Copy project details from project entity
            projectModel.MapFrom(project, false, false);
            project.MapFrom(projectModel);
            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);

            switch (project.ProvisioningStatus)
            {
            case ProvisioningStatus.NotStarted:
                return(RedirectToAction("ReviewDataDeposit", "Confirm", new { projectId = model.ProjectId }));

            case ProvisioningStatus.Pending:
                return(RedirectToAction("Index", "Project"));

            default:
                throw new InvalidOperationException("Uncatered Dmp Status");
            }
        }
        public static DataDepositViewModel MapFrom(this DataDepositViewModel vm, Project entity)
        {
            if (vm == null || entity == null)
            {
                return(vm);
            }

            vm.ProjectId             = entity.Id;
            vm.ProjectTitle          = entity.Title;
            vm.PrincipalInvestigator = entity.Parties.Where(p => p.Party.UserId != null && p.Relationship == ProjectRelationship.PrincipalInvestigator).Single().Party;
            vm.InjectFrom <SameNameWithRecursion>(entity.DataDeposit);
            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);
        }
示例#6
0
        public ActionResult AddNonUrdmsUser(DataDepositViewModel vm)
        {
            var project = ProjectRepository.Get(vm.ProjectId);

            if (project == null)
            {
                return(View("ProjectNotFound"));
            }

            if (!this.CurrentUser.IsPrincipalInvestigatorFor(project))
            {
                return(View("NoProjectAccessRight"));
            }

            if (project.SourceProjectType != SourceProjectType.DEPOSIT)
            {
                return(View("CannotCreateDataDeposit"));
            }

            if (project.DataDeposit != null)
            {
                return(View("DataDepositAlreadyExists"));
            }
            if (!string.IsNullOrWhiteSpace(vm.NonUrdmsNewUserName))
            {
                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;
            }
            return(View("New", vm));
        }
 public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
 {
     var form = controllerContext.HttpContext.Request.Form;
     var model = new DataDepositViewModel();
     model.DeserializeUrdmsUsers<AccessRole>(form);
     model.DeserializeNonUrdmsUsers<AccessRole>(form);
     int projectId;
     if (int.TryParse(form["ProjectId"], out projectId))
     {
         var project = ProjectRepository.Get(projectId);
         model.PrincipalInvestigator = project.Parties
             .Where(
                 p =>
                 !string.IsNullOrWhiteSpace(p.Party.UserId) &&
                 p.Relationship == ProjectRelationship.PrincipalInvestigator)
             .Single()
             .Party;
     }
     bindingContext.ModelMetadata.Model = model;
     return base.BindModel(controllerContext, bindingContext); 
 }
        public ActionResult New(DataDepositViewModel vm)
        {
            var project = ProjectRepository.Get(vm.ProjectId);
            if (project == null)
            {
                return View("ProjectNotFound");
            }

            if (!this.CurrentUser.IsPrincipalInvestigatorFor(project))
            {
                return View("NoProjectAccessRight");
            }

            if (project.SourceProjectType != SourceProjectType.DEPOSIT)
            {
                return View("CannotCreateDataDeposit");
            }

            if (project.DataDeposit != null)
            {
                return View("DataDepositAlreadyExists");
            }
            var projectModel = new ProjectViewModel { DataDeposit = vm };
            // Copy project details from project entity
            projectModel.MapFrom(project, false, false);
            project.MapFrom(projectModel);
            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);
            switch (project.ProvisioningStatus)
            {
                case ProvisioningStatus.NotStarted:
                    return RedirectToAction("ReviewDataDeposit", "Confirm", new { projectId = vm.ProjectId });
                default:
                    throw new InvalidOperationException("Uncatered Dmp Status");

            }
        }
示例#9
0
        public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
        {
            var form  = controllerContext.HttpContext.Request.Form;
            var model = new DataDepositViewModel();

            model.DeserializeUrdmsUsers <AccessRole>(form);
            model.DeserializeNonUrdmsUsers <AccessRole>(form);
            int projectId;

            if (int.TryParse(form["ProjectId"], out projectId))
            {
                var project = ProjectRepository.Get(projectId);
                model.PrincipalInvestigator = project.Parties
                                              .Where(
                    p =>
                    !string.IsNullOrWhiteSpace(p.Party.UserId) &&
                    p.Relationship == ProjectRelationship.PrincipalInvestigator)
                                              .Single()
                                              .Party;
            }
            bindingContext.ModelMetadata.Model = model;
            return(base.BindModel(controllerContext, bindingContext));
        }
示例#10
0
        public ActionResult New(int projectId)
        {
            var project = ProjectRepository.Get(projectId);

            if (project == null)
            {
                return(View("ProjectNotFound"));
            }

            if (!this.CurrentUser.IsPrincipalInvestigatorFor(project))
            {
                return(View("NoProjectAccessRight"));
            }

            if (project.SourceProjectType != SourceProjectType.DEPOSIT)
            {
                return(View("CannotCreateDataDeposit"));
            }

            if (project.DataDeposit != null)
            {
                return(View("DataDepositAlreadyExists"));
            }

            var vm = new DataDepositViewModel
            {
                ProjectId             = project.Id,
                ProjectTitle          = project.Title,
                PrincipalInvestigator = project.Parties
                                        .Where(p => !string.IsNullOrWhiteSpace(p.Party.UserId) && p.Relationship == ProjectRelationship.PrincipalInvestigator)
                                        .Single()
                                        .Party
            };

            return(View(vm));
        }
		public ActionResult RemoveNonUrdmsUser(DataDepositViewModel vm)
        {
            return View("New", vm);
        }
		public ActionResult AddNonUrdmsUser(DataDepositViewModel vm)
        {
            var project = ProjectRepository.Get(vm.ProjectId);
            if (project == null)
            {
                return View("ProjectNotFound");
            }

            if (!this.CurrentUser.IsPrincipalInvestigatorFor(project))
            {
                return View("NoProjectAccessRight");
            }

            if (project.SourceProjectType != SourceProjectType.DEPOSIT)
            {
                return View("CannotCreateDataDeposit");
            }

            if (project.DataDeposit != null)
            {
                return View("DataDepositAlreadyExists");
            }
            if (!string.IsNullOrWhiteSpace(vm.NonUrdmsNewUserName))
            {
                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;
            }
            return View("New", vm);
        }
        public ActionResult AddUrdmsUser(DataDepositViewModel vm)
        {
            if (string.IsNullOrWhiteSpace(vm.FindUserId))
            {
                return View("New", vm);
            }

            var project = ProjectRepository.Get(vm.ProjectId);
            if (project == null)
            {
                return View("ProjectNotFound");
            }

            if (!this.CurrentUser.IsPrincipalInvestigatorFor(project))
            {
                return View("NoProjectAccessRight");
            }

            if (project.SourceProjectType != SourceProjectType.DEPOSIT)
            {
                return View("CannotCreateDataDeposit");
            }

            if (project.DataDeposit != null)
            {
                return View("DataDepositAlreadyExists");
            }

            var urdmsUsers = GetUser(vm.FindUserId.Trim());
            if (urdmsUsers != null)
            {
                vm.AddUrdmsUser(urdmsUsers, AccessRole.Members);
                var entityUser = project.Parties
                    .Where(user => string.Compare(user.Party.UserId, urdmsUsers.CurtinId, true) == 0)
                    .Take(1)
                    .FirstOrDefault();
                var modelUser = vm.UrdmsUsers
                    .Where(user => string.Compare(user.UserId, urdmsUsers.CurtinId, true) == 0)
                    .Take(1)
                    .FirstOrDefault();
                if (entityUser != null && modelUser != null)
                {
                    modelUser.Id = entityUser.Id;
                    modelUser.PartyId = entityUser.Party.Id;
                }

            }
            vm.FindUserId = null;

            return View("New", vm);
        }
        public ActionResult Edit(int id)
        {
            var project = ProjectRepository.GetByDataDepositId(id);

            if (project == null)
            {
                return View("ProjectNotFound");
            }

            if (!this.CurrentUser.IsPrincipalInvestigatorFor(project))
            {
                return View("NoProjectAccessRight");
            }

            if (project.SourceProjectType != SourceProjectType.DEPOSIT)
            {
                return View("CannotCreateDataDeposit");
            }

            if (project.ProvisioningStatus != ProvisioningStatus.NotStarted)
            {
                return View("CannotEditDataDeposit");
            }

            var vm = new DataDepositViewModel();
            vm.MapFrom(project);

            return View("New", vm);
        }
示例#15
0
 public ActionResult RemoveNonUrdmsUser(DataDepositViewModel vm)
 {
     return(View("New", vm));
 }