public async Task <IActionResult> CreateOrUpdateDatasetDefinition(CreateDatasetDefinitionFromTemplateModel model, string correlationId, Reference user) { ValidationResult validationResult = await _createDatasetDefinitionFromTemplateValidator.ValidateAsync(model); if (!validationResult.IsValid) { string errorMessage = string.Join(";", validationResult.Errors.Select(x => x.ErrorMessage)); _logger.Error(errorMessage); return(new BadRequestObjectResult(errorMessage)); } ; FundingStream fundingStream = await _policyRepository.GetFundingStream(model.FundingStreamId); TemplateMetadataDistinctCalculationsContents templateContents = await _policyRepository.GetDistinctTemplateMetadataCalculationsContents(model.FundingStreamId, model.FundingPeriodId, model.TemplateVersion); if (templateContents == null) { return(new BadRequestObjectResult($"No funding template for given FundingStreamId " + $"- {model.FundingStreamId}, FundingPeriodId - {model.FundingPeriodId}, TemplateVersion - {model.TemplateVersion}")); } DatasetDefinition datasetDefinition = CreateDatasetDefinition(model, templateContents, fundingStream); return(await SaveDatasetDefinition(datasetDefinition, correlationId, user)); }
private static DatasetDefinition CreateDatasetDefinition( CreateDatasetDefinitionFromTemplateModel model, TemplateMetadataDistinctCalculationsContents templateContent, FundingStream fundingStream) { int id = model.DatasetDefinitionId; string name = $"{fundingStream.Name}-{model.TemplateVersion}"; DatasetDefinition datasetDefinition = new DatasetDefinition() { Id = id.ToString(), Name = name, Description = name, FundingStreamId = fundingStream.Id }; id += 1; datasetDefinition.TableDefinitions = new List <TableDefinition>(); TableDefinition tableDefinition = new TableDefinition { Id = id.ToString(), Name = name, FieldDefinitions = new List <FieldDefinition>() }; id += 1; tableDefinition.FieldDefinitions.Add(new FieldDefinition() { Id = id.ToString(), Name = "UKPRN", IdentifierFieldType = IdentifierFieldType.UKPRN, Type = FieldType.String, Required = true }); foreach (TemplateMetadataCalculation calculation in templateContent.Calculations) { id += 1; FieldDefinition fieldDefinition = new FieldDefinition() { Id = id.ToString(), Name = calculation.Name, Required = false, Type = GetFieldType(calculation.Type), IsAggregable = calculation.AggregationType != AggregationType.None }; tableDefinition.FieldDefinitions.Add(fieldDefinition); } datasetDefinition.TableDefinitions.Add(tableDefinition); return(datasetDefinition); }
public async Task <IActionResult> CreateOrUpdateDatasetDefinition([FromRoute] int datasetDefinitionId, [FromBody] CreateDatasetDefinitionFromTemplateModel createDatasetDefinitionModel) { if (datasetDefinitionId == 0) { return(new BadRequestObjectResult("DatasetDefinition Id must be provided")); } if (createDatasetDefinitionModel == null) { return(new BadRequestObjectResult("Missing CreateDatasetDefinitionModel details")); } createDatasetDefinitionModel.DatasetDefinitionId = datasetDefinitionId; return(await _definitionService.CreateOrUpdateDatasetDefinition(createDatasetDefinitionModel, Request.GetCorrelationId(), Request.GetUserOrDefault())); }