public ActionResult ReviewDataDeposit(int projectId) { var project = _projectRepository.Get(projectId); if (project == null) { return(View("ProjectNotFound")); } if (project.SourceProjectType != SourceProjectType.DEPOSIT) { return(View("IncorrectProjectType")); } if (project.DataDeposit == null) { return(View("DataDepositNotFound")); } if (!this.CurrentUser.IsPrincipalInvestigatorFor(project)) { return(View("NoProjectAccessRight")); } if (project.ProvisioningStatus == ProvisioningStatus.Provisioned) { return(View("DataDepositProvisioned")); } var vm = new ConfirmDataDepositViewModel { ProjectId = project.Id, ProjectTitle = project.Title }; return(View("ReviewDataDeposit", vm)); }
public ActionResult ReviewDataDeposit(ConfirmDataDepositViewModel model) { if (!ModelState.IsValid) { return(View(model)); } // Get project information var project = _projectRepository.Get(model.ProjectId); if (project == null) { return(View("ProjectNotFound")); } if (project.SourceProjectType != SourceProjectType.DEPOSIT) { return(View("IncorrectProjectType")); } if (project.DataDeposit == null) { return(View("DataDepositNotFound")); } if (!this.CurrentUser.IsPrincipalInvestigatorFor(project)) { return(View("NoProjectAccessRight")); } if (project.ProvisioningStatus == ProvisioningStatus.Provisioned) { return(View("DataDepositProvisioned")); } // Start provisioning workflow // TODO: You can use the URDMS.Integration solution to handle provisioning in a robust manner or just alter the database directly as in the // commented code below and implement further actions from the web application. _bus.Send <SiteRequestCommand>(m => { m.ProjectId = project.Id; m.ProjectTitle = project.Title; m.ProjectDescription = project.Description; m.UserRoles = CreateUserRolesDictionary(project); }); //project.ProvisioningStatus = ProvisioningStatus.Pending; //_projectRepository.Save(project); if (!project.DataCollections.Any(dc => dc.IsFirstCollection)) { var dataCollection = project.CreateInitialDataCollection(); _dataCollectionRepository.Save(dataCollection); } return(RedirectToAction("SubmittedDataDeposit", new { projectId = model.ProjectId })); }