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
     }));
 }
Esempio n. 4
0
        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,
         }
     });
 }
Esempio n. 7
0
        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>());
 }
Esempio n. 24
0
        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>());
 }
Esempio n. 26
0
 public void MapData(IDataStoreCache cache, IDataStoreContext dataStoreContext, IMessage message, FM70Global albGlobal)
 {
 }
 public void MapFM70Data(IDataStoreCache cache, FM70Global fm70Global) => _fm70Mapper.MapData(cache, fm70Global);