コード例 #1
0
        public async Task <IActionResult> OnPostAsync(string relationshipId, string specificationId, string datasetVersion = null)
        {
            Guard.IsNullOrWhiteSpace(relationshipId, nameof(relationshipId));

            ApiResponse <SelectDataSourceModel> sourcesResponse = await _datasetClient.GetDatasourcesByRelationshipId(relationshipId);

            if (sourcesResponse.StatusCode != HttpStatusCode.OK || sourcesResponse.Content == null)
            {
                _logger.Error($"Failed to fetch data sources with status code {sourcesResponse.StatusCode.ToString()}");
                return(NotFound());
            }

            IsAuthorizedToMap = await _authorizationHelper.DoesUserHavePermission(User, sourcesResponse.Content, SpecificationActionTypes.CanMapDatasets);

            if (!IsAuthorizedToMap)
            {
                return(new ForbidResult());
            }

            if (string.IsNullOrWhiteSpace(datasetVersion))
            {
                this.ModelState.AddModelError($"{nameof(ViewModel)}.{nameof(datasetVersion)}", "");

                SelectDataSourceViewModel viewModel = PopulateViewModel(sourcesResponse.Content);

                if (viewModel == null)
                {
                    return(new StatusCodeResult(500));
                }

                ViewModel = viewModel;

                return(Page());
            }

            string[] datasetVersionArray = datasetVersion.Split("_");
            if (datasetVersionArray.Length != 2)
            {
                _logger.Error($"Dataset version: {datasetVersion} is invalid");
                return(new StatusCodeResult(500));
            }

            AssignDatasetVersion assignDatasetVersion = new AssignDatasetVersion
            {
                RelationshipId = relationshipId,
                DatasetId      = datasetVersionArray[0],
                Version        = Convert.ToInt32(datasetVersionArray[1])
            };

            HttpStatusCode httpStatusCode = await _datasetClient.AssignDataSourceVersionToRelationship(assignDatasetVersion);

            if (httpStatusCode.IsSuccess())
            {
                return(Redirect($"/datasets/specificationrelationships?specificationId={specificationId}&wasSuccess=true"));
            }

            _logger.Error($"Failed to assign dataset version with status code: {httpStatusCode.ToString()}");

            return(new StatusCodeResult(500));
        }
コード例 #2
0
        public async Task <IActionResult> AssignDatasourceVersionToRelationship([FromRoute] string relationshipId, [FromRoute] string specificationId,
                                                                                [FromRoute] string datasetVersionId)
        {
            Guard.IsNullOrWhiteSpace(relationshipId, nameof(relationshipId));
            Guard.IsNullOrWhiteSpace(specificationId, nameof(specificationId));
            Guard.IsNullOrWhiteSpace(datasetVersionId, nameof(datasetVersionId));

            ApiResponse <SelectDatasourceModel> sourcesResponse =
                await _datasetApiClient.GetDataSourcesByRelationshipId(relationshipId);

            if (sourcesResponse.StatusCode != HttpStatusCode.OK || sourcesResponse.Content == null)
            {
                _logger.Error($"Failed to fetch data sources with status code {sourcesResponse.StatusCode.ToString()}");
                return(NotFound());
            }

            bool isAuthorizedToMap = await _authorizationHelper.DoesUserHavePermission(User,
                                                                                       sourcesResponse.Content.SpecificationId, SpecificationActionTypes.CanMapDatasets);

            if (!isAuthorizedToMap)
            {
                return(new ForbidResult());
            }

            if (string.IsNullOrWhiteSpace(datasetVersionId))
            {
                SelectDataSourceViewModel viewModel = PopulateViewModel(sourcesResponse.Content);
                this.ModelState.AddModelError($"{nameof(SelectDataSourceViewModel)}.{nameof(datasetVersionId)}", "");
                if (viewModel == null)
                {
                    return(new StatusCodeResult(500));
                }
            }

            string[] datasetVersionArray = datasetVersionId.Split("_");
            if (datasetVersionArray.Length != 2)
            {
                _logger.Error($"Dataset version: {datasetVersionId} is invalid");
                return(new StatusCodeResult(500));
            }

            AssignDatasourceModel assignDatasetVersion = new AssignDatasourceModel
            {
                RelationshipId = relationshipId,
                DatasetId      = datasetVersionArray[0],
                Version        = Convert.ToInt32(datasetVersionArray[1])
            };

            HttpStatusCode httpStatusCode =
                await _datasetApiClient.AssignDatasourceVersionToRelationship(assignDatasetVersion);

            if (httpStatusCode == HttpStatusCode.OK || httpStatusCode == HttpStatusCode.NoContent)
            {
                return(new OkObjectResult(true));
            }

            _logger.Error($"Failed to assign dataset version with status code: {httpStatusCode.ToString()}");

            return(new StatusCodeResult(500));
        }
コード例 #3
0
        public async Task <IActionResult> OnGetAsync(string relationshipId)
        {
            Guard.IsNullOrWhiteSpace(relationshipId, nameof(relationshipId));

            ApiResponse <SelectDataSourceModel> sourcesResponse = await _datasetClient.GetDatasourcesByRelationshipId(relationshipId);

            if (sourcesResponse.StatusCode != HttpStatusCode.OK || sourcesResponse.Content == null)
            {
                _logger.Error($"Failed to fetch data sources with status code {sourcesResponse.StatusCode.ToString()}");
                return(NotFound());
            }

            IsAuthorizedToMap = await _authorizationHelper.DoesUserHavePermission(User, sourcesResponse.Content, SpecificationActionTypes.CanMapDatasets);

            SelectDataSourceViewModel viewModel = PopulateViewModel(sourcesResponse.Content);

            if (viewModel == null)
            {
                return(new StatusCodeResult(500));
            }

            ViewModel = viewModel;

            return(Page());
        }
コード例 #4
0
        private SelectDataSourceViewModel PopulateViewModel(SelectDatasourceModel selectDatasourceModel)
        {
            SelectDataSourceViewModel viewModel = new SelectDataSourceViewModel
            {
                SpecificationId   = selectDatasourceModel.SpecificationId,
                SpecificationName = selectDatasourceModel.SpecificationName,
                RelationshipId    = selectDatasourceModel.RelationshipId,
                DefinitionId      = selectDatasourceModel.DefinitionId,
                DefinitionName    = selectDatasourceModel.DefinitionName,
                RelationshipName  = selectDatasourceModel.RelationshipName
            };

            List <DatasetVersionsViewModel> datasets = new List <DatasetVersionsViewModel>();

            if (!selectDatasourceModel.Datasets.IsNullOrEmpty())
            {
                foreach (DatasetVersions datasetVersionModel in selectDatasourceModel.Datasets)
                {
                    datasets.Add(new DatasetVersionsViewModel
                    {
                        Id         = datasetVersionModel.Id,
                        Name       = datasetVersionModel.Name,
                        IsSelected = datasetVersionModel.SelectedVersion.HasValue,
                        Versions   = datasetVersionModel.Versions.Select(m =>
                                                                         new DatasetVersionItemViewModel(datasetVersionModel.Id, datasetVersionModel.Name, m.Version)
                        {
                            IsSelected = datasetVersionModel.SelectedVersion.HasValue &&
                                         datasetVersionModel.SelectedVersion.Value == m.Version
                        }).ToArraySafe()
                    });
                }
            }

            viewModel.Datasets = datasets;

            return(viewModel);
        }