/// <summary> /// Convert an internal representation of an org into the response object. /// </summary> /// <param name="orgGroup"></param> /// <param name="ukprn"></param> /// <param name="organisationType"></param> /// <returns>An organsation group response objct.</returns> private static OrganisationGroup ConvertToOrganisationGroup(OrgGroup orgGroup, string ukprn, OrganisationType organisationType) { var identifiers = new List <OrganisationIdentifier> { new OrganisationIdentifier { Type = OrganisationIdentifierType.UKPRN, Value = ukprn } }; if (organisationType == OrganisationType.LocalAuthority) { identifiers.Add(new OrganisationIdentifier { Type = OrganisationIdentifierType.LACode, Value = orgGroup.Code }); } return(new OrganisationGroup() { Type = organisationType, Name = orgGroup.Name, SearchableName = FundingController.SanitiseName(orgGroup.Name), Identifiers = identifiers }); }
/// <summary> /// Get provider funding from component parts. /// </summary> /// <param name="provider">A provider object.</param> /// <param name="financialYearPeriod1920">Period data for year1.</param> /// <param name="financialYearPeriod2021">Period data for year2.</param> /// <param name="period">Funding period.</param> /// <param name="stream">Data about a stream.</param> /// <param name="providerType">The type of provider (e.g. NonMaintainedSpecialSchools).</param> /// <param name="code">The code that identifies the provider (e.g. ukprn).</param> /// <returns>A provider funding object.</returns> private static ProviderFunding GetProviderFunding(Provider provider, FundingPeriod financialYearPeriod1920, FundingPeriod financialYearPeriod2021, FundingPeriod period, Stream stream, string providerType, string code) { var ukprn = $"MOCKUKPRN{provider.LaEstablishmentNo}"; var identifiers = new List <OrganisationIdentifier> { new OrganisationIdentifier { Type = OrganisationIdentifierType.UKPRN, Value = ukprn } }; if (providerType != "NonMaintainedSpecialSchools" && providerType != "Academies") { identifiers.Add(new OrganisationIdentifier { Type = OrganisationIdentifierType.LACode, Value = provider.LaEstablishmentNo }); } else { identifiers.Add(new OrganisationIdentifier { Type = OrganisationIdentifierType.URN, Value = code }); identifiers.Add(new OrganisationIdentifier { Type = OrganisationIdentifierType.DfeNumber, Value = code }); } var fundingVersion = "1-0"; return(new ProviderFunding { Id = $"{stream.Code}_{period.Code}_{ukprn}_{fundingVersion}", FundingVersion = fundingVersion.Replace("-", "."), FundingPeriodCode = period.Code, FundingStreamCode = stream.Code, Organisation = new Organisation { Name = provider.Name, SearchableName = FundingController.SanitiseName(provider.Name), OrganisationDetails = new OrganisationDetails() { DateClosed = null, DateOpened = new DateTimeOffset(2012, 12, 2, 0, 0, 0, 0, TimeSpan.Zero), PhaseOfEducation = "PhaseOfEducation", Status = "Open", OpenReason = ProviderOpenReason.NotRecorded, CloseReason = null, TrustName = null, TrustStatus = TrustStatus.NotApplicable, Address = new OrganisationAddress { Postcode = "MOCK POSTCODE", Town = "MOCK TOWN" } }, ProviderType = providerType, ProviderSubType = "Provider SubType", ProviderVersionId = "1.0", Identifiers = identifiers, }, FundingValue = new FundingValue { TotalValue = provider.TotalAllocation, // 16200, // "Maintained Schools" -> F3 FundingValueByDistributionPeriod = new List <FundingValueByDistributionPeriod> { new FundingValueByDistributionPeriod { DistributionPeriodCode = financialYearPeriod1920.Code, Value = provider.OctoberPayment, //9450, // "Maintained Schools" -> G3 FundingLines = new List <FundingLine> { new FundingLine { Name = "Total Allocation", // TemplateLineId = 1, Type = FundingLineType.Payment, Value = provider.OctoberPayment, //9450, // "Maintained Schools" -> G3 ProfilePeriods = new List <FundingLinePeriod> { new FundingLinePeriod // ProfiorPeriods { Occurence = 1, Year = 2019, TypeValue = "October", ProfiledValue = provider.OctoberPayment, //9450, // "Maintained Schools" -> G3 Type = FundingLinePeriodType.CalendarMonth, PeriodCode = financialYearPeriod1920.Code } }, Calculations = new List <Calculation> { new Calculation { Name = "Total Allocation", Type = CalculationType.Cash, TemplateCalculationId = 1, Value = provider.TotalAllocation, //"16200", // "Maintained Schools" ValueFormat = CalculationValueFormat.Currency, FormulaText = "School with pupils with less than 17 eligible pupils (X) = 1000 * X School with pupils with more than 16 eligible pupils (X) =((1 * 16000) + (10 * X))", ReferenceData = new List <ReferenceData> { new ReferenceData { Name = "Eligible pupils", Value = provider.EligiblePupilsCount.ToString(), // "20", // "Maintained Schools" Format = ReferenceDataValueFormat.Number }, } } } } } }, new FundingValueByDistributionPeriod { DistributionPeriodCode = financialYearPeriod2021.Code, Value = 6750, // "Maintained Schools" -> H3 FundingLines = new List <FundingLine> { new FundingLine { Name = "April payment",// "Maintained Schools" TemplateLineId = 2, Type = FundingLineType.Payment, Value = provider.AprilPayment, //6750, // "Maintained Schools" -> H3 ProfilePeriods = new List <FundingLinePeriod> { new FundingLinePeriod { Occurence = 1, Year = 2020, TypeValue = "April", ProfiledValue = provider.AprilPayment, //6750, // "Maintained Schools" -> H3 Type = FundingLinePeriodType.CalendarMonth, PeriodCode = financialYearPeriod2021.Code } }, Calculations = new List <Calculation> { new Calculation { Name = "Total Allocation", Type = CalculationType.Cash, TemplateCalculationId = 1, Value = provider.TotalAllocation, //"16200", // "Maintained Schools" ValueFormat = CalculationValueFormat.Currency, FormulaText = "School with pupils with less than 17 eligible pupils (X) = 1000 * X School with pupils with more than 16 eligible pupils (X) =((1 * 16000) + (10 * X))", ReferenceData = new List <ReferenceData> { new ReferenceData { Name = "Eligible pupils", Value = provider.EligiblePupilsCount.ToString(), // "20", // "Maintained Schools" Format = ReferenceDataValueFormat.Number }, } } } } } } } } }); }