Example #1
0
 private bool ExcludedDelivery(LearningDelivery learner, IReadOnlyCollection <ILARSLearningDelivery> larsLearningDeliveries)
 {
     return(larsLearningDeliveries?
            .Any(x => x.LearnAimRef.CaseInsensitiveEquals(learner.LearnAimRef) &&
                 x.LARSLearningDeliveryCategories.Any(ldc => _excludedCategories.Contains(ldc.CategoryRef)))
            ?? false);
 }
        public void LearningDeliveryFilter_TrueALBFam()
        {
            var learningDeliveryMock   = new Mock <ILearningDelivery>();
            var learningDeliveryFAM    = new Mock <ILearningDeliveryFAM>();
            var learningDeliveryFAMALB = new Mock <ILearningDeliveryFAM>();

            learningDeliveryMock.SetupGet(ld => ld.FundModel).Returns(99);

            learningDeliveryFAM.SetupGet(fam => fam.LearnDelFAMType).Returns("ADL");
            learningDeliveryFAM.SetupGet(fam => fam.LearnDelFAMCode).Returns("1");

            learningDeliveryFAMALB.SetupGet(fam => fam.LearnDelFAMType).Returns("ALB");

            var learningDeliveryFAMs = new List <ILearningDeliveryFAM>()
            {
                learningDeliveryFAM.Object,
                learningDeliveryFAMALB.Object,
            };

            var albLearningDelivery = new LearningDelivery()
            {
                LearningDeliveryValue = new LearningDeliveryValue()
            };

            learningDeliveryMock.SetupGet(ld => ld.LearningDeliveryFAMs).Returns(learningDeliveryFAMs);

            NewBuilder().Filter(learningDeliveryMock.Object, albLearningDelivery).Should().BeTrue();
        }
