private async Task ValidateOverlaps(DraftApprenticeshipDetails details, CancellationToken cancellationToken)
        {
            if (string.IsNullOrWhiteSpace(details.Uln) || !details.StartDate.HasValue || !details.EndDate.HasValue)
            {
                return;
            }

            var overlapResult = await _overlapCheckService.CheckForOverlaps(details.Uln, details.StartDate.Value.To(details.EndDate.Value), default, cancellationToken);
        private IEnumerable <DomainError> BuildOverlapValidationFailures(EditApprenticeshipValidationRequest request, Apprenticeship apprenticeship)
        {
            if (request.StartDate.HasValue && request.EndDate.HasValue)
            {
                var errorMessage  = "The date overlaps with existing training dates for the same apprentice. Please check the date - contact your training provider for help";
                var overlapResult = _overlapCheckService.CheckForOverlaps(apprenticeship.Uln, request.StartDate.Value.To(request.EndDate.Value), apprenticeship.Id, CancellationToken.None).Result;

                if (overlapResult.HasOverlappingStartDate)
                {
                    yield return(new DomainError(nameof(request.StartDate), errorMessage));
                }

                if (overlapResult.HasOverlappingEndDate)
                {
                    yield return(new DomainError(nameof(request.EndDate), errorMessage));
                }
            }
        }