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 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)); }
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(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); }
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"); } }
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(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); }
public ActionResult RemoveNonUrdmsUser(DataDepositViewModel vm) { return(View("New", vm)); }