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(); }
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); }
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))); }
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); }
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); }
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); }
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); }
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); }
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, }); } } }
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, };
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); }
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); }