public async Task <bool> IsApprenticeshipEligible(Apprenticeship apprenticeship) { if (!apprenticeship.IsApproved || IsStartDateOutsideSchemeRange(apprenticeship)) { return(false); } if (await _ulnValidationService.UlnAlreadyOnSubmittedIncentiveApplication(apprenticeship.UniqueLearnerNumber)) { return(false); } return(true); }
public async Task Handle(SubmitIncentiveApplicationCommand command, CancellationToken cancellationToken = default) { var application = await _domainRepository.Find(command.IncentiveApplicationId); if (application == null || application.AccountId != command.AccountId) { throw new InvalidRequestException(); } foreach (var apprenticeship in application.Apprenticeships) { if (await _ulnValidationService.UlnAlreadyOnSubmittedIncentiveApplication(apprenticeship.ULN)) { throw new UlnAlreadySubmittedException(); } } application.Submit(command.DateSubmitted, command.SubmittedByEmail, command.SubmittedByName); await _domainRepository.Save(application); }