private static TouchpointProviderFundingData TestProvider() { var provider = new TouchpointProviderFundingData { Provider = new TouchpointProvider { UKPRN = 10001647, TouchpointId = "0000000101" }, FundingValues = TestFundingValues() }; return(provider); }
public ICollection <SummarisedActual> Summarise( ICollection <FundingStream> fundingStreams, TouchpointProviderFundingData provider, ICollection <FcsContractAllocation> allocations, ICollection <CollectionPeriod> collectionPeriods) { var summarisedActuals = new List <SummarisedActual>(); foreach (var fs in fundingStreams) { var fundingStreamSummarisedActuals = Summarise(fs, provider, allocations, collectionPeriods); summarisedActuals.AddRange(fundingStreamSummarisedActuals); } return(summarisedActuals); }
public ICollection <SummarisedActual> Summarise( FundingStream fundingStream, TouchpointProviderFundingData providerFundingData, ICollection <FcsContractAllocation> allocations, ICollection <CollectionPeriod> collectionPeriods) { var summarisedActuals = new List <SummarisedActual>(); var fcsAllocation = allocations.FirstOrDefault(a => a.DeliveryUkprn == providerFundingData.Provider.UKPRN && a.UoPcode.Equals(providerFundingData.Provider.TouchpointId, StringComparison.OrdinalIgnoreCase) && a.FundingStreamPeriodCode.Equals(fundingStream.PeriodCode, StringComparison.OrdinalIgnoreCase)); if (fcsAllocation == null) { return(summarisedActuals); } foreach (var outcomeType in fundingStream.OutcomeTypes) { var fundingValues = providerFundingData .FundingValues .Where(ld => ld.OutcomeType == outcomeType).ToList(); summarisedActuals.AddRange(SummarisePeriods(fundingValues, collectionPeriods)); } return(summarisedActuals .GroupBy(grp => grp.Period) .Select(g => new SummarisedActual { OrganisationId = fcsAllocation.DeliveryOrganisation, UoPCode = fcsAllocation.UoPcode, DeliverableCode = fundingStream.DeliverableLineCode, FundingStreamPeriodCode = fundingStream.PeriodCode, Period = g.Key, ActualValue = Math.Round(g.Sum(x => x.ActualValue), 2), ContractAllocationNumber = fcsAllocation.ContractAllocationNumber, PeriodTypeCode = PeriodTypeCodeConstants.CalendarMonth }).ToList()); }