Example #3
0
        public IDataEntity BuildLearningDeliveryDataEntity(LearningDelivery learningDelivery)
        {
            var larsLearningDelivery = _larsReferenceDataService.LARSLearningDeliveryForLearnAimRef(learningDelivery.LearnAimRef);
            var sfaPostCodeAreaCost  = _postcodesReferenceDataService.SFAAreaCostsForPostcode(learningDelivery.DelLocPostCode);

            var learningDeliveryFamsEntities = learningDelivery?.LearningDeliveryFAMs?.Select(BuildLearningDeliveryFAM) ?? Enumerable.Empty <IDataEntity>();
            var larsFundingEntities          = larsLearningDelivery?.LARSFundings?.Select(BuildLARSFunding) ?? Enumerable.Empty <IDataEntity>();
            var sfaAreaCostEntities          = sfaPostCodeAreaCost?.Select(BuildSFAPostcodeAreaCost) ?? Enumerable.Empty <IDataEntity>();

            var entity = new DataEntity(Attributes.EntityLearningDelivery)
            {
                Attributes = new Dictionary <string, IAttributeData>()
                {
                    { Attributes.AimSeqNumber, new AttributeData(learningDelivery.AimSeqNumber) },
                    { Attributes.CompStatus, new AttributeData(learningDelivery.CompStatus) },
                    { Attributes.LearnActEndDate, new AttributeData(learningDelivery.LearnActEndDate) },
                    { Attributes.LearnAimRefType, new AttributeData(larsLearningDelivery.LearnAimRefType) },
                    { Attributes.LearnDelFundModel, new AttributeData(learningDelivery.FundModel) },
                    { Attributes.LearnPlanEndDate, new AttributeData(learningDelivery.LearnPlanEndDate) },
                    { Attributes.LearnStartDate, new AttributeData(learningDelivery.LearnStartDate) },
                    { Attributes.NotionalNVQLevelv2, new AttributeData(larsLearningDelivery.NotionalNVQLevelv2) },
                    { Attributes.OrigLearnStartDate, new AttributeData(learningDelivery.OrigLearnStartDate) },
                    { Attributes.OtherFundAdj, new AttributeData(learningDelivery.OtherFundAdj) },
                    { Attributes.Outcome, new AttributeData(learningDelivery.Outcome) },
                    { Attributes.PriorLearnFundAdj, new AttributeData(learningDelivery.PriorLearnFundAdj) },
                    { Attributes.RegulatedCreditValue, new AttributeData(larsLearningDelivery.RegulatedCreditValue) },
                }
            };

            entity.AddChildren(learningDeliveryFamsEntities);
            entity.AddChildren(larsFundingEntities);
            entity.AddChildren(sfaAreaCostEntities);

            return(entity);
        }
        public ProviderMonitorings BuildProviderMonitorings(Learner learner, LearningDelivery learningDelivery)
        {
            if (learner?.ProviderSpecLearnMonitorings == null && learningDelivery?.ProviderSpecDeliveryMonitorings == null)
            {
                return(null);
            }

            var providerMonitorings = new ProviderMonitorings();

            if (learner?.ProviderSpecLearnMonitorings != null)
            {
                providerMonitorings.LearnerA = GetProviderMonForOccur(learner.ProviderSpecLearnMonitorings, ProviderMonitorings.OccurA);
                providerMonitorings.LearnerB = GetProviderMonForOccur(learner.ProviderSpecLearnMonitorings, ProviderMonitorings.OccurB);
            }

            if (learningDelivery?.ProviderSpecDeliveryMonitorings != null)
            {
                providerMonitorings.LearningDeliveryA = GetProviderMonForOccur(learningDelivery.ProviderSpecDeliveryMonitorings, ProviderMonitorings.OccurA);
                providerMonitorings.LearningDeliveryB = GetProviderMonForOccur(learningDelivery.ProviderSpecDeliveryMonitorings, ProviderMonitorings.OccurB);
                providerMonitorings.LearningDeliveryC = GetProviderMonForOccur(learningDelivery.ProviderSpecDeliveryMonitorings, ProviderMonitorings.OccurC);
                providerMonitorings.LearningDeliveryD = GetProviderMonForOccur(learningDelivery.ProviderSpecDeliveryMonitorings, ProviderMonitorings.OccurD);
            }

            return(providerMonitorings);
        }
        internal IlrLearningDeliveryBuilder(IlrLearnerBuilder parentBuilder)
            : base(parentBuilder.Submission, parentBuilder.Learner)
        {
            var tnp1 = Defaults.AgreedPrice * 0.8m;
            var tnp2 = Defaults.AgreedPrice - tnp1;

            Delivery = new LearningDelivery
            {
                StandardCode          = Defaults.StandardCode,
                FrameworkCode         = Defaults.FrameworkCode,
                ProgrammeType         = Defaults.ProgrammeType,
                PathwayCode           = Defaults.PathwayCode,
                ActualStartDate       = Defaults.ActualStartDate,
                PlannedEndDate        = Defaults.PlannedEndDate,
                ActualEndDate         = Defaults.ActualEndDate,
                TrainingCost          = tnp1,
                EndpointAssesmentCost = tnp2,
                ActFamCodeValue       = Defaults.ActFamCodeValue
            };
            var deliveries = new List <LearningDelivery>(parentBuilder.Learner.LearningDeliveries)
            {
                Delivery
            };

            parentBuilder.Learner.LearningDeliveries = deliveries.ToArray();
        }
        public static ContractType[] GetContractTypesForLearningDeliveries(this LearningDelivery learningDelivery)
        {
            if (learningDelivery.LearningDeliveryPeriodisedTextValues == null)
            {
                return(new ContractType[0]);
            }

            var periodisedTextValues = learningDelivery
                                       .LearningDeliveryPeriodisedTextValues
                                       .Where(l => l.AttributeName == "LearnDelContType").ToList();

            if (!periodisedTextValues.Any())
            {
                return(new ContractType[0]);
            }

            const byte earningPeriods = 12;

            var contractTypes = new ContractType[earningPeriods];

            for (byte i = 1; i <= earningPeriods; i++)
            {
                var periodValues = periodisedTextValues.Select(p => p.GetPeriodTextValue(i)).ToArray();
                var periodValue  = GetContractType(periodValues[0]);

                contractTypes[i - 1] = periodValue;
            }

            return(contractTypes);
        }
        public AppsIndicativeEarningsReportModel BuildLineModel(
            ILearner learner,
            ILearningDelivery learningDelivery,
            LearningDelivery fm36DeliveryAttribute,
            PriceEpisode fm36EpisodeAttribute,
            LARSLearningDelivery larsLearningDelivery,
            string notionalEndLevel,
            bool earliestEpisode,
            bool hasPriceEpisodes)
        {
            DateTime employmentStatusDate = learner.LearnerEmploymentStatuses?
                                            .Where(x => x.DateEmpStatApp <= learningDelivery.LearnStartDate).Select(x => x.DateEmpStatApp)
                                            .DefaultIfEmpty(DateTime.MinValue).Max() ?? DateTime.MinValue;

            var model = new AppsIndicativeEarningsReportModel
            {
                Learner = learner,
                ProviderSpecLearnerMonitoring =
                    _ilrModelMapper.MapProviderSpecLearnerMonitorings(learner.ProviderSpecLearnerMonitorings),
                ProviderSpecDeliveryMonitoring =
                    _ilrModelMapper.MapProviderSpecDeliveryMonitorings(learningDelivery
                                                                       .ProviderSpecDeliveryMonitorings),
                LearningDeliveryFAMs = _ilrModelMapper.MapLearningDeliveryFAMs(learningDelivery.LearningDeliveryFAMs),
                LearningDelivery     = learningDelivery,
                LarsLearningDelivery = larsLearningDelivery,
                EmploymentStatus     =
                    learner.LearnerEmploymentStatuses?.SingleOrDefault(x => x.DateEmpStatApp == employmentStatusDate),
                PriceEpisodeValues       = fm36EpisodeAttribute?.PriceEpisodeValues,
                StandardNotionalEndLevel = notionalEndLevel
            };

            model.EmpStatusMonitoringSmallEmployer = model.EmploymentStatus?.EmploymentStatusMonitorings
                                                     ?.FirstOrDefault(x => string.Equals(x.ESMType, ReportingConstants.EmploymentStatusMonitoringTypeSEM,
                                                                                         StringComparison.OrdinalIgnoreCase))?.ESMCode;
            model.FundingLineType      = GetFundingType(fm36DeliveryAttribute?.LearningDeliveryValues, fm36EpisodeAttribute?.PriceEpisodeValues);
            model.Fm36LearningDelivery = fm36DeliveryAttribute?.LearningDeliveryValues;

            if (learningDelivery?.LearningDeliveryFAMs != null)
            {
                CalculateApprenticeshipContractTypeFields(
                    learningDelivery,
                    model,
                    fm36DeliveryAttribute,
                    fm36EpisodeAttribute,
                    hasPriceEpisodes);
            }

            if (earliestEpisode || !hasPriceEpisodes)
            {
                CalculateAppFinTotals(model, learningDelivery);
            }

            var isMathsEngLearningDelivery = fm36DeliveryAttribute?.LearningDeliveryValues?.LearnDelMathEng ?? false;

            model.PeriodisedValues = BuildPeriodisedValuesModel(fm36EpisodeAttribute?.PriceEpisodePeriodisedValues,
                                                                fm36DeliveryAttribute?.LearningDeliveryPeriodisedValues, isMathsEngLearningDelivery);
            return(model);
        }
