private async Task <DatasetSpecificationRelationshipViewModel> CreateViewModel( DefinitionSpecificationRelationship relationship, KeyValuePair <string, int> datasetLatestVersion) { DatasetSpecificationRelationshipViewModel relationshipViewModel = new DatasetSpecificationRelationshipViewModel { Id = relationship.Id, Name = relationship.Name, RelationshipDescription = relationship.Description, IsProviderData = relationship.IsSetAsProviderData, LastUpdatedAuthor = relationship.Author, LastUpdatedDate = relationship.LastUpdated }; if (relationship.DatasetVersion != null) { Dataset dataset = await _datasetRepository.GetDatasetByDatasetId(relationship.DatasetVersion.Id); if (dataset != null) { relationshipViewModel.DatasetId = relationship.DatasetVersion.Id; relationshipViewModel.DatasetName = dataset.Name; relationshipViewModel.Version = relationship.DatasetVersion.Version; relationshipViewModel.IsLatestVersion = relationship.DatasetVersion.Version == datasetLatestVersion.Value; } else { _logger.Warning($"Dataset could not be found for Id {relationship.DatasetVersion.Id}"); } } if (relationship.DatasetDefinition != null) { string definitionId = relationship.DatasetDefinition.Id; Models.Datasets.Schema.DatasetDefinition definition = await _datasetRepository.GetDatasetDefinition(definitionId); if (definition != null) { relationshipViewModel.Definition = new DatasetDefinitionViewModel { Id = definition.Id, Name = definition.Name, Description = definition.Description }; } } return(relationshipViewModel); }
public async Task Run( SpecificationVersion specificationVersion, Reference user, string correlationId, bool triggerProviderSnapshotDataLoadJob, bool triggerCalculationEngineRunJob) { string errorMessage = $"Unable to queue ProviderSnapshotDataLoadJob for specification - {specificationVersion.SpecificationId}"; string triggerMessage = $"Assigning ProviderVersionId for specification: {specificationVersion.SpecificationId}"; Reference fundingStream = specificationVersion.FundingStreams.FirstOrDefault(); if (fundingStream != null && (specificationVersion.ProviderSource == Models.Providers.ProviderSource.FDZ || triggerProviderSnapshotDataLoadJob)) { Job createProviderSnapshotDataLoadJob = await CreateJob(errorMessage, NewJobCreateModel(specificationVersion.SpecificationId, triggerMessage, JobConstants.DefinitionNames.ProviderSnapshotDataLoadJob, correlationId, user, new Dictionary <string, string> { { "specification-id", specificationVersion.SpecificationId }, { "fundingstream-id", fundingStream.Id }, { "providerSanpshot-id", specificationVersion.ProviderSnapshotId?.ToString() }, { "disableQueueCalculationJob", (!triggerCalculationEngineRunJob).ToString() } })); GuardAgainstNullJob(createProviderSnapshotDataLoadJob, errorMessage); } if (specificationVersion.ProviderSource == Models.Providers.ProviderSource.CFS && !string.IsNullOrWhiteSpace(specificationVersion.ProviderVersionId)) { ApiResponse <IEnumerable <DatasetSpecificationRelationshipViewModel> > response = await _datasetsPolicy.ExecuteAsync(() => _datasets.GetRelationshipsBySpecificationId(specificationVersion.SpecificationId)); DatasetSpecificationRelationshipViewModel providerRelationship = response?.Content?.Where(_ => _.IsProviderData).FirstOrDefault(); if (providerRelationship != null) { ApiResponse <DatasetViewModel> datasetResponse = await _datasetsPolicy.ExecuteAsync(() => _datasets.GetDatasetByDatasetId(providerRelationship.DatasetId)); if (datasetResponse?.StatusCode.IsSuccess() == false || datasetResponse?.Content == null) { errorMessage = $"Unable to retrieve dataset for specification {specificationVersion.SpecificationId}"; _logger.Error(errorMessage); throw new Exception(errorMessage); } errorMessage = $"Unable to queue MapScopedDatasetJob for specification - {specificationVersion.SpecificationId}"; Job mapScopedDatasetJob = await CreateJob(errorMessage, NewJobCreateModel(specificationVersion.SpecificationId, triggerMessage, JobConstants.DefinitionNames.MapScopedDatasetJob, correlationId, user, new Dictionary <string, string> { { "specification-id", specificationVersion.SpecificationId }, { "provider-cache-key", $"{CacheKeys.ScopedProviderSummariesPrefix}{specificationVersion.SpecificationId}" }, { "specification-summary-cache-key", $"{CacheKeys.SpecificationSummaryById}{specificationVersion.SpecificationId}" }, { "disableQueueCalculationJob", (!triggerCalculationEngineRunJob).ToString() }, })); GuardAgainstNullJob(mapScopedDatasetJob, errorMessage); errorMessage = $"Unable to queue MapDatasetJob for specification - {specificationVersion.SpecificationId}"; Job mapDataset = await CreateJob(errorMessage, NewJobCreateModel(specificationVersion.SpecificationId, triggerMessage, JobConstants.DefinitionNames.MapDatasetJob, correlationId, user, new Dictionary <string, string> { { "specification-id", specificationVersion.SpecificationId }, { "relationship-id", providerRelationship.Id }, { "user-id", user?.Id }, { "user-name", user?.Name }, { "parentJobId", mapScopedDatasetJob.Id }, { "disableQueueCalculationJob", (!triggerCalculationEngineRunJob).ToString() }, }, mapScopedDatasetJob.Id, messageBody : JsonConvert.SerializeObject(datasetResponse.Content))); GuardAgainstNullJob(mapDataset, errorMessage); } } }