Beispiel #1
0
        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));
        }
Beispiel #2
0
        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 }));
        }