Example #8
0
 private LearningDelivery GetRestartDelivery(LearningDelivery breakLearningDelivery, Learner learner)
 {
     return(learner?.LearningDeliveries?.FirstOrDefault(ld => ld.LearnAimRef.CaseInsensitiveEquals(breakLearningDelivery.LearnAimRef) &&
                                                        ld.ProgType == breakLearningDelivery.ProgType &&
                                                        ld.StdCode == breakLearningDelivery.StdCode &&
                                                        ld.FworkCode == breakLearningDelivery.FworkCode &&
                                                        HasRestartFAM(ld.LearningDeliveryFAMs) &&
                                                        WithMatchingStartDates(breakLearningDelivery, ld)));
 }
Example #9
0
        private void AddNewLearningDelivery()
        {
            LearningDelivery ld = _learner.CreateLearningDelivery();

            ld.IsSelected = true;
            LearningDeliveryItemsCV.MoveCurrentTo(ld);
            LearningDeliveryItemsCV.Refresh();
            OnPropertyChanged("LearningDeliveryItemsCV");
        }
 public bool IlrLearningDeliveryRecordMatch(LearningDelivery learningDelivery, AppsCoInvestmentRecordKey record)
 {
     return(learningDelivery.ProgType == record.ProgrammeType &&
            learningDelivery.StdCode == record.StandardCode &&
            learningDelivery.FworkCode == record.FrameworkCode &&
            learningDelivery.PwayCode == record.PathwayCode &&
            learningDelivery.LearnStartDate == record.LearningStartDate &&
            learningDelivery.LearnAimRef.CaseInsensitiveEquals(record.LearningAimReference));
 }
        public void LearningDeliveryFilter_False_NullAlbLearningDelivery()
        {
            var learningDeliveryMock = new Mock <ILearningDelivery>();

            learningDeliveryMock.SetupGet(ld => ld.LearningDeliveryFAMs).Returns(new List <ILearningDeliveryFAM>());

            LearningDelivery albLearningDelivery = null;

            NewBuilder().Filter(learningDeliveryMock.Object, albLearningDelivery).Should().BeFalse();
        }
 public bool HasLdm356Or361(LearningDelivery learningDelivery)
 {
     return(learningDelivery?
            .LearningDeliveryFams?
            .Any(
                fam =>
                fam.Type.CaseInsensitiveEquals(LearnDelFamTypeConstants.LDM) &&
                (fam.Code == LearnDelFamCodeConstants.Code356 || fam.Code == LearnDelFamCodeConstants.Code361))
            ?? false);
 }
 private bool HasRestartDelivery(LearningDelivery withdrawnLearningDelivery, Learner withdrawnLearner, IReadOnlyCollection <Learner> learners)
 {
     return(learners.Where(l =>
                           (l.LearnRefNumber == withdrawnLearner.LearnRefNumber) ||
                           (l.PrevLearnRefNumber == withdrawnLearner.LearnRefNumber))
            .SelectMany(l => l.LearningDeliveries.Where(ld =>
                                                        ld.ProgType == withdrawnLearningDelivery.ProgType &&
                                                        ld.StdCode == withdrawnLearningDelivery.StdCode &&
                                                        ld.FworkCode == withdrawnLearningDelivery.FworkCode &&
                                                        ld.LearnStartDate >= withdrawnLearningDelivery.LearnActEndDate)).Any());
 }
        private bool WithMatchingStartDates(LearningDelivery breakLearningDelivery, LearningDelivery learningDelivery)
        {
            if (learningDelivery.OrigLearnStartDate == null)
            {
                return(false);
            }

            return((learningDelivery.OrigLearnStartDate == breakLearningDelivery.LearnStartDate ||
                    learningDelivery.OrigLearnStartDate == breakLearningDelivery.OrigLearnStartDate) &&
                   learningDelivery.LearnStartDate >= breakLearningDelivery.LearnActEndDate);
        }
