public void LARSConditionMet_True() { string learnAimRef = "ZESF0002"; string conRefNumber = "ESF7890"; var esfEligibilityRuleSectorSubjectAreaLevels = new IEsfEligibilityRuleSectorSubjectAreaLevel[] { new EsfEligibilityRuleSectorSubjectAreaLevel() { TenderSpecReference = "tt_2976", LotReference = "01", SectorSubjectAreaCode = 13.2M, }, }; var learningDeliveries = new ILARSLearningDelivery[] { new Data.External.LARS.Model.LearningDelivery() { LearnAimRef = learnAimRef, SectorSubjectAreaTier1 = 14.2M, SectorSubjectAreaTier2 = 15.2M } }; var fcsDataServiceMock = new Mock <IFCSDataService>(); var larsDataServiceMock = new Mock <ILARSDataService>(); fcsDataServiceMock.Setup(m => m.GetEligibilityRuleSectorSubjectAreaLevelsFor(conRefNumber)).Returns(esfEligibilityRuleSectorSubjectAreaLevels); larsDataServiceMock.Setup(l => l.GetDeliveriesFor(learnAimRef)).Returns(learningDeliveries); NewRule( fCSDataService: fcsDataServiceMock.Object, lARSDataService: larsDataServiceMock.Object) .LARSConditionMet(conRefNumber, learnAimRef).Should().BeTrue(); }
public bool IsBasicSkillsLearner(ILearningDelivery delivery, ILARSLearningDelivery larsLearningDelivery) { var annualValues = _larsData.GetAnnualValuesFor(delivery.LearnAimRef); return(_dateTimeQueryService.IsDateBetween(delivery.LearnStartDate, larsLearningDelivery.EffectiveFrom, larsLearningDelivery.EffectiveTo ?? DateTime.MaxValue) && annualValues.Any(IsBasicSkillsLearner)); }
public bool IsExcluded(ILearningDelivery candidate, ILARSLearningDelivery larsLearningDelivery) { return(IsInflexibleElementOfTrainingAim(candidate) || IsApprenticeship(candidate) || IsBasicSkillsLearner(candidate, larsLearningDelivery) || CheckDeliveryFAMs(candidate, IsLearnerInCustody) || CheckDeliveryFAMs(candidate, IsReleasedOnTemporaryLicence) || CheckDeliveryFAMs(candidate, IsRestart) || CheckDeliveryFAMs(candidate, IsSteelWorkerRedundancyTrainingOrIsInReceiptOfLowWages) || CheckDeliveryFAMs(candidate, IsDevolvedLevel2or3ExcludedLearning)); }
public void Validate_NoError() { string learnAimRef = "ZESF0002"; string conRefNumber = "ESF7890"; var testLearner = new TestLearner() { LearningDeliveries = new TestLearningDelivery[] { new TestLearningDelivery() { LearnAimRef = learnAimRef, ConRefNumber = conRefNumber, FundModel = TypeOfFunding.AdultSkills } } }; var esfEligibilityRuleSectorSubjectAreaLevels = new IEsfEligibilityRuleSectorSubjectAreaLevel[] { new EsfEligibilityRuleSectorSubjectAreaLevel() { TenderSpecReference = "tt_2976", LotReference = "01", SectorSubjectAreaCode = 13.2M, }, }; var learningDeliveries = new ILARSLearningDelivery[] { new Data.External.LARS.Model.LearningDelivery() { LearnAimRef = learnAimRef, SectorSubjectAreaTier1 = 14.2M, SectorSubjectAreaTier2 = 15.2M } }; var fcsDataServiceMock = new Mock <IFCSDataService>(); var larsDataServiceMock = new Mock <ILARSDataService>(); fcsDataServiceMock.Setup(m => m.GetEligibilityRuleSectorSubjectAreaLevelsFor(conRefNumber)).Returns(esfEligibilityRuleSectorSubjectAreaLevels); fcsDataServiceMock.Setup(m => m.GetEligibilityRuleSectorSubjectAreaLevelsFor("ESF223344")).Returns(new IEsfEligibilityRuleSectorSubjectAreaLevel[] { }); larsDataServiceMock.Setup(l => l.GetDeliveriesFor(learnAimRef)).Returns(learningDeliveries); using (var validationErrorHandlerMock = BuildValidationErrorHandlerMockForNoError()) { NewRule( validationErrorHandler: validationErrorHandlerMock.Object, fCSDataService: fcsDataServiceMock.Object, lARSDataService: larsDataServiceMock.Object).Validate(testLearner); } }
public bool HasDisqualifyingSubjectSector(ILARSLearningDelivery larsDelivery, IReadOnlyCollection <IEsfEligibilityRuleSectorSubjectAreaLevel> subjectAreaLevels) { if (!subjectAreaLevels.Any(IsUsableSubjectArea)) { return(false); } if (larsDelivery == null) { return(true); } var filteredAreaLevels = subjectAreaLevels.Where(x => SubjectAreaTierFilter(x, larsDelivery)).ToList(); return(!filteredAreaLevels.Any() || filteredAreaLevels.Any(x => HasDisqualifyingSubjectSector(x, larsDelivery))); }
public void LARSConditionMet_False(string sectorSubjectArea1, string sectorSubjectArea2) { string learnAimRef = ValidationConstants.ZESF0001; string conRefNumber = "ESF223344"; var esfEligibilityRuleSectorSubjectAreaLevels = new IEsfEligibilityRuleSectorSubjectAreaLevel[] { new EsfEligibilityRuleSectorSubjectAreaLevel() { TenderSpecReference = "tt_2976", LotReference = "A1", SectorSubjectAreaCode = 13.1M, }, new EsfEligibilityRuleSectorSubjectAreaLevel() { TenderSpecReference = "tt_2978", LotReference = "A3", SectorSubjectAreaCode = 15.1M, } }; var learningDeliveries = new ILARSLearningDelivery[] { new Data.External.LARS.Model.LearningDelivery() { LearnAimRef = learnAimRef, SectorSubjectAreaTier1 = string.IsNullOrEmpty(sectorSubjectArea1) ? (decimal?)null : decimal.Parse(sectorSubjectArea1), SectorSubjectAreaTier2 = string.IsNullOrEmpty(sectorSubjectArea2) ? (decimal?)null : decimal.Parse(sectorSubjectArea2) } }; var fcsDataServiceMock = new Mock <IFCSDataService>(); var larsDataServiceMock = new Mock <ILARSDataService>(); fcsDataServiceMock.Setup(m => m.GetEligibilityRuleSectorSubjectAreaLevelsFor(conRefNumber)).Returns(esfEligibilityRuleSectorSubjectAreaLevels); larsDataServiceMock.Setup(l => l.GetDeliveriesFor(learnAimRef)).Returns(learningDeliveries); NewRule( fCSDataService: fcsDataServiceMock.Object, lARSDataService: larsDataServiceMock.Object) .LARSConditionMet(conRefNumber, learnAimRef).Should().BeFalse(); }
public bool IsNotEntitled(ILARSLearningDelivery larsLearningDelivery) { return(!larsLearningDelivery.Categories.NullSafeAny(category => category.CategoryRef == LARSConstants.Categories.LegalEntitlementLevel2)); }
public bool IsCommonComponent(ILARSLearningDelivery larsDelivery) => larsDelivery?.FrameworkCommonComponent != null && larsDelivery.FrameworkCommonComponent.HasValue && _fwkCommonComponents.Contains(larsDelivery.FrameworkCommonComponent.Value);
public bool HasQualifyingCommonComponent(ILARSLearningDelivery theLarsAim) => theLarsAim != null && IsBritishSignLanguage(theLarsAim);
/// <summary> /// Determines whether [has disqualifying subject area tier2] [the specified subject area level]. /// the subject areas level is prechecked for usability, lars delivery cannot be null here /// </summary> /// <param name="subjectAreaLevel">The subject area level.</param> /// <param name="larsDelivery">The lars delivery.</param> /// <returns> /// <c>true</c> if [has disqualifying subject area tier2] [the specified subject area level]; otherwise, <c>false</c>. /// </returns> public bool HasQualifyingSubjectAreaTier2(IEsfEligibilityRuleSectorSubjectAreaLevel subjectAreaLevel, ILARSLearningDelivery larsDelivery) => It.Has(larsDelivery.SectorSubjectAreaTier2) && subjectAreaLevel.SectorSubjectAreaCode == larsDelivery.SectorSubjectAreaTier2;
/// <summary> /// Gets the notional NVQ level v2. /// lars delivery cannot be null here /// </summary> /// <param name="larsDelivery">The lars delivery.</param> /// <returns>a value representing the notional level</returns> public TypeOfNotionalNVQLevelV2 GetNotionalNVQLevelV2(ILARSLearningDelivery larsDelivery) => larsDelivery.NotionalNVQLevelv2.AsNotionalNVQLevelV2();
public bool LarsCondition(ILARSLearningDelivery larsLearningDelivery) { return(larsLearningDelivery.NotionalNVQLevelv2 == LARSConstants.NotionalNVQLevelV2Strings.Level2 && !larsLearningDelivery.Categories.Any(x => x.CategoryRef == LARSConstants.Categories.LegalEntitlementLevel2)); }
public bool SubjectAreaTierFilter(IEsfEligibilityRuleSectorSubjectAreaLevel subjectAreaLevel, ILARSLearningDelivery larsDelivery) { return(subjectAreaLevel.SectorSubjectAreaCode == larsDelivery.SectorSubjectAreaTier1 || subjectAreaLevel.SectorSubjectAreaCode == larsDelivery.SectorSubjectAreaTier2); }
public double GetNotionalNVQLevelV2(ILARSLearningDelivery larsDelivery) { return(larsDelivery.NotionalNVQLevelv2.AsNotionalNVQLevelV2()); }
/// <summary> /// Determines whether [has disqualifying subject sector] [the specified lars delivery and subject area levels]. /// </summary> /// <param name="larsDelivery">The lars delivery.</param> /// <param name="subjectAreaLevels">The subject area levels.</param> /// <returns> /// <c>true</c> if [has disqualifying subject sector] [the specified lars delivery]; otherwise, <c>false</c>. /// </returns> public bool HasDisqualifyingSubjectSector(ILARSLearningDelivery larsDelivery, IReadOnlyCollection <IEsfEligibilityRuleSectorSubjectAreaLevel> subjectAreaLevels) => It.IsNull(larsDelivery) || subjectAreaLevels.Any(x => HasDisqualifyingSubjectSector(x, larsDelivery));
/// <summary> /// Determines whether [has disqualifying subject sector] [the specified subject area level]. /// the lars delivery cannot be null here /// </summary> /// <param name="subjectAreaLevel">The subject area level.</param> /// <param name="larsDelivery">The lars delivery.</param> /// <returns> /// <c>true</c> if [has disqualifying subject sector] [the specified subject area level]; otherwise, <c>false</c>. /// </returns> public bool HasDisqualifyingSubjectSector(IEsfEligibilityRuleSectorSubjectAreaLevel subjectAreaLevel, ILARSLearningDelivery larsDelivery) => IsUsableSubjectArea(subjectAreaLevel) && (IsDisqualifyingSubjectAreaLevel(subjectAreaLevel, GetNotionalNVQLevelV2(larsDelivery)) || IsDisqualifyingSubjectAreaTier(subjectAreaLevel, larsDelivery));
public bool IsV2NotionalLevel2(ILARSLearningDelivery delivery) => delivery.NotionalNVQLevelv2 == LARSNotionalNVQLevelV2.Level2;
/// <summary> /// Determines whether [is disqualifying subject area tier] [the specified subject area level]. /// </summary> /// <param name="subjectAreaLevel">The subject area level.</param> /// <param name="larsDelivery">The lars delivery.</param> /// <returns> /// <c>true</c> if [is disqualifying subject area tier] [the specified subject area level]; otherwise, <c>false</c>. /// </returns> public bool IsDisqualifyingSubjectAreaTier(IEsfEligibilityRuleSectorSubjectAreaLevel subjectAreaLevel, ILARSLearningDelivery larsDelivery) => !(HasQualifyingSubjectAreaTier1(subjectAreaLevel, larsDelivery) || HasQualifyingSubjectAreaTier2(subjectAreaLevel, larsDelivery));
/// <summary> /// Determines whether [is qualifying notional NVQ] [the specified delivery]. /// </summary> /// <param name="delivery">The delivery.</param> /// <returns> /// <c>true</c> if [is qualifying notional NVQ] [the specified delivery]; otherwise, <c>false</c>. /// </returns> public bool IsQualifyingNotionalNVQ(ILARSLearningDelivery delivery) => It.IsOutOfRange(delivery?.NotionalNVQLevelv2, LARSNotionalNVQLevelV2.Level4);
/// <summary> /// Determines whether [is v2 notional level2] [the specified delivery]. /// </summary> /// <param name="delivery">The delivery.</param> /// <returns> /// <c>true</c> if [is v2 notional level2] [the specified delivery]; otherwise, <c>false</c>. /// </returns> public bool IsV2NotionalLevel2(ILARSLearningDelivery delivery) => It.IsInRange(delivery.NotionalNVQLevelv2, LARSNotionalNVQLevelV2.Level2);
public bool IsQualifyingNotionalNVQ(ILARSLearningDelivery delivery) => delivery?.NotionalNVQLevelv2 == LARSConstants.NotionalNVQLevelV2Strings.Level3;
public bool IsBritishSignLanguage(ILARSLearningDelivery theDelivery) => theDelivery.FrameworkCommonComponent == LARSConstants.CommonComponents.BritishSignLanguage;
public bool LarsCondition(ILARSLearningDelivery larsLearningDelivery) { return(_nvq2Levels.Contains(larsLearningDelivery.NotionalNVQLevelv2)); }
public bool IsQualifyingNotionalNVQ(ILARSLearningDelivery delivery) => delivery != null && delivery.NotionalNVQLevelv2.CaseInsensitiveEquals(LARSConstants.NotionalNVQLevelV2Strings.Level3);
public bool Excluded(ILearningDelivery learningDelivery, IEnumerable <ILearnerEmploymentStatus> learnerEmploymentStatuses, ILARSLearningDelivery larsLearningDelivery) { return(DD07Condition(learningDelivery.ProgTypeNullable) || DD29Condition(learningDelivery) || DD38Condition(learningDelivery.FundModel, learningDelivery.LearnStartDate, learnerEmploymentStatuses) || LearningDeliveryFAMExclusion(learningDelivery.LearningDeliveryFAMs) || LARSExclusionCondition(larsLearningDelivery, learningDelivery.LearnStartDate)); }
public bool IsV2NotionalLevel2(ILARSLearningDelivery delivery) => delivery?.NotionalNVQLevelv2 == LARSConstants.NotionalNVQLevelV2Strings.Level2;
public bool LARSExclusionCondition(ILARSLearningDelivery larsLearningDelivery, DateTime learnStartDate) { return(_dateTimeQueryService.IsDateBetween(learnStartDate, larsLearningDelivery.EffectiveFrom, larsLearningDelivery.EffectiveTo ?? DateTime.MaxValue) && _larsDataService.GetAnnualValuesFor(larsLearningDelivery.LearnAimRef).Any(la => _basicSkillTypes.Contains(la.BasicSkillsType))); }
/// <summary> /// Determines whether [is qualifying notional NVQ] [the specified delivery]. /// </summary> /// <param name="delivery">The delivery.</param> /// <returns> /// <c>true</c> if [is qualifying notional NVQ] [the specified delivery]; otherwise, <c>false</c>. /// </returns> public bool IsDisqualifyingNotionalNVQ(ILARSLearningDelivery delivery) => It.IsInRange(delivery?.NotionalNVQLevelv2, LARSNotionalNVQLevelV2.Level3);
public bool IsEarlyStageNVQ(ILearningDelivery delivery, ILARSLearningDelivery larsLearningDelivery) { return(_nvqLevels.Contains(larsLearningDelivery.NotionalNVQLevelv2)); }