예제 #1
0
        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));
        }
예제 #2
0
        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()));
        }