Example #15
0
        public IDataEntity BuildLearningDeliveryDataEntity(LearningDelivery learningDelivery)
        {
            var larsLearningDelivery = _larsReferenceDataService.LARSLearningDeliveryForLearnAimRef(learningDelivery.LearnAimRef);

            var larsFramework = larsLearningDelivery.LARSFrameworks?
                                .Where(lf => lf.FworkCode == learningDelivery.FworkCode &&
                                       lf.ProgType == learningDelivery.ProgType &&
                                       lf.PwayCode == learningDelivery.PwayCode).FirstOrDefault();

            var sfaAreaCost = _postcodesReferenceDataService.SFAAreaCostsForPostcode(learningDelivery.DelLocPostCode);

            var learningDeliveryFamsEntities         = learningDelivery?.LearningDeliveryFAMs?.Select(BuildLearningDeliveryFAM) ?? Enumerable.Empty <IDataEntity>();
            var larsAnnualValueEntities              = larsLearningDelivery?.LARSAnnualValues?.Select(BuildLARSAnnualValue) ?? Enumerable.Empty <IDataEntity>();
            var larsLearningDeliveryCategoryEntities = larsLearningDelivery?.LARSLearningDeliveryCategories?.Select(BuildLARSLearningDeliveryCategories) ?? Enumerable.Empty <IDataEntity>();
            var sfaAreaCostEntities = sfaAreaCost?.Select(BuildSFAAreaCost) ?? Enumerable.Empty <IDataEntity>();
            var larsFundingEntities = larsLearningDelivery?.LARSFundings?.Select(BuildLARSFunding) ?? Enumerable.Empty <IDataEntity>();

            var entity = new DataEntity(Attributes.EntityLearningDelivery)
            {
                Attributes = new Dictionary <string, IAttributeData>()
                {
                    { Attributes.AchDate, new AttributeData(learningDelivery.AchDate) },
                    { Attributes.AddHours, new AttributeData(learningDelivery.AddHours) },
                    { Attributes.AimSeqNumber, new AttributeData(learningDelivery.AimSeqNumber) },
                    { Attributes.AimType, new AttributeData(learningDelivery.AimType) },
                    { Attributes.CompStatus, new AttributeData(learningDelivery.CompStatus) },
                    { Attributes.DelLocPostCode, new AttributeData(learningDelivery.DelLocPostCode) },
                    { Attributes.EmpOutcome, new AttributeData(learningDelivery.EmpOutcome) },
                    { Attributes.EnglandFEHEStatus, new AttributeData(larsLearningDelivery.EnglandFEHEStatus) },
                    { Attributes.EnglPrscID, new AttributeData(larsLearningDelivery.EnglPrscID) },
                    { Attributes.FworkCode, new AttributeData(learningDelivery.FworkCode) },
                    { Attributes.FrameworkCommonComponent, new AttributeData(larsLearningDelivery.FrameworkCommonComponent) },
                    { Attributes.FrameworkComponentType, new AttributeData(larsFramework?.LARSFrameworkAim?.FrameworkComponentType) },
                    { Attributes.FundModel, new AttributeData(learningDelivery.FundModel) },
                    { Attributes.LearnActEndDate, new AttributeData(learningDelivery.LearnActEndDate) },
                    { Attributes.LearnPlanEndDate, new AttributeData(learningDelivery.LearnPlanEndDate) },
                    { Attributes.LearnStartDate, new AttributeData(learningDelivery.LearnStartDate) },
                    { Attributes.OrigLearnStartDate, new AttributeData(learningDelivery.OrigLearnStartDate) },
                    { Attributes.OtherFundAdj, new AttributeData(learningDelivery.OtherFundAdj) },
                    { Attributes.Outcome, new AttributeData(learningDelivery.Outcome) },
                    { Attributes.PriorLearnFundAdj, new AttributeData(learningDelivery.PriorLearnFundAdj) },
                    { Attributes.ProgType, new AttributeData(learningDelivery.ProgType) },
                    { Attributes.PwayCode, new AttributeData(learningDelivery.PwayCode) }
                }
            };

            entity.AddChildren(learningDeliveryFamsEntities);
            entity.AddChildren(larsAnnualValueEntities);
            entity.AddChildren(larsLearningDeliveryCategoryEntities);
            entity.AddChildren(sfaAreaCostEntities);
            entity.AddChildren(larsFundingEntities);

            return(entity);
        }
        public void LearningDeliveryFilter_False_NullLearningDelivery()
        {
            ILearningDelivery learningDelivery = null;

            var albLearningDelivery = new LearningDelivery()
            {
                LearningDeliveryValue = new LearningDeliveryValue()
            };

            NewBuilder().Filter(learningDelivery, albLearningDelivery).Should().BeFalse();
        }
        private LearningDelivery BuildLearningDelivery(Dictionary <string, LearningDelivery> learningDeliveries, dynamic v)
        {
            LearningDelivery ld = new LearningDelivery()
            {
                LearnAimRef = v.Value.LearningDelivery.LearnAimRef,
                FrameworkCommonComponent = v.Value.LearningDelivery.FrameworkCommonComponent
            };

            learningDeliveries.Add(ld.LearnAimRef, ld);
            return(ld);
        }
