private async Task <IActionResult> DisplayNewAgreementRequiredShutterPage(EmploymentStartDatesRequest request) { var legalEntityName = await GetLegalEntityName(request.AccountId, request.AccountLegalEntityId); var viewModel = new NewAgreementRequiredViewModel(legalEntityName, request.AccountId, request.ApplicationId, _configuration.ManageApprenticeshipSiteUrl); return(View("NewAgreementRequired", viewModel)); }
public IEnumerable <DateValidationResult> Validate(EmploymentStartDatesRequest request) { var validationErrors = new List <DateValidationResult>(); if (request.EmploymentStartDateDays.Count == 0 || request.EmploymentStartDateMonths.Count == 0 || request.EmploymentStartDateYears.Count == 0) { validationErrors.Add(new DateValidationResult { Index = 0, ValidationMessage = InvalidFieldErrorMessage }); return(validationErrors); } for (var index = 0; index < request.EmploymentStartDateDays.Count; index++) { if (!request.EmploymentStartDateDays[index].HasValue || !request.EmploymentStartDateMonths[index].HasValue || !request.EmploymentStartDateYears[index].HasValue) { validationErrors.Add(new DateValidationResult { Index = index, ValidationMessage = InvalidFieldErrorMessage }); } else if (request.EmploymentStartDateDays[index].Value == 0 || request.EmploymentStartDateMonths[index].Value == 0 || request.EmploymentStartDateYears[index].Value == 0) { validationErrors.Add(new DateValidationResult { Index = index, ValidationMessage = InvalidFieldErrorMessage }); } else if (request.EmploymentStartDateYears[index] < SchemeStartYear) { validationErrors.Add(new DateValidationResult { Index = index, ValidationMessage = InvalidFieldErrorMessage }); } else if (request.EmploymentStartDateMonths[index] > 12) { validationErrors.Add(new DateValidationResult { Index = index, ValidationMessage = InvalidFieldErrorMessage }); } else if (request.EmploymentStartDateDays[index] > DateTime.DaysInMonth(request.EmploymentStartDateYears[index].Value, request.EmploymentStartDateMonths[index].Value)) { validationErrors.Add(new DateValidationResult { Index = index, ValidationMessage = InvalidFieldErrorMessage }); } } return(validationErrors); }
public void Arrange() { _fixture = new Fixture(); _accountId = _fixture.Create <string>(); _applicationId = Guid.NewGuid(); _request = new EmploymentStartDatesRequest { AccountId = _accountId, ApplicationId = _applicationId, EmploymentStartDateDays = new List <int?>(), EmploymentStartDateMonths = new List <int?>(), EmploymentStartDateYears = new List <int?>() }; }
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 })); }
private ApprenticeshipDetailsRequest CreateEmploymentDetailsRequest(ApplicationModel application, EmploymentStartDatesRequest request) { var confirmRequest = new ApprenticeshipDetailsRequest { AccountId = _hashingService.DecodeValue(application.AccountId), ApplicationId = application.ApplicationId, ApprenticeshipDetails = new List <ApprenticeshipDetailsDto>() }; for (var index = 0; index < request.EmploymentStartDateDays.Count; index++) { var employmentStartDate = new DateTime(request.EmploymentStartDateYears[index].Value, request.EmploymentStartDateMonths[index].Value, request.EmploymentStartDateDays[index].Value); var employmentDetails = new ApprenticeshipDetailsDto { ApprenticeId = _hashingService.DecodeValue(request.ApprenticeshipIds[index]), EmploymentStartDate = employmentStartDate }; confirmRequest.ApprenticeshipDetails.Add(employmentDetails); } return(confirmRequest); }
private List <ApplicationApprenticeshipModel> PopulateStartDates(List <ApplicationApprenticeshipModel> apprentices, EmploymentStartDatesRequest request) { // dates may be partially filled out so find the column with the most values var startDateCount = new List <int> { request.EmploymentStartDateDays.Count, request.EmploymentStartDateMonths.Count, request.EmploymentStartDateYears.Count }.Max(); for (var index = 0; index < startDateCount; index++) { var apprentice = apprentices.Single(x => x.ApprenticeshipId == request.ApprenticeshipIds[index]); if (request.EmploymentStartDateDays.Count > index) { apprentice.EmploymentStartDateDay = request.EmploymentStartDateDays[index]; } if (request.EmploymentStartDateMonths.Count > index) { apprentice.EmploymentStartDateMonth = request.EmploymentStartDateMonths[index]; } if (request.EmploymentStartDateYears.Count > index) { apprentice.EmploymentStartDateYear = request.EmploymentStartDateYears[index]; } } return(apprentices); }