private async Task <SpecificationDatasetRelationshipsViewModel> PopulateViewModel(SpecificationSummary specification) { SpecificationSummaryViewModel vm = _mapper.Map <SpecificationSummaryViewModel>(specification); SpecificationDatasetRelationshipsViewModel viewModel = new SpecificationDatasetRelationshipsViewModel(vm); ApiResponse <IEnumerable <DatasetSpecificationRelationshipViewModel> > apiResponse = await _datasetsApiClient.GetRelationshipsBySpecificationId(specification.Id); if (apiResponse.StatusCode != HttpStatusCode.OK || apiResponse.Content == null) { return(null); } viewModel.Items = apiResponse.Content.Select(m => new SpecificationDatasetRelationshipItemViewModel { DatasetId = m.DatasetId, DatasetName = m.DatasetName, DefinitionName = m.Definition != null ? m.Definition.Name : string.Empty, DefinitionId = m.Definition != null ? m.Definition.Id : string.Empty, DefinitionDescription = m.Definition?.Description ?? string.Empty, DatasetVersion = m.Version ?? 0, RelationName = m.Name, RelationshipId = m.Id, RelationshipDescription = m.RelationshipDescription, IsProviderData = m.IsProviderData, IsLatestVersion = m.IsLatestVersion, LastUpdatedDate = m.LastUpdatedDate, LastUpdatedAuthorName = string.IsNullOrWhiteSpace(m.LastUpdatedAuthor?.Name) ? "Unknown" : m.LastUpdatedAuthor.Name, }).OrderBy(_ => _.RelationName); return(viewModel); }
private async Task <SpecificationDatasetRelationshipsViewModel> PopulateViewModel(SpecificationSummary specification) { SpecificationSummaryViewModel vm = _mapper.Map <SpecificationSummaryViewModel>(specification); SpecificationDatasetRelationshipsViewModel viewModel = new SpecificationDatasetRelationshipsViewModel(vm); ApiResponse <IEnumerable <DatasetSpecificationRelationshipModel> > apiResponse = await _datasetsApiClient.GetDatasetSpecificationRelationshipsBySpecificationId(specification.Id); if (apiResponse.StatusCode != HttpStatusCode.OK || apiResponse.Content == null) { _logger.Error($"Failed to fetch specification relationships for specification id: {specification.Id}"); return(null); } viewModel.Items = apiResponse.Content.Select(m => new SpecificationDatasetRelationshipItemViewModel { DatasetId = m.DatasetId, DatasetName = m.DatasetName, DefinitionName = m.Definition != null ? m.Definition.Name : string.Empty, DefinitionId = m.Definition != null ? m.Definition.Id : string.Empty, DefinitionDescription = m.Definition != null ? m.Definition.Description : string.Empty, DatasetVersion = m.Version.HasValue ? m.Version.Value : 0, RelationName = m.Name, RelationshipId = m.Id, RelationshipDescription = m.RelationshipDescription, IsProviderData = m.IsProviderData }); return(viewModel); }
public async Task <IActionResult> OnGetAsync(string specificationId, bool wasSuccess = false) { Guard.IsNullOrWhiteSpace(specificationId, nameof(specificationId)); ShowSuccessMessage = wasSuccess; ApiResponse <SpecificationSummary> specificationResponse = await _specsApiClient.GetSpecificationSummary(specificationId); if (specificationResponse.StatusCode != HttpStatusCode.OK) { _logger.Error($"Failed to fetch specification with status code {specificationResponse.StatusCode.ToString()}"); return(new StatusCodeResult((int)specificationResponse.StatusCode)); } IsAuthorizedToMap = await _authorizationHelper.DoesUserHavePermission(User, specificationResponse.Content, SpecificationActionTypes.CanMapDatasets); SpecificationDatasetRelationshipsViewModel viewModel = await PopulateViewModel(specificationResponse.Content); if (viewModel == null) { _logger.Error($"A null view model was returned"); return(new StatusCodeResult(500)); } ViewModel = viewModel; return(Page()); }
public async Task <IActionResult> GetSources(string specificationId) { Guard.IsNullOrWhiteSpace(specificationId, nameof(specificationId)); ApiResponse <SpecificationSummary> specificationResponse = await _specificationsApiClient.GetSpecificationSummaryById(specificationId); if (specificationResponse.StatusCode != HttpStatusCode.OK) { return(new StatusCodeResult((int)specificationResponse.StatusCode)); } SpecificationDatasetRelationshipsViewModel viewModel = await PopulateViewModel(specificationResponse.Content); if (viewModel == null) { return(new StatusCodeResult(500)); } return(new OkObjectResult(viewModel)); }