public async Task <IActionResult> AddPartner(Guid applicationId)
        {
            var partnerTypeAnswer = await _qnaApiClient.GetAnswerByTag(applicationId, RoatpWorkflowQuestionTags.PartnershipType);

            var partnerIndividual = (partnerTypeAnswer != null && partnerTypeAnswer.Value == ConfirmPartnershipTypeViewModel.PartnershipTypeIndividual);

            var model = new AddEditPeopleInControlViewModel
            {
                ApplicationId       = applicationId,
                DateOfBirthOptional = !partnerIndividual,
                GetHelpAction       = "AddPartner",
                PageId = RoatpWorkflowPageIds.WhosInControl.AddPartners
            };

            if (partnerIndividual)
            {
                model.Identifier = "individual";
            }
            else
            {
                model.Identifier = "organisation";
            }

            PopulateGetHelpWithQuestion(model);

            return(View("~/Views/Roatp/WhosInControl/AddPartner.cshtml", model));
        }
        public async Task <IActionResult> EditPeopleInControl(Guid applicationId, int index)
        {
            var personTableData = await _tabularDataRepository.GetTabularDataAnswer(applicationId, RoatpWorkflowQuestionTags.AddPeopleInControl);

            if (personTableData != null)
            {
                if (index >= personTableData.DataRows.Count)
                {
                    return(RedirectToAction("ConfirmPeopleInControl", new { applicationId }));
                }

                var person      = personTableData.DataRows[index];
                var name        = person.Columns[0];
                var dateOfBirth = person.Columns[1];
                var model       = new AddEditPeopleInControlViewModel
                {
                    ApplicationId       = applicationId,
                    PersonInControlName = name,
                    Index      = index,
                    Identifier = "person",
                    PersonInControlDobMonth = DateOfBirthFormatter.GetMonthNumberFromShortDateOfBirth(dateOfBirth),
                    PersonInControlDobYear  = DateOfBirthFormatter.GetYearFromShortDateOfBirth(dateOfBirth),
                    DateOfBirthOptional     = false,
                    GetHelpAction           = "EditPeopleInControl",
                    PageId = "EditPeopleInControl"
                };

                PopulateGetHelpWithQuestion(model);
                return(View($"~/Views/Roatp/WhosInControl/EditPeopleInControl.cshtml", model));
            }
            return(RedirectToAction("ConfirmPeopleInControl", new { applicationId }));
        }
        public static List <ValidationErrorDetail> Validate(AddEditPeopleInControlViewModel model)
        {
            var errorMessages = new List <ValidationErrorDetail>();

            if (String.IsNullOrEmpty(model.PersonInControlName))
            {
                errorMessages.Add(
                    new ValidationErrorDetail
                {
                    ErrorMessage = PersonInControlNameMinLengthError,
                    Field        = "PersonInControlName"
                });
            }
            else if (model.PersonInControlName.Length > 255)
            {
                errorMessages.Add(
                    new ValidationErrorDetail
                {
                    ErrorMessage = PersonInControlNameMaxLengthError,
                    Field        = "PersonInControlName"
                });
            }

            if (!model.DateOfBirthOptional)
            {
                var dobErrorMessages = DateOfBirthAnswerValidator.ValidateDateOfBirth(model.PersonInControlDobMonth, model.PersonInControlDobYear, DobFieldPrefix);
                if (dobErrorMessages.Any())
                {
                    errorMessages.AddRange(dobErrorMessages);
                }
            }

            return(errorMessages);
        }
        public async Task <IActionResult> AddPeopleInControlDetails(AddEditPeopleInControlViewModel model)
        {
            var errorMessages = PeopleInControlValidator.Validate(model);

            if (errorMessages.Any())
            {
                model.ErrorMessages = errorMessages;
                return(View("~/Views/Roatp/WhosInControl/AddPeopleInControl.cshtml", model));
            }

            var whosInControlSection = await _qnaApiClient.GetSectionBySectionNo(model.ApplicationId, RoatpWorkflowSequenceIds.YourOrganisation, RoatpWorkflowSectionIds.YourOrganisation.WhosInControl);

            var personInControlData = await _tabularDataRepository.GetTabularDataAnswer(model.ApplicationId, RoatpWorkflowQuestionTags.AddPeopleInControl);

            var personInControl = new TabularDataRow
            {
                Id      = Guid.NewGuid().ToString(),
                Columns = new List <string>
                {
                    model.PersonInControlName,
                    DateOfBirthFormatter.FormatDateOfBirth(model.PersonInControlDobMonth, model.PersonInControlDobYear)
                }
            };

            if (personInControlData == null)
            {
                personInControlData = new TabularData
                {
                    HeadingTitles = new List <string> {
                        "Name", "Date of birth"
                    },
                    DataRows = new List <TabularDataRow>
                    {
                        personInControl
                    }
                };

                var result = await _tabularDataRepository.SaveTabularDataAnswer(
                    model.ApplicationId,
                    whosInControlSection.Id,
                    RoatpWorkflowPageIds.WhosInControl.AddPeopleInControl,
                    RoatpYourOrganisationQuestionIdConstants.AddPeopleInControl,
                    personInControlData);
            }
            else
            {
                var result = await _tabularDataRepository.UpsertTabularDataRecord(
                    model.ApplicationId,
                    whosInControlSection.Id,
                    RoatpWorkflowPageIds.WhosInControl.AddPeopleInControl,
                    RoatpYourOrganisationQuestionIdConstants.AddPeopleInControl,
                    RoatpWorkflowQuestionTags.AddPeopleInControl,
                    personInControl);
            }

            return(RedirectToAction("ConfirmPeopleInControl", new { model.ApplicationId }));
        }
