private static void EvaluateOrganisationDetails(AddEditManagementHierarchyViewModel model, List <ValidationErrorDetail> errorMessages) { if (string.IsNullOrEmpty(model.IsPartOfOtherOrgThatGetsFunding)) { errorMessages.Add( new ValidationErrorDetail { ErrorMessage = IsPartOfOtherOrgThatGetsFundingError, Field = "IsPartOfOtherOrgThatGetsFunding" }); } else if (model.IsPartOfOtherOrgThatGetsFunding == "Yes") { if (string.IsNullOrEmpty(model.OtherOrgName)) { errorMessages.Add( new ValidationErrorDetail { ErrorMessage = OtherOrgNameError, Field = "IsPartOfOtherOrgThatGetsFunding" }); } else if (model.OtherOrgName.Length > 750) { errorMessages.Add( new ValidationErrorDetail { ErrorMessage = OtherOrgNameLengthError, Field = "IsPartOfOtherOrgThatGetsFunding" }); } } }
private static void EvaluationDateOfBirth(AddEditManagementHierarchyViewModel model, List <ValidationErrorDetail> errorMessages) { var dobErrorMessages = DateOfBirthAnswerValidator.ValidateDateOfBirth(model.DobMonth, model.DobYear, DobFieldPrefix); if (dobErrorMessages.Any()) { errorMessages.AddRange(dobErrorMessages); } }
public IActionResult AddManagementHierarchy(Guid applicationId) { var model = new AddEditManagementHierarchyViewModel { ApplicationId = applicationId, GetHelpAction = "AddManagementHierarchy" }; PopulateGetHelpWithQuestion(model, RoatpWorkflowPageIds.ManagementHierarchy.AddManagementHierarchy); return(View("~/Views/Roatp/ManagementHierarchy/AddManagementHierarchy.cshtml", model)); }
public async Task <IActionResult> EditManagementHierarchy(Guid applicationId, int index) { var personTableData = await _tabularDataRepository.GetTabularDataAnswer(applicationId, RoatpWorkflowQuestionTags.AddManagementHierarchy); if (personTableData != null) { if (index >= personTableData.DataRows.Count) { return(RedirectToAction("ConfirmManagementHierarchy", new { applicationId })); } var person = personTableData.DataRows[index]; var firstName = person.Columns[0]; var lastName = person.Columns[1]; var jobRole = person.Columns[2]; var timeInRoleMonths = person.Columns[4]; var timeInRoleYears = person.Columns[3]; var isPartOfOtherOrg = person.Columns[5]; var otherOrgName = person.Columns[6]; var dobMonth = person.Columns[7]; var dobYear = person.Columns[8]; var email = person.Columns[9]; var contactNumber = person.Columns[10]; var model = new AddEditManagementHierarchyViewModel { ApplicationId = applicationId, FirstName = firstName, LastName = lastName, Index = index, Identifier = "person", JobRole = jobRole, TimeInRoleMonths = timeInRoleMonths, TimeInRoleYears = timeInRoleYears, IsPartOfOtherOrgThatGetsFunding = isPartOfOtherOrg, OtherOrgName = otherOrgName, DobMonth = dobMonth, DobYear = dobYear, Email = email, ContactNumber = contactNumber, Title = "Enter the person's details", PageId = RoatpWorkflowPageIds.ManagementHierarchy.EditManagementHierarchy, GetHelpAction = "EditManagementHierarchy" }; PopulateGetHelpWithQuestion(model); return(View($"~/Views/Roatp/ManagementHierarchy/EditManagementHierarchy.cshtml", model)); } return(RedirectToAction("ConfirmManagementHierarchy", new { applicationId })); }
public IActionResult AddManagementHierarchy(Guid applicationId) { var model = new AddEditManagementHierarchyViewModel { ApplicationId = applicationId, Title = "Who is in your organisation's management hierarchy for apprenticeships?", PageId = RoatpWorkflowPageIds.ManagementHierarchy.AddManagementHierarchy, GetHelpAction = "AddManagementHierarchy" }; PopulateGetHelpWithQuestion(model); return(View("~/Views/Roatp/ManagementHierarchy/AddManagementHierarchy.cshtml", model)); }
public static List <ValidationErrorDetail> Validate(AddEditManagementHierarchyViewModel model) { var errorMessages = new List <ValidationErrorDetail>(); EvaluateFirstName(model, errorMessages); EvaluateLastName(model, errorMessages); EvaluateJobRole(model, errorMessages); EvaluateTimeInRole(model, errorMessages); EvaluateOrganisationDetails(model, errorMessages); EvaluationDateOfBirth(model, errorMessages); EvaluationEmail(model, errorMessages); EvaluationContactNumber(model, errorMessages); return(errorMessages); }
private static void EvaluateTimeInRole(AddEditManagementHierarchyViewModel model, List <ValidationErrorDetail> errorMessages) { if (string.IsNullOrEmpty(model.TimeInRoleMonths) || string.IsNullOrEmpty(model.TimeInRoleYears)) { errorMessages.Add( new ValidationErrorDetail { ErrorMessage = TimeInRoleError, Field = "TimeInRole" }); } else { var monthsOk = int.TryParse(model.TimeInRoleMonths, out var months); var yearsOk = int.TryParse(model.TimeInRoleYears, out var years); if (!monthsOk || !yearsOk || months + years <= 0) { errorMessages.Add( new ValidationErrorDetail { ErrorMessage = TimeInRoleError, Field = "TimeInRole" }); } else { if (months > 11) { errorMessages.Add( new ValidationErrorDetail { ErrorMessage = TimeInRoleMonthsTooBigError, Field = "TimeInRole" }); } if (years > 99) { errorMessages.Add( new ValidationErrorDetail { ErrorMessage = TimeInRoleYearsTooBigError, Field = "TimeInRole" }); } } } }
public async Task AddManagementHierarchyDetails_HasValidationErrors_ReturnsView() { var model = new AddEditManagementHierarchyViewModel { ApplicationId = _applicationId }; _controller.ModelState.AddModelError("Testing", "test message"); var result = await _controller.AddManagementHierarchyDetails(model); var viewResult = result as ViewResult; viewResult.Should().NotBeNull(); viewResult.ViewName.Should().Contain("AddManagementHierarchy.cshtml"); viewResult.Model.Should().BeEquivalentTo(model); }
public async Task <IActionResult> UpdateManagementHierarchyDetails(AddEditManagementHierarchyViewModel model) { var errorMessages = ManagementHierarchyValidator.Validate(model); if (errorMessages.Any()) { model.ErrorMessages = errorMessages; return(View("~/Views/Roatp/ManagementHierarchy/EditManagementHierarchy.cshtml", model)); } var peopleTableData = await _tabularDataRepository.GetTabularDataAnswer(model.ApplicationId, RoatpWorkflowQuestionTags.AddManagementHierarchy); if (peopleTableData != null) { var person = new TabularDataRow { Columns = new List <string> { model.FirstName, model.LastName, model.JobRole, model.TimeInRoleYears, model.TimeInRoleMonths, model.IsPartOfOtherOrgThatGetsFunding, model.IsPartOfOtherOrgThatGetsFunding == "Yes"? model.OtherOrgName : string.Empty, model.DobMonth, model.DobYear, model.Email, model.ContactNumber } }; var managementHierarchySection = await _qnaApiClient.GetSectionBySectionNo(model.ApplicationId, RoatpWorkflowSequenceIds.DeliveringApprenticeshipTraining, RoatpWorkflowSectionIds.DeliveringApprenticeshipTraining.ManagementHierarchy); var result = await _tabularDataRepository.EditTabularDataRecord( model.ApplicationId, managementHierarchySection.Id, RoatpWorkflowPageIds.ManagementHierarchy.AddManagementHierarchy, RoatpDeliveringApprenticeshipTrainingQuestionIdConstants.ManagementHierarchy, RoatpWorkflowQuestionTags.AddManagementHierarchy, person, model.Index); } return(RedirectToAction("ConfirmManagementHierarchy", new { model.ApplicationId })); }
public void Arrange() { _validator = new ManagementHierarchyValidator(); _viewModel = new AddEditManagementHierarchyViewModel { ApplicationId = Guid.NewGuid(), FirstName = "FirstName", LastName = "LastName", JobRole = "JobRole", TimeInRoleYears = "1", TimeInRoleMonths = "1", IsPartOfOtherOrgThatGetsFunding = "Yes", OtherOrgName = "OtherOrgName", DobMonth = "1", DobYear = "2000", Email = "*****@*****.**", ContactNumber = "123456789" }; }
private static void EvaluationContactNumber(AddEditManagementHierarchyViewModel model, List <ValidationErrorDetail> errorMessages) { if (string.IsNullOrEmpty(model.ContactNumber)) { errorMessages.Add( new ValidationErrorDetail { ErrorMessage = ContactNumberError, Field = "ContactNumber" }); } else if (model.ContactNumber.Length > 50) { errorMessages.Add( new ValidationErrorDetail { ErrorMessage = ContactNumberTooLongError, Field = "ContactNumber" }); } }
private static void EvaluateJobRole(AddEditManagementHierarchyViewModel model, List <ValidationErrorDetail> errorMessages) { if (string.IsNullOrEmpty(model.JobRole)) { errorMessages.Add( new ValidationErrorDetail { ErrorMessage = JobRoleMinLengthError, Field = "JobRole" }); } else if (model.JobRole.Length > 255) { errorMessages.Add( new ValidationErrorDetail { ErrorMessage = JobRoleMaxLengthError, Field = "JobRole" }); } }
private static void EvaluateLastName(AddEditManagementHierarchyViewModel model, ICollection <ValidationErrorDetail> errorMessages) { if (string.IsNullOrEmpty(model.LastName)) { errorMessages.Add( new ValidationErrorDetail { ErrorMessage = LastNameMinLengthError, Field = "LastName" }); } else if (model.LastName.Length > 255) { errorMessages.Add( new ValidationErrorDetail { ErrorMessage = LastNameMaxLengthError, Field = "LastName" }); } }
private static void EvaluationEmail(AddEditManagementHierarchyViewModel model, List <ValidationErrorDetail> errorMessages) { if (string.IsNullOrEmpty(model.Email)) { errorMessages.Add( new ValidationErrorDetail { ErrorMessage = EmailError, Field = "Email" }); } else if (model.Email.Length > 320) { errorMessages.Add( new ValidationErrorDetail { ErrorMessage = EmailErrorTooLong, Field = "Email" }); } else { string validEmailPattern = @"^(?!\.)(""([^""\r\\]|\\[""\r\\])*""|" + @"([-a-z0-9!#$%&'*+/=?^_`{|}~]|(?<!\.)\.)*)(?<!\.)" + @"@[a-z0-9][\w\.-]*[a-z0-9]\.[a-z][a-z\.]*[a-z]$"; var emailRegex = new Regex(validEmailPattern, RegexOptions.IgnoreCase); if (!emailRegex.IsMatch(model.Email)) { errorMessages.Add( new ValidationErrorDetail { ErrorMessage = EmailErrorWrongFormat, Field = "Email" }); } } }
public async Task <IActionResult> AddManagementHierarchyDetails(AddEditManagementHierarchyViewModel model) { if (!ModelState.IsValid) { return(View("~/Views/Roatp/ManagementHierarchy/AddManagementHierarchy.cshtml", model)); } var managementHierarchySection = await _qnaApiClient.GetSectionBySectionNo(model.ApplicationId, RoatpWorkflowSequenceIds.DeliveringApprenticeshipTraining, RoatpWorkflowSectionIds.DeliveringApprenticeshipTraining.ManagementHierarchy); var managementHierarchyData = await _tabularDataRepository.GetTabularDataAnswer(model.ApplicationId, RoatpWorkflowQuestionTags.AddManagementHierarchy); var managementHierarchyPerson = new TabularDataRow { Id = Guid.NewGuid().ToString(), Columns = new List <string> { model.FirstName, model.LastName, model.JobRole, model.TimeInRoleYears, model.TimeInRoleMonths, model.IsPartOfOtherOrgThatGetsFunding, model.IsPartOfOtherOrgThatGetsFunding == "Yes" ? model.OtherOrgName : string.Empty, model.DobMonth, model.DobYear, model.Email, model.ContactNumber } }; if (managementHierarchyData == null) { managementHierarchyData = new TabularData { HeadingTitles = new List <string> { "First Name", "Last Name", "Job role", "Years in role", "Months in role", "Part of another organisation", "Organisation details", "Month", "Year", "Email", "Contact number" }, DataRows = new List <TabularDataRow> { managementHierarchyPerson } }; var result = await _tabularDataRepository.SaveTabularDataAnswer( model.ApplicationId, managementHierarchySection.Id, RoatpWorkflowPageIds.ManagementHierarchy.AddManagementHierarchy, RoatpDeliveringApprenticeshipTrainingQuestionIdConstants.ManagementHierarchy, managementHierarchyData); } else { var result = await _tabularDataRepository.UpsertTabularDataRecord( model.ApplicationId, managementHierarchySection.Id, RoatpWorkflowPageIds.ManagementHierarchy.AddManagementHierarchy, RoatpDeliveringApprenticeshipTrainingQuestionIdConstants.ManagementHierarchy, RoatpWorkflowQuestionTags.AddManagementHierarchy, managementHierarchyPerson); } return(RedirectToAction("ConfirmManagementHierarchy", new { model.ApplicationId })); }