public void Condense_NullLearners() { var globalOne = new FM70Global() { Learners = null }; var globalTwo = new FM70Global() { Learners = null }; var globalThree = new FM70Global() { Learners = null }; var fundingOutputs = new List <FM70Global>() { globalOne, globalTwo, globalThree, }; var fundingOutput = NewService().Condense(fundingOutputs); fundingOutput.Should().Be(globalOne); fundingOutput.Learners.Should().BeEmpty(); }
public IEnumerable <ESF_LearningDelivery> MapLearningDeliveries(FM70Global fm70Global) { return(fm70Global.Learners.SelectMany(l => l.LearningDeliveries.Select(ld => new ESF_LearningDelivery { UKPRN = fm70Global.UKPRN, LearnRefNumber = l.LearnRefNumber, AimSeqNumber = ld.AimSeqNumber.Value, Achieved = ld.LearningDeliveryValue.Achieved, AddProgCostElig = ld.LearningDeliveryValue.AddProgCostElig, AdjustedAreaCostFactor = ld.LearningDeliveryValue.AdjustedAreaCostFactor, AdjustedPremiumFactor = ld.LearningDeliveryValue.AdjustedPremiumFactor, AdjustedStartDate = ld.LearningDeliveryValue.AdjustedStartDate, AimClassification = ld.LearningDeliveryValue.AimClassification, AimValue = ld.LearningDeliveryValue.AimValue, ApplicWeightFundRate = ld.LearningDeliveryValue.ApplicWeightFundRate, EligibleProgressionOutcomeCode = ld.LearningDeliveryValue.EligibleProgressionOutcomeCode, EligibleProgressionOutcomeType = ld.LearningDeliveryValue.EligibleProgressionOutcomeType, EligibleProgressionOutomeStartDate = ld.LearningDeliveryValue.EligibleProgressionOutomeStartDate, FundStart = ld.LearningDeliveryValue.FundStart, LARSWeightedRate = ld.LearningDeliveryValue.LARSWeightedRate, LatestPossibleStartDate = ld.LearningDeliveryValue.LatestPossibleStartDate, LDESFEngagementStartDate = ld.LearningDeliveryValue.LDESFEngagementStartDate, LearnDelLearnerEmpAtStart = ld.LearningDeliveryValue.LearnDelLearnerEmpAtStart, PotentiallyEligibleForProgression = ld.LearningDeliveryValue.PotentiallyEligibleForProgression, ProgressionEndDate = ld.LearningDeliveryValue.ProgressionEndDate, Restart = ld.LearningDeliveryValue.Restart, WeightedRateFromESOL = ld.LearningDeliveryValue.WeightedRateFromESOL, }))); }
public IEnumerable <ESF_Learner> MapLearners(FM70Global fm70Global) { return(fm70Global.Learners.Select(l => new ESF_Learner { UKPRN = fm70Global.UKPRN, LearnRefNumber = l.LearnRefNumber })); }
public void Condense_EmptyCollection() { var global = new FM70Global { UKPRN = 1 }; NewService().Condense(Enumerable.Empty <FM70Global>(), 1, "2021").Should().BeEquivalentTo(global); }
public IEnumerable <ESF_global> MapGlobals(FM70Global fm70Global) { return(new List <ESF_global>() { new ESF_global { UKPRN = fm70Global.UKPRN, RulebaseVersion = fm70Global.RulebaseVersion, } }); }
public List <ESF_global> BuildGlobals(FM70Global fm70Global, int ukprn) { return(new List <ESF_global>() { new ESF_global { UKPRN = ukprn, RulebaseVersion = fm70Global.RulebaseVersion, } }); }
public async Task <string> Process(FundingDto actorModel, CancellationToken cancellationToken) { FM70Global results = RunFunding(actorModel, cancellationToken); actorModel = null; GCSettings.LargeObjectHeapCompactionMode = GCLargeObjectHeapCompactionMode.CompactOnce; GC.Collect(GC.MaxGeneration, GCCollectionMode.Forced, true, true); return(BuildFundingOutput(results)); }
public void MapData(IDataStoreCache cache, FM70Global fm70Global) { var learners = fm70Global?.Learners; if (learners == null) { return; } var ukprn = fm70Global.UKPRN; PopulateDataStoreCache(cache, learners, fm70Global, ukprn); }
public void Condense() { var learnerOne = new FM70Learner(); var learnerTwo = new FM70Learner(); var learnerThree = new FM70Learner(); var learnerFour = new FM70Learner(); var learnerFive = new FM70Learner(); var learnerSix = new FM70Learner(); var globalOne = new FM70Global() { Learners = new List <FM70Learner>() { learnerOne, learnerTwo, }, }; var globalTwo = new FM70Global() { Learners = new List <FM70Learner> { learnerThree, learnerFour, }, }; var globalThree = new FM70Global() { Learners = new List <FM70Learner> { learnerFive, learnerSix, }, }; var fundingOutputs = new List <FM70Global>() { globalOne, globalTwo, globalThree, }; var fundingOutput = NewService().Condense(fundingOutputs); fundingOutput.Should().Be(globalOne); fundingOutput.Learners.Should().HaveCount(6); fundingOutput.Learners.Should().Contain(new[] { learnerOne, learnerTwo, learnerThree, learnerFour, learnerFive, learnerSix }); }
public async Task Execute() { var cancellationToken = CancellationToken.None; var fundingServiceContextMock = new Mock <IFundingServiceContext>(); fundingServiceContextMock.Setup(f => f.JobId).Returns(1); fundingServiceContextMock.Setup(f => f.Container).Returns("Container"); fundingServiceContextMock.Setup(f => f.FundingFm36OutputKey).Returns("Key"); fundingServiceContextMock.Setup(f => f.Ukprn).Returns(12345678); fundingServiceContextMock.Setup(f => f.Year).Returns("1920"); IEnumerable <FundingDto> fundingActorDtos = new List <FundingDto> { new FundingDto() }; var FM70Actor = new Mock <IFM70Actor>(); var condenserOutput = new FM70Global(); var jsonSerializationServiceMock = new Mock <IJsonSerializationService>(); var fundingActorProviderMock = new Mock <IActorProvider <IFM70Actor> >(); var filePersistanceServiceMock = new Mock <IFilePersistanceService>(); var fundingOutputCondenserServiceMock = new Mock <IFundingOutputCondenserService <FM70Global> >(); var loggerMock = new Mock <ILogger>(); FM70Actor.Setup(a => a.Process(fundingActorDtos.FirstOrDefault(), cancellationToken)).Returns(() => Task <string> .Factory.StartNew(() => "string")); jsonSerializationServiceMock.Setup(sm => sm.Deserialize <FM70Global>(It.IsAny <string>())).Returns(new FM70Global()).Verifiable(); fundingActorProviderMock.Setup(pm => pm.Provide()).Returns(FM70Actor.Object).Verifiable(); filePersistanceServiceMock.Setup(sm => sm.PersistAsync(fundingServiceContextMock.Object.FundingFm70OutputKey, fundingServiceContextMock.Object.Container, condenserOutput, cancellationToken)).Returns(Task.CompletedTask).Verifiable(); fundingOutputCondenserServiceMock.Setup(sm => sm.Condense( It.IsAny <IEnumerable <FM70Global> >(), fundingServiceContextMock.Object.Ukprn, fundingServiceContextMock.Object.Year)).Returns(condenserOutput).Verifiable(); await NewTask( jsonSerializationServiceMock.Object, fundingActorProviderMock.Object, filePersistanceServiceMock.Object, fundingOutputCondenserServiceMock.Object, loggerMock.Object, "FM70Actor").Execute(fundingActorDtos, fundingServiceContextMock.Object, cancellationToken); fundingActorProviderMock.VerifyAll(); filePersistanceServiceMock.VerifyAll(); fundingOutputCondenserServiceMock.VerifyAll(); }
public FM70Data MapData(FM70Global fm70Global) { var data = new FM70Data(); if (fm70Global.Learners != null) { data.Globals = MapGlobals(fm70Global).ToList(); data.Learners = MapLearners(fm70Global).ToList(); data.DPOutcomes = MapDPOutcomes(fm70Global).ToList(); data.LearningDeliveries = MapLearningDeliveries(fm70Global).ToList(); data.LearningDeliveryDeliverables = MapLearningDeliveryDeliverables(fm70Global).ToList(); data.LearningDeliveryDeliverablePeriods = MapLearningDeliveryDeliverablePeriods(fm70Global).ToList(); data.LearningDeliveryDeliverablePeriodisedValues = MapLearningDeliveryDeliverablePeriodisedValues(fm70Global).ToList(); } return(data); }
public IEnumerable <ESF_DPOutcome> MapDPOutcomes(FM70Global fm70Global) { return(fm70Global.Learners.SelectMany(l => l.LearnerDPOutcomes.Select(dp => new ESF_DPOutcome { UKPRN = fm70Global.UKPRN, LearnRefNumber = l.LearnRefNumber, OutCode = dp.OutCode, OutcomeDateForProgression = dp.OutcomeDateForProgression, OutStartDate = dp.OutStartDate, OutType = dp.OutType, PotentialESFProgressionType = dp.PotentialESFProgressionType, ProgressionType = dp.ProgressionType, ReachedThreeMonthPoint = dp.ReachedThreeMonthPoint, ReachedSixMonthPoint = dp.ReachedSixMonthPoint, ReachedTwelveMonthPoint = dp.ReachedTwelveMonthPoint }))); }
public FM70Data MapFM70Data(FM70Global fm70Global) => _fm70Mapper.MapData(fm70Global);
public void MapData(IDataStoreCache cache, FM70Global fm70Global) { }
public IEnumerable <ESF_global> MapGlobals(FM70Global fm70Global) { return(new List <ESF_global>()); }
public IEnumerable <ESF_Learner> MapLearners(FM70Global fm70Global) { return(new List <ESF_Learner>()); }
public IEnumerable <ESF_DPOutcome> MapDPOutcomes(FM70Global fm70Global) { return(new List <ESF_DPOutcome>()); }
public void MapESFFundingData(IDataStoreCache cache, IDataStoreContext dataStoreContext, IMessage message, FM70Global fm70Global) => _esfFundingMapper.MapData(cache, dataStoreContext, message, fm70Global);
public IEnumerable <ESF_LearningDeliveryDeliverable_PeriodisedValue> MapLearningDeliveryDeliverablePeriodisedValues(FM70Global fm70Global) { var periodisedValues = fm70Global.Learners.SelectMany(l => l.LearningDeliveries .SelectMany(ld => ld.LearningDeliveryDeliverableValues.Select(ldd => new FundModelESFLearningDeliveryPeriodisedValue <List <LearningDeliveryDeliverablePeriodisedValue> >(fm70Global.UKPRN, l.LearnRefNumber, ld.AimSeqNumber.Value, ldd.DeliverableCode, ldd.LearningDeliveryDeliverablePeriodisedValues)))); return (periodisedValues.SelectMany(pv => pv.LearningDeliveryPeriodisedValue .Select(p => new ESF_LearningDeliveryDeliverable_PeriodisedValue { UKPRN = pv.Ukprn, AimSeqNumber = pv.AimSeqNumber, LearnRefNumber = pv.LearnRefNumber, DeliverableCode = pv.EsfDeliverableCode, AttributeName = p.AttributeName, Period_1 = p.Period1, Period_2 = p.Period2, Period_3 = p.Period3, Period_4 = p.Period4, Period_5 = p.Period5, Period_6 = p.Period6, Period_7 = p.Period7, Period_8 = p.Period8, Period_9 = p.Period9, Period_10 = p.Period10, Period_11 = p.Period11, Period_12 = p.Period12 }))); }
public IEnumerable <ESF_LearningDeliveryDeliverable_Period> MapLearningDeliveryDeliverablePeriods(FM70Global fm70Global) { var periodisedValues = fm70Global.Learners.SelectMany(l => l.LearningDeliveries .SelectMany(ld => ld.LearningDeliveryDeliverableValues.Select(ldd => new FundModelESFLearningDeliveryPeriodisedValue <List <LearningDeliveryDeliverablePeriodisedValue> >(fm70Global.UKPRN, l.LearnRefNumber, ld.AimSeqNumber.Value, ldd.DeliverableCode, ldd.LearningDeliveryDeliverablePeriodisedValues)))); var learningDeliveryDeliverablePeriods = new List <ESF_LearningDeliveryDeliverable_Period>(); for (var i = 1; i < 13; i++) { learningDeliveryDeliverablePeriods.AddRange( periodisedValues.Select(pv => new ESF_LearningDeliveryDeliverable_Period { UKPRN = pv.Ukprn, LearnRefNumber = pv.LearnRefNumber, AimSeqNumber = pv.AimSeqNumber, DeliverableCode = pv.EsfDeliverableCode, Period = i, AchievementEarnings = PeriodisedValueHelper.GetPeriodValue <LearningDeliveryDeliverablePeriodisedValue, decimal?>(pv.LearningDeliveryPeriodisedValue.FirstOrDefault(a => a.AttributeName == FM70Constants.AchievementEarnings), i), AdditionalProgCostEarnings = PeriodisedValueHelper.GetPeriodValue <LearningDeliveryDeliverablePeriodisedValue, decimal?>(pv.LearningDeliveryPeriodisedValue.FirstOrDefault(a => a.AttributeName == FM70Constants.AdditionalProgCostEarnings), i), DeliverableVolume = PeriodisedValueHelper.GetPeriodValue <LearningDeliveryDeliverablePeriodisedValue, long?>(pv.LearningDeliveryPeriodisedValue.FirstOrDefault(a => a.AttributeName == FM70Constants.DeliverableVolume), i), ProgressionEarnings = PeriodisedValueHelper.GetPeriodValue <LearningDeliveryDeliverablePeriodisedValue, decimal?>(pv.LearningDeliveryPeriodisedValue.FirstOrDefault(a => a.AttributeName == FM70Constants.ProgressionEarnings), i), ReportingVolume = PeriodisedValueHelper.GetPeriodValue <LearningDeliveryDeliverablePeriodisedValue, int?>(pv.LearningDeliveryPeriodisedValue.FirstOrDefault(a => a.AttributeName == FM70Constants.ReportingVolume), i), StartEarnings = PeriodisedValueHelper.GetPeriodValue <LearningDeliveryDeliverablePeriodisedValue, decimal?>(pv.LearningDeliveryPeriodisedValue.FirstOrDefault(a => a.AttributeName == FM70Constants.StartEarnings), i), })); } return(learningDeliveryDeliverablePeriods); }
public IEnumerable <ESF_LearningDeliveryDeliverable> MapLearningDeliveryDeliverables(FM70Global fm70Global) { return(fm70Global.Learners.SelectMany(l => l.LearningDeliveries .SelectMany(ld => ld.LearningDeliveryDeliverableValues.Select(ldd => new ESF_LearningDeliveryDeliverable { UKPRN = fm70Global.UKPRN, LearnRefNumber = l.LearnRefNumber, AimSeqNumber = ld.AimSeqNumber.Value, DeliverableCode = ldd.DeliverableCode, DeliverableUnitCost = ldd.DeliverableUnitCost })))); }
private void PopulateDataStoreCache(IDataStoreCache cache, IEnumerable <FM70Learner> learners, FM70Global fm70Global, int ukprn) { cache.AddRange(BuildGlobals(fm70Global, ukprn)); learners.NullSafeForEach(learner => { var learnRefNumber = learner.LearnRefNumber; cache.Add(BuildLearner(ukprn, learnRefNumber)); learner.LearnerDPOutcomes.NullSafeForEach(learnerDp => cache.Add(BuildDPOutcome(learnerDp, ukprn, learnRefNumber))); learner.LearningDeliveries.NullSafeForEach(learningDelivery => { var aimSeqNumber = learningDelivery.AimSeqNumber.Value; cache.Add(BuildLearningDelivery(learningDelivery, ukprn, learnRefNumber)); learningDelivery.LearningDeliveryDeliverableValues.NullSafeForEach(ldd => cache.Add(BuildLearningDeliveryDeliverable(ldd, ukprn, learnRefNumber, aimSeqNumber))); }); }); var learningDeliveryPeriodisedValues = learners.SelectMany(l => l.LearningDeliveries.SelectMany(ld => ld.LearningDeliveryDeliverableValues.Select(ldd => new FundModelESFLearningDeliveryPeriodisedValue <List <LearningDeliveryDeliverablePeriodisedValue> >(ukprn, l.LearnRefNumber, ld.AimSeqNumber.Value, ldd.DeliverableCode, ldd.LearningDeliveryDeliverablePeriodisedValues)))); cache.AddRange(BuildLearningDeliveryDeliverablePeriods(learningDeliveryPeriodisedValues)); learningDeliveryPeriodisedValues.NullSafeForEach(ldpv => ldpv.LearningDeliveryPeriodisedValue.NullSafeForEach(learningDeliveryPeriodisedValue => cache.Add(BuildLearningDeliveryDeliverablePeriodisedValue(learningDeliveryPeriodisedValue, ukprn, ldpv.AimSeqNumber, ldpv.LearnRefNumber, ldpv.EsfDeliverableCode)))); }
public IEnumerable <ESF_LearningDeliveryDeliverable_PeriodisedValue> MapLearningDeliveryDeliverablePeriodisedValues(FM70Global fm70Global) { return(new List <ESF_LearningDeliveryDeliverable_PeriodisedValue>()); }
public void MapData(IDataStoreCache cache, IDataStoreContext dataStoreContext, IMessage message, FM70Global fm70Global) { var learners = fm70Global?.Learners; var ukprn = fm70Global.UKPRN; PopulateDataStoreCache(cache, dataStoreContext, message, learners, ukprn); }
public IEnumerable <ESF_LearningDeliveryDeliverable> MapLearningDeliveryDeliverables(FM70Global fm70Global) { return(new List <ESF_LearningDeliveryDeliverable>()); }
public void MapData(IDataStoreCache cache, IDataStoreContext dataStoreContext, IMessage message, FM70Global albGlobal) { }
public void MapFM70Data(IDataStoreCache cache, FM70Global fm70Global) => _fm70Mapper.MapData(cache, fm70Global);