Example #18
0
        public IList <SummaryOfFm35FundingModel> BuildModel(LearningDelivery fundLineData)
        {
            SummaryOfFm35FundingModel[] summaryOfFm35Funding = new SummaryOfFm35FundingModel[12];
            decimal[] onProgrammes          = new decimal[12];
            decimal[] balancing             = new decimal[12];
            decimal[] jobOutcomeAchievement = new decimal[12];
            decimal[] aimAchievement        = new decimal[12];
            decimal[] learningSupport       = new decimal[12];

            foreach (LearningDeliveryPeriodisedValue learningDeliveryPeriodisedValue in fundLineData.LearningDeliveryPeriodisedValues)
            {
                if (string.Equals(learningDeliveryPeriodisedValue.AttributeName, Constants.Fm35OnProgrammeAttributeName, StringComparison.OrdinalIgnoreCase))
                {
                    BuildValues(learningDeliveryPeriodisedValue, ref onProgrammes);
                }
                else if (string.Equals(learningDeliveryPeriodisedValue.AttributeName, Constants.Fm35BalancingAttributeName, StringComparison.OrdinalIgnoreCase))
                {
                    BuildValues(learningDeliveryPeriodisedValue, ref balancing);
                }
                else if (string.Equals(learningDeliveryPeriodisedValue.AttributeName, Constants.Fm35JobOutcomeAchievementAttributeName, StringComparison.OrdinalIgnoreCase))
                {
                    BuildValues(learningDeliveryPeriodisedValue, ref jobOutcomeAchievement);
                }
                else if (string.Equals(learningDeliveryPeriodisedValue.AttributeName, Constants.Fm35AimAchievementAttributeName, StringComparison.OrdinalIgnoreCase))
                {
                    BuildValues(learningDeliveryPeriodisedValue, ref aimAchievement);
                }
                else if (string.Equals(learningDeliveryPeriodisedValue.AttributeName, Constants.Fm35LearningSupportAttributeName, StringComparison.OrdinalIgnoreCase))
                {
                    BuildValues(learningDeliveryPeriodisedValue, ref learningSupport);
                }
            }

            for (int i = 0; i < 12; i++)
            {
                decimal totalAchievement = jobOutcomeAchievement[i] + aimAchievement[i];
                summaryOfFm35Funding[i] = new SummaryOfFm35FundingModel
                {
                    FundingLineType       = fundLineData.LearningDeliveryValue.FundLine,
                    Period                = i + 1,
                    OnProgramme           = onProgrammes[i],
                    Balancing             = balancing[i],
                    JobOutcomeAchievement = jobOutcomeAchievement[i],
                    AimAchievement        = aimAchievement[i],
                    TotalAchievement      = totalAchievement,
                    LearningSupport       = learningSupport[i],
                    Total = onProgrammes[i] + balancing[i] + learningSupport[i] + totalAchievement
                };
            }

            return(summaryOfFm35Funding);
        }
