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); }
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 })); }
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); }
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); }
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 }); } }
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 })); }
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 })); }
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)); }
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)); }