internal List <MessageLearner> Generate(string ruleName, LearnerTypeRequired requiresLearner, int currentLearnerIndex, ref long ULNIndex) { ULNIndex = currentLearnerIndex; long uln = 0; bool ok = false; while (!ok) { try { uln = NextULN(ULNIndex); ok = true; } catch (ArgumentOutOfRangeException) { ++ULNIndex; } } List <MessageLearner> result = new List <MessageLearner>(); MessageLearner learner = new MessageLearner() { LearnRefNumber = $"{currentLearnerIndex:X}{ruleName.Replace("_", string.Empty)}", ULN = uln, ULNSpecified = true }; if (learner.LearnRefNumber.Length > _cache.MaximumLearnRefLength()) { throw new ArgumentOutOfRangeException($"{learner.LearnRefNumber} is too long ({learner.LearnRefNumber.Length}) (max is {_cache.MaximumLearnRefLength()})"); } PopulateLearnerForRules(learner); result.Add(learner); return(result); }
public GenerationOptions CreateGenerationOptions(LearnerTypeRequired requiresLearner) { switch (requiresLearner) { case LearnerTypeRequired.CommunityLearning: this.Options = new GenerationOptions() { DOBRequired = true, NIRequired = false, AimDefaultType = GenerationOptions.AimTypes.CommunityLearningFM10ValidAims, Age19 = true, EmploymentRequired = true }; break; case LearnerTypeRequired.Apprenticeships: this.Options = new GenerationOptions() { DOBRequired = true, NIRequired = true, Age19 = false, EmploymentRequired = true, LD = new LearningDeliveryOptions() { IncludeSOF = true } }; break; case LearnerTypeRequired.NonFunded: this.Options = new GenerationOptions() { DOBRequired = true, NIRequired = false, AimDefaultType = GenerationOptions.AimTypes.NonfundedValidAims, Age19 = true }; break; case LearnerTypeRequired.YP1619: this.Options = new GenerationOptions() { DOBRequired = true, NIRequired = true, AimDefaultType = GenerationOptions.AimTypes.YP1619Aims, EngMathsGardeRequired = true, EmploymentRequired = true, LD = new LearningDeliveryOptions() { IncludeSOF = true } }; break; case LearnerTypeRequired.OtherYP1619: this.Options = new GenerationOptions() { DOBRequired = true, NIRequired = true, AimDefaultType = GenerationOptions.AimTypes.OtherYP1619Aims, EngMathsGardeRequired = true, EmploymentRequired = true, LD = new LearningDeliveryOptions() { IncludeSOF = true, IncludeLDM = true } }; break; case LearnerTypeRequired.Adult: this.Options = new GenerationOptions() { DOBRequired = true, Age19 = true, NIRequired = true, AimDefaultType = GenerationOptions.AimTypes.AdultFM35ValidAims, EmploymentRequired = true, LD = new LearningDeliveryOptions() { IncludeSOF = true, IncludeFFI = true, IncludeHHS = true } }; break; case LearnerTypeRequired.OtherAdult: this.Options = new GenerationOptions() { DOBRequired = true, Age19 = true, NIRequired = true, AimDefaultType = GenerationOptions.AimTypes.OtherAdultFM81ValidAims, EmploymentRequired = true, LD = new LearningDeliveryOptions() { IncludeSOF = true, IncludeFFI = true, IncludeHHS = true, IncludeLDM = true } }; break; case LearnerTypeRequired.ESF: this.Options = new GenerationOptions() { DOBRequired = true, Age19 = true, NIRequired = true, AimDefaultType = GenerationOptions.AimTypes.ESFValidAims, EmploymentRequired = true, LD = new LearningDeliveryOptions() { IncludeSOF = true, IncludeFFI = false, IncludeHHS = true, IncludeContract = true } }; break; default: throw new NotImplementedException($"CreateGenerationOptions for {requiresLearner} has not been implemented"); } return(this.Options); }