Example #19
0
        public LearnerEmploymentStatus GetLearnerEmploymentStatus(Learner learner, LearningDelivery learningDelivery)
        {
            if (learner?.LearnerEmploymentStatuses == null || learningDelivery == null)
            {
                return(null);
            }

            return(learner
                   .LearnerEmploymentStatuses
                   .Where(les => les.DateEmpStatApp <= learningDelivery.LearnStartDate)
                   .OrderByDescending(les => les.DateEmpStatApp)
                   .FirstOrDefault());
        }
        public void LearningDeliveryFilter_False_NullLearningDeliveryFams()
        {
            var learningDeliveryMock = new Mock <ILearningDelivery>();

            learningDeliveryMock.SetupGet(ld => ld.LearningDeliveryFAMs).Returns(null as IReadOnlyCollection <ILearningDeliveryFAM>);

            var albLearningDelivery = new LearningDelivery()
            {
                LearningDeliveryValue = new LearningDeliveryValue()
            };

            NewBuilder().Filter(learningDeliveryMock.Object, albLearningDelivery).Should().BeFalse();
        }
        public IDataEntity BuildLearningDeliveryDataEntity(LearningDelivery learningDelivery)
        {
            var larsLearningDelivery = _larsReferenceDataService.LARSLearningDeliveryForLearnAimRef(learningDelivery.LearnAimRef);
            var larsStandard         = _larsReferenceDataService.LARSStandardForStandardCode(learningDelivery.StdCode);

            var larsFramework = larsLearningDelivery.LARSFrameworks?
                                .Where(lf => lf.FworkCode == learningDelivery.FworkCode &&
                                       lf.ProgType == learningDelivery.ProgType &&
                                       lf.PwayCode == learningDelivery.PwayCode).FirstOrDefault();

            var learningDeliveryFamsEntities         = learningDelivery?.LearningDeliveryFAMs?.Select(BuildLearningDeliveryFAM) ?? Enumerable.Empty <IDataEntity>();
            var larsFundingEntities                  = larsLearningDelivery?.LARSFundings?.Select(BuildLARSFunding) ?? Enumerable.Empty <IDataEntity>();
            var appFinRecordEntities                 = learningDelivery?.AppFinRecords?.Select(BuildApprenticeshipFinancialRecord) ?? Enumerable.Empty <IDataEntity>();
            var larsStandardCommonComponentEntities  = larsStandard?.LARSStandardCommonComponents?.Select(BuildLARSStandardCommonComponent) ?? Enumerable.Empty <IDataEntity>();
            var larsStandardAppFundingEntities       = larsStandard?.LARSStandardApprenticeshipFundings?.Select(BuildLARSStandardApprenticeshipFunding) ?? Enumerable.Empty <IDataEntity>();
            var larsFrameworkCommonComponentEntities = larsFramework?.LARSFrameworkCommonComponents?.Select(BuildLARSFrameworkCommonComponent) ?? Enumerable.Empty <IDataEntity>();
            var larsFrameworkAppFundingEntities      = larsFramework?.LARSFrameworkApprenticeshipFundings?.Select(BuildLARSFrameworkApprenticeshipFunding) ?? Enumerable.Empty <IDataEntity>();

            var entity = new DataEntity(Attributes.EntityLearningDelivery)
            {
                Attributes = new Dictionary <string, IAttributeData>()
                {
                    { Attributes.AimSeqNumber, new AttributeData(learningDelivery.AimSeqNumber) },
                    { Attributes.AchDate, new AttributeData(learningDelivery.AchDate) },
                    { Attributes.AimType, new AttributeData(learningDelivery.AimType) },
                    { Attributes.CompStatus, new AttributeData(learningDelivery.CompStatus) },
                    { Attributes.FrameworkCommonComponent, new AttributeData(larsLearningDelivery.FrameworkCommonComponent) },
                    { Attributes.FworkCode, new AttributeData(learningDelivery.FworkCode) },
                    { Attributes.LearnAimRef, new AttributeData(learningDelivery.LearnAimRef) },
                    { Attributes.LearnActEndDate, new AttributeData(learningDelivery.LearnActEndDate) },
                    { Attributes.LearnPlanEndDate, new AttributeData(learningDelivery.LearnPlanEndDate) },
                    { Attributes.LearnStartDate, new AttributeData(learningDelivery.LearnStartDate) },
                    { Attributes.OrigLearnStartDate, new AttributeData(learningDelivery.OrigLearnStartDate) },
                    { Attributes.OtherFundAdj, new AttributeData(learningDelivery.OtherFundAdj) },
                    { Attributes.PriorLearnFundAdj, new AttributeData(learningDelivery.PriorLearnFundAdj) },
                    { Attributes.ProgType, new AttributeData(learningDelivery.ProgType) },
                    { Attributes.PwayCode, new AttributeData(learningDelivery.PwayCode) },
                    { Attributes.STDCode, new AttributeData(learningDelivery.StdCode) },
                }
            };

            entity.AddChildren(learningDeliveryFamsEntities);
            entity.AddChildren(larsFundingEntities);
            entity.AddChildren(appFinRecordEntities);
            entity.AddChildren(larsStandardCommonComponentEntities);
            entity.AddChildren(larsStandardAppFundingEntities);
            entity.AddChildren(larsFrameworkCommonComponentEntities);
            entity.AddChildren(larsFrameworkAppFundingEntities);

            return(entity);
        }
        public EarningsAndPayments BuildEarningsAndPayments(
            IEnumerable <Payment> filteredPayments,
            IEnumerable <Payment> allPayments,
            LearningDelivery learningDelivery,
            ICollection <AECApprenticeshipPriceEpisodePeriodisedValues> aecPriceEpisodePeriodisedValues,
            int currentAcademicYear,
            DateTime academicYearStart,
            DateTime nextAcademicYearStart,
            int previousYearClosedReturnPeriod)
        {
            var filteredPaymentsList       = filteredPayments.ToList();
            var totalsByPeriodDictionary   = BuildCoInvestmentPaymentsPerPeriodDictionary(filteredPaymentsList, currentAcademicYear);
            var totalDueCurrentYear        = totalsByPeriodDictionary.Sum(d => d.Value);
            var totalDuePreviousYear       = TotalCoInvestmentDueFromEmployerInPreviousFundingYears(filteredPaymentsList, previousYearClosedReturnPeriod);
            var totalCollectedCurrentYear  = GetTotalPmrBetweenDates(learningDelivery, academicYearStart, nextAcademicYearStart);
            var totalCollectedPreviousYear = GetTotalPmrBetweenDates(learningDelivery, null, academicYearStart);

            var coInvestmentPaymentsFromEmployer = new CoInvestmentPaymentsDueFromEmployer()
            {
                August    = GetPeriodisedValueFromDictionaryForPeriod(totalsByPeriodDictionary, 1),
                September = GetPeriodisedValueFromDictionaryForPeriod(totalsByPeriodDictionary, 2),
                October   = GetPeriodisedValueFromDictionaryForPeriod(totalsByPeriodDictionary, 3),
                November  = GetPeriodisedValueFromDictionaryForPeriod(totalsByPeriodDictionary, 4),
                December  = GetPeriodisedValueFromDictionaryForPeriod(totalsByPeriodDictionary, 5),
                January   = GetPeriodisedValueFromDictionaryForPeriod(totalsByPeriodDictionary, 6),
                February  = GetPeriodisedValueFromDictionaryForPeriod(totalsByPeriodDictionary, 7),
                March     = GetPeriodisedValueFromDictionaryForPeriod(totalsByPeriodDictionary, 8),
                April     = GetPeriodisedValueFromDictionaryForPeriod(totalsByPeriodDictionary, 9),
                May       = GetPeriodisedValueFromDictionaryForPeriod(totalsByPeriodDictionary, 10),
                June      = GetPeriodisedValueFromDictionaryForPeriod(totalsByPeriodDictionary, 11),
                July      = GetPeriodisedValueFromDictionaryForPeriod(totalsByPeriodDictionary, 12),
                R13       = GetPeriodisedValueFromDictionaryForPeriod(totalsByPeriodDictionary, 13),
                R14       = GetPeriodisedValueFromDictionaryForPeriod(totalsByPeriodDictionary, 14)
            };

            var earningsAndPayments = new EarningsAndPayments()
            {
                TotalPMRPreviousFundingYears = totalCollectedPreviousYear,
                TotalCoInvestmentDueFromEmployerInPreviousFundingYears = totalDuePreviousYear,
                TotalPMRThisFundingYear = totalCollectedCurrentYear,
                TotalCoInvestmentDueFromEmployerThisFundingYear = totalDueCurrentYear,
                EmployerCoInvestmentPercentage      = GetEmployerCoInvestmentPercentage(filteredPaymentsList),
                PercentageOfCoInvestmentCollected   = GetPercentageOfInvestmentCollected(totalDueCurrentYear, totalDuePreviousYear, totalCollectedCurrentYear, totalCollectedPreviousYear),
                CompletionEarningThisFundingYear    = CalculateCompletionEarningsThisFundingYear(learningDelivery, aecPriceEpisodePeriodisedValues),
                CompletionPaymentsThisFundingYear   = CalculateCompletionPaymentsInAcademicYear(allPayments, currentAcademicYear),
                CoInvestmentPaymentsDueFromEmployer = coInvestmentPaymentsFromEmployer
            };

            return(earningsAndPayments);
        }
