Exemple #1
0
        public void Checking_Row_Filled_Same_When_Table_Filled_Returns_True()
        {
            var tabularData = new TabularData {
                DataRows = new List <TabularDataRow> {
                    new TabularDataRow {
                        Columns = new List <string> {
                            "item 4", "item 3"
                        }
                    },
                    new TabularDataRow {
                        Columns = new List <string> {
                            "item 1", "item 2"
                        }
                    },
                    new TabularDataRow {
                        Columns = new List <string> {
                            "item 5", "item 6"
                        }
                    }
                }
            };
            var tabularDataRow = new TabularDataRow {
                Columns = new List <string> {
                    "item 1", "item 2"
                }
            };

            var result = new TabularDataService().IsRowAlreadyPresent(tabularData, tabularDataRow);

            Assert.IsTrue(result);
        }
Exemple #2
0
        public bool IsRowAlreadyPresent(TabularData currentTabularData, TabularDataRow newRow)
        {
            var isPresent = false;

            foreach (var row in currentTabularData.DataRows)
            {
                isPresent = true;
                if (row.Columns.Count != newRow.Columns.Count)
                {
                    isPresent = false;
                }
                else
                {
                    for (var i = 0; i < row.Columns.Count; i++)
                    {
                        if (newRow.Columns[i] == row.Columns[i])
                        {
                            continue;
                        }
                        isPresent = false;
                        break;
                    }

                    if (isPresent)
                    {
                        return(isPresent);
                    }
                }
            }

            return(isPresent);
        }
        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 #4
0
        public void Checking_Row_Already_Present_When_Table_And_Row_Empty_Returns_False()
        {
            var tabularData = new TabularData {
                DataRows = new List <TabularDataRow>()
            };
            var tabularDataRow = new TabularDataRow();

            var result = new TabularDataService().IsRowAlreadyPresent(tabularData, tabularDataRow);

            Assert.IsFalse(result);
        }
Exemple #5
0
        private static TabularDataRow TransformDataRow(this TabularDataRow tabularDataRow)
        {
            var dataRow = new TabularDataRow
            {
                Id      = tabularDataRow.Id,
                Columns = new List <string>()
            };

            if (tabularDataRow.Columns != null && tabularDataRow.Columns.Any())
            {
                dataRow.Columns = tabularDataRow.Columns.TransformColumns();
            }

            return(dataRow);
        }
Exemple #6
0
        public void Checking_Row_Already_Present_When_Table_Empty_And_Row_Filled_Returns_False()
        {
            var tabularData = new TabularData {
                DataRows = new List <TabularDataRow>()
            };
            var tabularDataRow = new TabularDataRow {
                Columns = new List <string> {
                    "item 1", "item 2"
                }
            };

            var result = new TabularDataService().IsRowAlreadyPresent(tabularData, tabularDataRow);

            Assert.IsFalse(result);
        }
        private static void CreateCompaniesHousePscData(ApplicationDetails applicationDetails, List <PreambleAnswer> questions)
        {
            if (applicationDetails.CompanySummary.PersonsWithSignificantControl != null && applicationDetails.CompanySummary.PersonsWithSignificantControl.Count > 0)
            {
                var table = new TabularData
                {
                    Caption       = "People with significant control (PSCs)",
                    HeadingTitles = new List <string> {
                        "Name", "Date of birth"
                    },
                    DataRows = new List <TabularDataRow>()
                };

                foreach (var person in applicationDetails.CompanySummary.PersonsWithSignificantControl)
                {
                    var dataRow = new TabularDataRow
                    {
                        Id      = person.Id,
                        Columns = new List <string> {
                            person.Name, FormatDateOfBirth(person.DateOfBirth)
                        }
                    };
                    table.DataRows.Add(dataRow);
                }

                questions.Add(new PreambleAnswer
                {
                    QuestionId = RoatpYourOrganisationQuestionIdConstants.CompaniesHousePSCs,
                    Value      = JsonConvert.SerializeObject(table),
                    PageId     = RoatpWorkflowPageIds.WhosInControl.CompaniesHouseStartPage,
                    SequenceId = RoatpWorkflowSequenceIds.YourOrganisation,
                    SectionId  = RoatpWorkflowSectionIds.YourOrganisation.WhosInControl
                });
            }
            else
            {
                questions.Add(new PreambleAnswer
                {
                    QuestionId = RoatpYourOrganisationQuestionIdConstants.CompaniesHousePSCs,
                    Value      = string.Empty,
                    PageId     = RoatpWorkflowPageIds.WhosInControl.CompaniesHouseStartPage,
                    SequenceId = RoatpWorkflowSequenceIds.YourOrganisation,
                    SectionId  = RoatpWorkflowSectionIds.YourOrganisation.WhosInControl
                });
            }
        }
