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)); }
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)); }
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()); }
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); }