示例#1
0
 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"
             });
         }
     }
 }
示例#2
0
        private static void EvaluationDateOfBirth(AddEditManagementHierarchyViewModel model, List <ValidationErrorDetail> errorMessages)
        {
            var dobErrorMessages = DateOfBirthAnswerValidator.ValidateDateOfBirth(model.DobMonth, model.DobYear, DobFieldPrefix);

            if (dobErrorMessages.Any())
            {
                errorMessages.AddRange(dobErrorMessages);
            }
        }
示例#3
0
        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));
        }
示例#6
0
        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);
        }
示例#7
0
        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);
        }
示例#9
0
        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"
            };
        }
示例#11
0
 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"
         });
     }
 }
示例#12
0
 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"
         });
     }
 }
示例#13
0
 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"
         });
     }
 }
示例#14
0
        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 }));
        }