Exemple #8
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 }));
        }
        private static void CreateCharityTrusteeData(ApplicationDetails applicationDetails, List <PreambleAnswer> questions)
        {
            if (applicationDetails.CharitySummary.Trustees != null && applicationDetails.CharitySummary.Trustees.Count > 0)
            {
                var table = new TabularData
                {
                    HeadingTitles = new List <string> {
                        "Name"
                    },
                    DataRows = new List <TabularDataRow>()
                };

                foreach (var trustee in applicationDetails.CharitySummary.Trustees)
                {
                    var dataRow = new TabularDataRow
                    {
                        Id      = trustee.Id,
                        Columns = new List <string> {
                            trustee.Name
                        }
                    };
                    table.DataRows.Add(dataRow);
                }

                questions.Add(new PreambleAnswer
                {
                    QuestionId = RoatpYourOrganisationQuestionIdConstants.CharityCommissionTrustees,
                    Value      = JsonConvert.SerializeObject(table),
                    PageId     = RoatpWorkflowPageIds.WhosInControl.CharityCommissionTrustees,
                    SequenceId = RoatpWorkflowSequenceIds.YourOrganisation,
                    SectionId  = RoatpWorkflowSectionIds.YourOrganisation.WhosInControl
                });
            }
            else
            {
                questions.Add(new PreambleAnswer
                {
                    QuestionId = RoatpYourOrganisationQuestionIdConstants.CharityCommissionTrustees,
                    Value      = string.Empty,
                    PageId     = RoatpWorkflowPageIds.WhosInControl.CharityCommissionTrustees,
                    SequenceId = RoatpWorkflowSequenceIds.YourOrganisation,
                    SectionId  = RoatpWorkflowSectionIds.YourOrganisation.WhosInControl
                });
            }
        }
        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 }));
        }
Exemple #11
0
        public void Checking_Row_Filled_Same_But_With_Extra_Elements_When_Table_Filled_Returns_False()
        {
            var tabularData = new TabularData {
                DataRows = new List <TabularDataRow> {
                    new TabularDataRow {
                        Columns = new List <string> {
                            "item 1", "item 2"
                        }
                    }
                }
            };
            var tabularDataRow = new TabularDataRow {
                Columns = new List <string> {
                    "item 1", "item 2", "item 3"
                }
            };

            var result = new TabularDataService().IsRowAlreadyPresent(tabularData, tabularDataRow);

            Assert.IsFalse(result);
        }
        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 }));
        }
Exemple #13
0
        public async Task <bool> EditTabularDataRecord(Guid applicationId, Guid sectionId, string pageId, string questionId, string questionTag, TabularDataRow record, int index)
        {
            var tabularDataAnswer = await GetTabularDataAnswer(applicationId, questionTag);

            if (index < 0 || index >= tabularDataAnswer.DataRows.Count)
            {
                return(await Task.FromResult(false));
            }
            tabularDataAnswer.DataRows[index] = record;

            return(await SaveTabularDataAnswer(applicationId, sectionId, pageId, questionId, tabularDataAnswer));
        }
Exemple #14
0
        public async Task <bool> UpsertTabularDataRecord(Guid applicationId, Guid sectionId, string pageId, string questionId, string questionTag, TabularDataRow record)
        {
            var tabularDataAnswer = await GetTabularDataAnswer(applicationId, questionTag);

            if (_tabularDataService.IsRowAlreadyPresent(tabularDataAnswer, record))
            {
                return(true);
            }

            tabularDataAnswer.DataRows.Add(record);
            return(await SaveTabularDataAnswer(applicationId, sectionId, pageId, questionId, tabularDataAnswer));
        }