Esempio n. 1
0
        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);
        }