Esempio n. 1
0
        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();
        }
Esempio n. 2
0
        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));
        }
Esempio n. 3
0
 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));
 }
Esempio n. 4
0
        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);
            }
        }
Esempio n. 5
0
        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)));
        }
Esempio n. 6
0
        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();
        }
Esempio n. 7
0
 public bool IsNotEntitled(ILARSLearningDelivery larsLearningDelivery)
 {
     return(!larsLearningDelivery.Categories.NullSafeAny(category => category.CategoryRef == LARSConstants.Categories.LegalEntitlementLevel2));
 }
Esempio n. 8
0
 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();
Esempio n. 12
0
 public bool LarsCondition(ILARSLearningDelivery larsLearningDelivery)
 {
     return(larsLearningDelivery.NotionalNVQLevelv2 == LARSConstants.NotionalNVQLevelV2Strings.Level2 &&
            !larsLearningDelivery.Categories.Any(x => x.CategoryRef == LARSConstants.Categories.LegalEntitlementLevel2));
 }
Esempio n. 13
0
 public bool SubjectAreaTierFilter(IEsfEligibilityRuleSectorSubjectAreaLevel subjectAreaLevel, ILARSLearningDelivery larsDelivery)
 {
     return(subjectAreaLevel.SectorSubjectAreaCode == larsDelivery.SectorSubjectAreaTier1 ||
            subjectAreaLevel.SectorSubjectAreaCode == larsDelivery.SectorSubjectAreaTier2);
 }
Esempio n. 14
0
 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));
Esempio n. 19
0
 /// <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);
Esempio n. 21
0
 public bool IsQualifyingNotionalNVQ(ILARSLearningDelivery delivery) =>
 delivery?.NotionalNVQLevelv2 == LARSConstants.NotionalNVQLevelV2Strings.Level3;
 public bool IsBritishSignLanguage(ILARSLearningDelivery theDelivery) =>
 theDelivery.FrameworkCommonComponent == LARSConstants.CommonComponents.BritishSignLanguage;
Esempio n. 23
0
 public bool LarsCondition(ILARSLearningDelivery larsLearningDelivery)
 {
     return(_nvq2Levels.Contains(larsLearningDelivery.NotionalNVQLevelv2));
 }
 public bool IsQualifyingNotionalNVQ(ILARSLearningDelivery delivery) =>
 delivery != null &&
 delivery.NotionalNVQLevelv2.CaseInsensitiveEquals(LARSConstants.NotionalNVQLevelV2Strings.Level3);
Esempio n. 25
0
 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));
 }
Esempio n. 26
0
 public bool IsV2NotionalLevel2(ILARSLearningDelivery delivery) =>
 delivery?.NotionalNVQLevelv2 == LARSConstants.NotionalNVQLevelV2Strings.Level2;
Esempio n. 27
0
 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);
Esempio n. 29
0
 public bool IsEarlyStageNVQ(ILearningDelivery delivery, ILARSLearningDelivery larsLearningDelivery)
 {
     return(_nvqLevels.Contains(larsLearningDelivery.NotionalNVQLevelv2));
 }