示例#1
0
        /// <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
            });
        }
        public async Task Get_All_Fundings()
        {
            //Arrange
            fundingServiceMock.Setup(es => es.GetFundings())
            .Returns(() => Task.FromResult(GetFundings(5)));

            FundingController fundingController = new FundingController(fundingServiceMock.Object);

            //Action
            var result = await fundingController.GetAll();

            //Assert
            var objResult   = result.Should().BeOfType <ObjectResult>().Subject;
            var fundingList = objResult.Value.Should().BeOfType <List <FundingModel> >().Subject;

            fundingList.Count().Should().Be(5);
        }
示例#3
0
        /// <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
                                                },
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            });
        }