public async Task <IActionResult> EmploymentStartDates(string accountId, Guid applicationId)
        {
            var application = await _applicationService.Get(accountId, applicationId, includeApprenticeships : true);

            if (application == null)
            {
                return(RedirectToAction("Home", "Home", new { accountId }));
            }
            var legalEntityName = await GetLegalEntityName(accountId, application.AccountLegalEntityId);

            var model = new EmploymentStartDatesViewModel
            {
                AccountId             = accountId,
                ApplicationId         = applicationId,
                OrganisationName      = legalEntityName,
                Apprentices           = application.Apprentices.OrderBy(x => x.FullName).ToList(),
                DateValidationResults = new List <DateValidationResult>()
            };

            return(View(model));
        }
        public async Task <IActionResult> SubmitEmploymentStartDates(EmploymentStartDatesRequest request)
        {
            var application = await _applicationService.Get(request.AccountId, request.ApplicationId, includeApprenticeships : true);

            if (application == null)
            {
                return(RedirectToAction("Home", "Home", new { request.AccountId }));
            }
            var validationResults = _employmentStartDateValidator.Validate(request).ToList();

            if (validationResults.Any())
            {
                var legalEntityName = await GetLegalEntityName(request.AccountId, application.AccountLegalEntityId);

                var model = new EmploymentStartDatesViewModel
                {
                    AccountId             = request.AccountId,
                    ApplicationId         = request.ApplicationId,
                    OrganisationName      = legalEntityName,
                    Apprentices           = PopulateStartDates(application.Apprentices.OrderBy(x => x.FullName).ToList(), request),
                    DateValidationResults = validationResults.ToList()
                };
                return(View("EmploymentStartDates", model));
            }

            var confirmEmploymentDetailsRequest = CreateEmploymentDetailsRequest(application, request);

            await _applicationService.SaveApprenticeshipDetails(confirmEmploymentDetailsRequest);

            application = await _applicationService.Get(request.AccountId, request.ApplicationId, includeApprenticeships : false);

            if (application.NewAgreementRequired)
            {
                request.AccountLegalEntityId = application.AccountLegalEntityId;
                return(await DisplayNewAgreementRequiredShutterPage(request));
            }

            return(RedirectToAction("ConfirmApprenticeships", "ApplyApprenticeships", new { request.AccountId, request.ApplicationId }));
        }