Example #23
0
        public bool Filter(ILearningDelivery learningDelivery, LearningDelivery albLearningDelivery)
        {
            if (learningDelivery?.LearningDeliveryFAMs != null && albLearningDelivery?.LearningDeliveryValue != null)
            {
                return(learningDelivery.FundModel == FundModelConstants.FM99 &&
                       (learningDelivery.LearningDeliveryFAMs.Any(fam =>
                                                                  fam.LearnDelFAMType.CaseInsensitiveEquals(LearningDeliveryFAMTypeConstants.ADL) &&
                                                                  fam.LearnDelFAMCode == "1") == true) &&
                       (albLearningDelivery.LearningDeliveryValue.AreaCostFactAdj > 0 ||
                        learningDelivery.LearningDeliveryFAMs.Any(fam =>
                                                                  fam.LearnDelFAMType.CaseInsensitiveEquals(LearningDeliveryFAMTypeConstants.ALB)) == true));
            }

            return(false);
        }
 public IntermediateLearningAim(
     ProcessLearnerCommand command,
     IEnumerable <PriceEpisode> priceEpisodes,
     LearningDelivery aim)
 {
     Aim = aim;
     PriceEpisodes.AddRange(FilterPriceEpisodes(priceEpisodes, command.CollectionYear));
     Learner               = command.Learner;
     Ukprn                 = command.Ukprn;
     AcademicYear          = command.CollectionYear;
     CollectionPeriod      = command.CollectionPeriod;
     IlrSubmissionDateTime = command.IlrSubmissionDateTime;
     IlrFileName           = command.IlrFileName;
     JobId                 = command.JobId;
 }
        public decimal CalculateCompletionEarningsThisFundingYear(LearningDelivery learningDelivery, ICollection <AECApprenticeshipPriceEpisodePeriodisedValues> aecApprenticeshipPriceEpisodePeriodisedValues)
        {
            if (learningDelivery != null)
            {
                return(aecApprenticeshipPriceEpisodePeriodisedValues?
                       .Where(p =>
                              p.LearnRefNumber == learningDelivery.LearnRefNumber &&
                              p.AimSeqNumber == learningDelivery.AimSeqNumber &&
                              p.Periods != null)
                       .SelectMany(p => p.Periods)
                       .Sum()
                       ?? 0);
            }

            return(0);
        }
Example #26
0
        private static List <LearningDelivery> GetLearningDeliveries(int ukprn)
        {
            List <LearningDelivery> learningDeliveries = new List <LearningDelivery>();

            for (int i = 1; i <= contracts; i++)
            {
                LearningDelivery learningDelivery = new LearningDelivery()
                {
                    ConRefNumber   = $"All{ukprn}-{i} ",
                    PeriodisedData = GetPeriodisedData(),
                };

                learningDeliveries.Add(learningDelivery);
            }

            return(learningDeliveries);
        }
 internal static void SaveLearningDeliveryValuesForUkprn(long ukprn,
                                                         string learnRefNumber,
                                                         LearningDelivery learningDelivery,
                                                         EnvironmentVariables environmentVariables)
 {
     using (var connection = new SqlConnection(environmentVariables.DedsDatabaseConnectionString))
     {
         foreach (var priceEpisode in learningDelivery.PriceEpisodes)
         {
             connection.Execute("INSERT INTO [Rulebase].[AEC_ApprenticeshipPriceEpisode] " +
                                "(Ukprn,LearnRefNumber,PriceEpisodeAimSeqNumber,PriceEpisodeIdentifier,PriceEpisodeTotalTNPPrice," +
                                " EpisodeEffectiveTNPStartDate,PriceEpisodePlannedEndDate," +
                                "PriceEpisodeInstalmentValue,PriceEpisodeCompletionElement," +
                                "TNP1,TNP2,TNP3,TNP4,PriceEpisodeContractType,EpisodeStartDate) " +
                                "VALUES " +
                                "(@ukprn,@learnRefNumber, 1, " +
                                " @priceEpisodeIdentifier," +
                                " @priceEpisodeTotalTNPPrice," +
                                " @episodeStartDate," +
                                " @episodeEndDate," +
                                " @monthlyPayment," +
                                " @completionPayment," +
                                " @tnp1," +
                                " @tnp2," +
                                " @tnp3," +
                                " @tnp4," +
                                "'Levy Contract'," +
                                " @episodeStartDate)",
                                new
             {
                 ukprn                     = ukprn,
                 learnRefNumber            = learnRefNumber,
                 priceEpisodeIdentifier    = priceEpisode.Id,
                 priceEpisodeTotalTNPPrice = priceEpisode.TotalPrice,
                 episodeStartDate          = priceEpisode.StartDate,
                 episodeEndDate            = priceEpisode.EndDate ?? learningDelivery.ActualEndDate ?? learningDelivery.PlannedEndDate,
                 monthlyPayment            = priceEpisode.MonthlyPayment,
                 completionPayment         = priceEpisode.CompletionPayment,
                 tnp1 = priceEpisode.Tnp1,
                 tnp2 = priceEpisode.Tnp2,
                 tnp3 = priceEpisode.Tnp3,
                 tnp4 = priceEpisode.Tnp4,
             });
         }
     }
 }