Exemple #5
0
        public async Task <IActionResult> AddPeopleInControl(Guid applicationId)
        {
            var organisationType = await _applicationApiClient.GetOrganisationTypeFromApplication(applicationId);

            var model = new AddEditPeopleInControlViewModel {
                ApplicationId = applicationId, OrganisationType = organisationType, GetHelpAction = "AddPeopleInControl"
            };

            PopulateGetHelpWithQuestion(model, RoatpWorkflowPageIds.WhosInControl.AddPeopleInControl);

            return(View("~/Views/Roatp/WhosInControl/AddPeopleInControl.cshtml", model));
        }
        public async Task <IActionResult> UpdatePartnerDetails(AddEditPeopleInControlViewModel model)
        {
            var errorMessages = PeopleInControlValidator.Validate(model);

            if (errorMessages.Any())
            {
                model.ErrorMessages = errorMessages;
                return(View("~/Views/Roatp/WhosInControl/EditPartner.cshtml", model));
            }

            var partnerTableData = await _tabularDataRepository.GetTabularDataAnswer(model.ApplicationId, RoatpWorkflowQuestionTags.AddPartners);

            if (partnerTableData != null)
            {
                var partner = new TabularDataRow
                {
                    Columns = new List <string> {
                        model.PersonInControlName
                    }
                };
                if (!model.DateOfBirthOptional)
                {
                    partner.Columns.Add(DateOfBirthFormatter.FormatDateOfBirth(model.PersonInControlDobMonth, model.PersonInControlDobYear));
                }
                else
                {
                    partner.Columns.Add(string.Empty);
                }

                var whosInControlSection = await _qnaApiClient.GetSectionBySectionNo(model.ApplicationId, RoatpWorkflowSequenceIds.YourOrganisation, RoatpWorkflowSectionIds.YourOrganisation.WhosInControl);

                var result = await _tabularDataRepository.EditTabularDataRecord(
                    model.ApplicationId,
                    whosInControlSection.Id,
                    RoatpWorkflowPageIds.WhosInControl.AddPartners,
                    RoatpYourOrganisationQuestionIdConstants.AddPartners,
                    RoatpWorkflowQuestionTags.AddPartners,
                    partner,
                    model.Index);
            }

            return(RedirectToAction("ConfirmPartners", new { model.ApplicationId }));
        }
        public async Task <IActionResult> EditPartner(Guid applicationId, int index)
        {
            var partnerTableData = await _tabularDataRepository.GetTabularDataAnswer(applicationId, RoatpWorkflowQuestionTags.AddPartners);

            if (partnerTableData != null)
            {
                if (index >= partnerTableData.DataRows.Count)
                {
                    return(RedirectToAction("ConfirmPartners", new { applicationId }));
                }

                var partner = partnerTableData.DataRows[index];

                var model = new AddEditPeopleInControlViewModel
                {
                    ApplicationId       = applicationId,
                    PersonInControlName = partner.Columns[0],
                    Index               = index,
                    Identifier          = "organisation",
                    DateOfBirthOptional = true,
                    GetHelpAction       = "EditPartner",
                    PageId              = "EditPartner"
                };

                if (partner.Columns.Count > 1 && !string.IsNullOrEmpty(partner.Columns[1]))
                {
                    var dateOfBirth = partner.Columns[1];
                    model.PersonInControlDobMonth = DateOfBirthFormatter.GetMonthNumberFromShortDateOfBirth(dateOfBirth);
                    model.PersonInControlDobYear  = DateOfBirthFormatter.GetYearFromShortDateOfBirth(dateOfBirth);
                    model.DateOfBirthOptional     = false;
                    model.Identifier = "individual";
                }

                PopulateGetHelpWithQuestion(model);

                return(View($"~/Views/Roatp/WhosInControl/EditPartner.cshtml", model));
            }
            return(RedirectToAction("ConfirmPartners", new { applicationId }));
        }