public bool DateOfBirthLearnStartDateConditionMet(DateTime learnStartDate, DateTime dateOfBirth) { var learnStartDateAcademicYearLastFridayJune = _academicYearCalendarService.LastFridayInJuneForDateInAcademicYear(learnStartDate); var learnStartDateFirstSeptember = new DateTime(learnStartDateAcademicYearLastFridayJune.Year, 9, 1); var sixteenthBirthday = dateOfBirth.AddYears(16); var learnStartDateAge = _dateTimeQueryService.YearsBetween(dateOfBirth, learnStartDate); return(learnStartDateAge < 16 && !(learnStartDateAge == 15 && sixteenthBirthday > learnStartDateAcademicYearLastFridayJune && sixteenthBirthday < learnStartDateFirstSeptember && learnStartDate > learnStartDateAcademicYearLastFridayJune && learnStartDate < learnStartDateFirstSeptember)); }
public void Validate(ILearner objectToValidate) { if (!LearnerConditionMet(objectToValidate.DateOfBirthNullable)) { return; } var sixteenthBirthday = BirthdayAt(objectToValidate.DateOfBirthNullable, 16); var lastFridayJuneAcademicYearLearnerSixteen = _academicYearCalendarService.LastFridayInJuneForDateInAcademicYear(sixteenthBirthday.Value); foreach (var learningDelivery in objectToValidate.LearningDeliveries.Where(ld => !Exclude(ld.ProgTypeNullable))) { if (DD07ConditionMet(_dd07.Derive(learningDelivery.ProgTypeNullable)) && DD04ConditionMet(_dd04.Derive(objectToValidate.LearningDeliveries, learningDelivery), _validationDataService.ApprencticeProgAllowedStartDate, lastFridayJuneAcademicYearLearnerSixteen)) { HandleValidationError(RuleNameConstants.DateOfBirth_48, objectToValidate.LearnRefNumber, learningDelivery.AimSeqNumberNullable); } } }