Example #28
0
 private AimAndDeliverableReportRow BuildRow(
     LearningDelivery learningDelivery,
     DPOutcome dpOutcome,
     ESFDPOutcome esfDpOutcome,
     LARSLearningDelivery larsLearningDelivery,
     FCSDeliverableCodeMapping fcsDeliverableCodeMapping,
     ESFLearningDeliveryDeliverablePeriod deliverablePeriod = null,
     string reportMonth = null)
 => new AimAndDeliverableReportRow()
 {
     LearningDelivery          = learningDelivery,
     DPOutcome                 = dpOutcome,
     ESFDPOutcome              = esfDpOutcome,
     LarsLearningDelivery      = larsLearningDelivery,
     DeliverablePeriod         = deliverablePeriod,
     FcsDeliverableCodeMapping = fcsDeliverableCodeMapping,
     ReportMonth               = reportMonth,
 };
Example #29
0
        public IDataEntity BuildLearningDeliveryDataEntity(LearningDelivery learningDelivery)
        {
            var larsLearningDelivery = _larsReferenceDataService.LARSLearningDeliveryForLearnAimRef(learningDelivery.LearnAimRef);
            var sfaAreaCost          = _postcodesReferenceDataService.SFAAreaCostsForPostcode(learningDelivery.DelLocPostCode);

            var fcsContractData = _fcsDataReferenceDataService.FcsContractsForConRef(learningDelivery.ConRefNumber);
            var esfData         = BuildEsfDataFromContract(fcsContractData);

            var learningDeliveryFamsEntities = learningDelivery?.LearningDeliveryFAMs?.Select(BuildLearningDeliveryFAM) ?? Enumerable.Empty <IDataEntity>();
            var larsAnnualValueEntities      = larsLearningDelivery?.LARSAnnualValues?.Select(BuildLARSAnnualValue) ?? Enumerable.Empty <IDataEntity>();
            var sfaAreaCostEntities          = sfaAreaCost?.Select(BuildSFAAreaCost) ?? Enumerable.Empty <IDataEntity>();
            var larsFundingEntities          = larsLearningDelivery?.LARSFundings?.Select(BuildLARSFunding) ?? Enumerable.Empty <IDataEntity>();
            var esfEntities = esfData?.Select(BuildEsfDataEntity) ?? Enumerable.Empty <IDataEntity>();

            var entity = new DataEntity(Attributes.EntityLearningDelivery)
            {
                Attributes = new Dictionary <string, IAttributeData>()
                {
                    { Attributes.AchDate, new AttributeData(learningDelivery.AchDate) },
                    { Attributes.AddHours, new AttributeData(learningDelivery.AddHours) },
                    { Attributes.AimSeqNumber, new AttributeData(learningDelivery.AimSeqNumber) },
                    { Attributes.CalcMethod, new AttributeData(esfData.Select(c => c.CalcMethod).FirstOrDefault()) },
                    { Attributes.CompStatus, new AttributeData(learningDelivery.CompStatus) },
                    { Attributes.ConRefNumber, new AttributeData(learningDelivery.ConRefNumber) },
                    { Attributes.GenreCode, new AttributeData(larsLearningDelivery.LearningDeliveryGenre) },
                    { Attributes.LearnActEndDate, new AttributeData(learningDelivery.LearnActEndDate) },
                    { Attributes.LearnAimRef, new AttributeData(learningDelivery.LearnAimRef) },
                    { Attributes.LearnPlanEndDate, new AttributeData(learningDelivery.LearnPlanEndDate) },
                    { Attributes.LearnStartDate, new AttributeData(learningDelivery.LearnStartDate) },
                    { Attributes.OrigLearnStartDate, new AttributeData(learningDelivery.OrigLearnStartDate) },
                    { Attributes.OtherFundAdj, new AttributeData(learningDelivery.OtherFundAdj) },
                    { Attributes.Outcome, new AttributeData(learningDelivery.Outcome) },
                    { Attributes.PriorLearnFundAdj, new AttributeData(learningDelivery.PriorLearnFundAdj) },
                }
            };

            entity.AddChildren(learningDeliveryFamsEntities);
            entity.AddChildren(larsAnnualValueEntities);
            entity.AddChildren(sfaAreaCostEntities);
            entity.AddChildren(esfEntities);
            entity.AddChildren(larsFundingEntities);

            return(entity);
        }
Example #30
0
        public LearningDeliveryFams BuildLearningDeliveryFamsForLearningDelivery(LearningDelivery learningDelivery)
        {
            if (learningDelivery?.LearningDeliveryFams != null)
            {
                var ldmFams = GetLearnDelFamCodesOfType(learningDelivery.LearningDeliveryFams, LearnDelFamTypeConstants.LDM, 6);

                return(new LearningDeliveryFams()
                {
                    LDM1 = ldmFams[0],
                    LDM2 = ldmFams[1],
                    LDM3 = ldmFams[2],
                    LDM4 = ldmFams[3],
                    LDM5 = ldmFams[4],
                    LDM6 = ldmFams[5],
                });
            }

            return(null);
        }