Skip to content

Commit

Permalink
Merge pull request #71 from companieshouse/feature/IDVA5-154-Sole-tra…
Browse files Browse the repository at this point in the history
…der-What-is-your-nationality

Feature/idva5 154 sole trader what is your nationality
  • Loading branch information
swalke-ch authored Feb 22, 2024
2 parents 02e4d0e + 7f49a8a commit 1c00cae
Show file tree
Hide file tree
Showing 11 changed files with 183 additions and 343 deletions.
228 changes: 1 addition & 227 deletions lib/nationalityList.ts
Original file line number Diff line number Diff line change
@@ -1,229 +1,3 @@
const nationalityList = [
"British",
"Afghan",
"Albanian",
"Algerian",
"American",
"Andorran",
"Angolan",
"Anguillan",
"Citizen of Antigua and Barbuda",
"Argentine",
"Armenian",
"Australian",
"Austrian",
"Azerbaijani",
"Bahamian",
"Bahraini",
"Bangladeshi",
"Barbadian",
"Belarusian",
"Belgian",
"Belizean",
"Beninese",
"Bermudian",
"Bhutanese",
"Bolivian",
"Citizen of Bosnia and Herzegovina",
"Botswanan",
"Brazilian",
"British Virgin Islander",
"Bruneian",
"Bulgarian",
"Burkinan",
"Burmese",
"Burundian",
"Cambodian",
"Cameroonian",
"Canadian",
"Cape Verdean",
"Cayman Islander",
"Central African",
"Chadian",
"Chilean",
"Chinese",
"Colombian",
"Comoran",
"Congolese (Congo)",
"Congolese (DRC)",
"Cook Islander",
"Costa Rican",
"Croatian",
"Cuban",
"Cymraes",
"Cymro",
"Cypriot",
"Czech",
"Danish",
"Djiboutian",
"Dominican",
"Citizen of the Dominican Republic",
"Dutch",
"East Timorese",
"Ecuadorean",
"Egyptian",
"Emirati",
"English",
"Equatorial Guinean",
"Eritrean",
"Estonian",
"Ethiopian",
"Faroese",
"Fijian",
"Filipino",
"Finnish",
"French",
"Gabonese",
"Gambian",
"Georgian",
"German",
"Ghanaian",
"Gibraltarian",
"Greek",
"Greenlandic",
"Grenadian",
"Guamanian",
"Guatemalan",
"Citizen of Guinea-Bissau",
"Guinean",
"Guyanese",
"Haitian",
"Honduran",
"Hong Konger",
"Hungarian",
"Icelandic",
"Indian",
"Indonesian",
"Iranian",
"Iraqi",
"Irish",
"Israeli",
"Italian",
"Ivorian",
"Jamaican",
"Japanese",
"Jordanian",
"Kazakh",
"Kenyan",
"Kittitian",
"Citizen of Kiribati",
"Kosovan",
"Kuwaiti",
"Kyrgyz",
"Lao",
"Latvian",
"Lebanese",
"Liberian",
"Libyan",
"Liechtenstein citizen",
"Lithuanian",
"Luxembourger",
"Macanese",
"Macedonian",
"Malagasy",
"Malawian",
"Malaysian",
"Maldivian",
"Malian",
"Maltese",
"Marshallese",
"Martiniquais",
"Mauritanian",
"Mauritian",
"Mexican",
"Micronesian",
"Moldovan",
"Monegasque",
"Mongolian",
"Montenegrin",
"Montserratian",
"Moroccan",
"Mosotho",
"Mozambican",
"Namibian",
"Nauruan",
"Nepalese",
"New Zealander",
"Nicaraguan",
"Nigerian",
"Nigerien",
"Niuean",
"North Korean",
"Northern Irish",
"Norwegian",
"Omani",
"Pakistani",
"Palauan",
"Palestinian",
"Panamanian",
"Papua New Guinean",
"Paraguayan",
"Peruvian",
"Pitcairn Islander",
"Polish",
"Portuguese",
"Prydeinig",
"Puerto Rican",
"Qatari",
"Romanian",
"Russian",
"Rwandan",
"Salvadorean",
"Sammarinese",
"Samoan",
"Sao Tomean",
"Saudi Arabian",
"Scottish",
"Senegalese",
"Serbian",
"Citizen of Seychelles",
"Sierra Leonean",
"Singaporean",
"Slovak",
"Slovenian",
"Solomon Islander",
"Somali",
"South African",
"South Korean",
"South Sudanese",
"Spanish",
"Sri Lankan",
"St Helenian",
"St Lucian",
"Stateless",
"Sudanese",
"Surinamese",
"Swazi",
"Swedish",
"Swiss",
"Syrian",
"Taiwanese",
"Tajik",
"Tanzanian",
"Thai",
"Togolese",
"Tongan",
"Trinidadian",
"Tristanian",
"Tunisian",
"Turkish",
"Turkmen",
"Turks and Caicos Islander",
"Tuvaluan",
"Ugandan",
"Ukrainian",
"Uruguayan",
"Uzbek",
"Vatican citizen",
"Citizen of Vanuatu",
"Venezuelan",
"Vietnamese",
"Vincentian",
"Wallisian",
"Welsh",
"Yemeni",
"Zambian",
"Zimbabwean"
];
const nationalityList = "British;Afghan;Albanian;Algerian;American;Andorran;Angolan;Anguillan;Citizen of Antigua and Barbuda;Argentine;Armenian;Australian;Austrian;Azerbaijani;Bahamian;Bahraini;Bangladeshi;Barbadian;Belarusian;Belgian;Belizean;Beninese;Bermudian;Bhutanese;Bolivian;Citizen of Bosnia and Herzegovina;Botswanan;Brazilian;British Virgin Islander;Bruneian;Bulgarian;Burkinan;Burmese;Burundian;Cambodian;Cameroonian;Canadian;Cape Verdean;Cayman Islander;Central African;Chadian;Chilean;Chinese;Colombian;Comoran;Congolese (Congo);Congolese (DRC);Cook Islander;Costa Rican;Croatian;Cuban;Cymraes;Cymro;Cypriot;Czech;Danish;Djiboutian;Dominican;Citizen of the Dominican Republic;Dutch;East Timorese;Ecuadorean;Egyptian;Emirati;English;Equatorial Guinean;Eritrean;Estonian;Ethiopian;Faroese;Fijian;Filipino;Finnish;French;Gabonese;Gambian;Georgian;German;Ghanaian;Gibraltarian;Greek;Greenlandic;Grenadian;Guamanian;Guatemalan;Citizen of Guinea-Bissau;Guinean;Guyanese;Haitian;Honduran;Hong Konger;Hungarian;Icelandic;Indian;Indonesian;Iranian;Iraqi;Irish;Israeli;Italian;Ivorian;Jamaican;Japanese;Jordanian;Kazakh;Kenyan;Kittitian;Citizen of Kiribati;Kosovan;Kuwaiti;Kyrgyz;Lao;Latvian;Lebanese;Liberian;Libyan;Liechtenstein citizen;Lithuanian;Luxembourger;Macanese;Macedonian;Malagasy;Malawian;Malaysian;Maldivian;Malian;Maltese;Marshallese;Martiniquais;Mauritanian;Mauritian;Mexican;Micronesian;Moldovan;Monegasque;Mongolian;Montenegrin;Montserratian;Moroccan;Mosotho;Mozambican;Namibian;Nauruan;Nepalese;New Zealander;Nicaraguan;Nigerian;Nigerien;Niuean;North Korean;Northern Irish;Norwegian;Omani;Pakistani;Palauan;Palestinian;Panamanian;Papua New Guinean;Paraguayan;Peruvian;Pitcairn Islander;Polish;Portuguese;Prydeinig;Puerto Rican;Qatari;Romanian;Russian;Rwandan;Salvadorean;Sammarinese;Samoan;Sao Tomean;Saudi Arabian;Scottish;Senegalese;Serbian;Citizen of Seychelles;Sierra Leonean;Singaporean;Slovak;Slovenian;Solomon Islander;Somali;South African;South Korean;South Sudanese;Spanish;Sri Lankan;St Helenian;St Lucian;Stateless;Sudanese;Surinamese;Swazi;Swedish;Swiss;Syrian;Taiwanese;Tajik;Tanzanian;Thai;Togolese;Tongan;Trinidadian;Tristanian;Tunisian;Turkish;Turkmen;Turks and Caicos Islander;Tuvaluan;Ugandan;Ukrainian;Uruguayan;Uzbek;Vatican citizen;Citizen of Vanuatu;Venezuelan;Vietnamese;Vincentian;Wallisian;Welsh;Yemeni;Zambian;Zimbabwean";

export default nationalityList;
12 changes: 0 additions & 12 deletions lib/utils/error_manifests/nationality.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,18 +25,6 @@ const nationalityErrorManifest = {
doubleThirdNationality: {
summary: "Enter a different third nationality",
inline: "Enter a different third nationality"
},
charLimit1stNationality: {
summary: "Nationality can be no longer than 50 characters",
inline: "Nationality can be no longer than 50 characters"
},
charLimit2ndNationality: {
summary: "For technical reasons, we are not able to accept dual nationalities with a total of more than 49 characters",
inline: "For technical reasons, we are not able to accept dual nationalities with a total of more than 49 characters"
},
charLimit3rdNationality: {
summary: "For technical reasons, we are not able to accept multiple nationalities with a total of more than 48 characters",
inline: "For technical reasons, we are not able to accept multiple nationalities with a total of more than 48 characters"
}

}
Expand Down
44 changes: 0 additions & 44 deletions lib/validation/nationality.ts

This file was deleted.

4 changes: 1 addition & 3 deletions src/main/common/__utils/constants.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1 @@
export const CHARACTER_LIMIT_50 = 50;
export const CHARACTER_LIMIT_49 = 49;
export const CHARACTER_LIMIT_48 = 48;

Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,22 @@ import { validationResult } from "express-validator";
import nationalityList from "../../../../../lib/nationalityList";
import { FormattedValidationErrors, formatValidationError } from "../../../validation/validation";
import * as config from "../../../config";
import { BASE_URL } from "../../../types/pageURL";
import { SOLE_TRADER_DATE_OF_BIRTH, BASE_URL, SOLE_TRADER_WHERE_DO_YOU_LIVE } from "../../../types/pageURL";

export const get = async (req: Request, res: Response, next: NextFunction) => {
req.session.user = req.session.user || {};
res.render(config.SOLE_TRADER_WHAT_IS_YOUR_NATIONALITY, {
nationalityList: nationalityList,
title: "What is your nationality?",
previousPage: BASE_URL + "/sole-trader/date-of-birth"
previousPage: BASE_URL + SOLE_TRADER_DATE_OF_BIRTH,
firstName: req.session.user.firstName,
lastName: req.session.user.lastName

});
};

export const post = async (req: Request, res: Response, next: NextFunction) => {
console.log("Form submission data:", req.body);
req.session.user = req.session.user || {};
try {
const errorList = validationResult(req);

Expand All @@ -24,13 +28,17 @@ export const post = async (req: Request, res: Response, next: NextFunction) => {
nationalityList: nationalityList,
pageProperties: pageProperties,
title: "What is your nationality?",
previousPage: BASE_URL + "/sole-trader/date-of-birth"
previousPage: BASE_URL + SOLE_TRADER_DATE_OF_BIRTH,
payload: req.body,
firstName: req.session.user.firstName,
lastName: req.session.user.lastName

});// determined from user not in banned list
} else {
// If validation passes, redirect to the next page
res.redirect(BASE_URL + "/sole-trader/where-do-you-live");
res.redirect(BASE_URL + SOLE_TRADER_WHERE_DO_YOU_LIVE);
// if banned user redirect kickoutpage- under construction
/* res.redirect("/register-acsp/sole-trader/stop-screen-not-a-soletrader"); */
/* res.redirect("/sole-trader/stop-screen-not-a-soletrader"); */
}
} catch (error) {
next(error);
Expand Down
2 changes: 1 addition & 1 deletion src/main/routes/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ import { nameValidator } from "../../../lib/validation/name";
import { correspondenceAddressAutoLookupValidator } from "../validation/correspondenceAddressAutoLookup";
import { correspondenceAddressListValidator } from "../validation/correspondanceAddressList";
import { sectorYouWorkInValidator } from "../validation/sectorYouWorkIn";
import { nationalityValidator } from "../../../lib/validation/nationality";
import { nationalityValidator } from "../../main/validation/nationality";
import { typeOfBusinessValidator } from "../validation/typeOfBusiness";
import { otherTypeOfBusinessValidator } from "../validation/otherTypeOfBusiness";
import * as urls from "../types/pageURL";
Expand Down
34 changes: 34 additions & 0 deletions src/main/validation/nationality.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
import { body } from "express-validator";
import nationalityList from "../../../lib/nationalityList";
import nationalityErrorManifest from "../../../lib/utils/error_manifests/nationality";

export const nationalityValidator = [
// Validation for 'nationality_input_0'
body("nationality_input_0", nationalityErrorManifest.validation.noNationality.summary).trim().notEmpty().bail().isIn(nationalityList.split(";")),

// Validation for 'nationality_input_1'
body("nationality_input_1")
.custom((value, { req }) => {
if (!nationalityList.includes(value.trim()) && value.trim() !== "") { // Checks the nationality is in the list of nationalities
throw new Error(nationalityErrorManifest.validation.invalid.summary);
} else if (value.trim() === req.body.nationality_input_0.trim() && value.trim() !== "") { // Check if it's the same as 'nationality_input_0'
throw new Error(nationalityErrorManifest.validation.doubleSecondNationality.summary);
} else if (req.body.nationality_input_0 !== "" && value.trim() === "" && req.body.nationality_input_2 !== "") { // Check if 'nationality_input_0' is filled, 'nationality_input_1' is empty, and 'nationality_input_2' is filled
throw new Error(nationalityErrorManifest.validation.invalid.summary);
}
return true;
}),

// Validation for 'nationality_input_2'
body("nationality_input_2")
.optional({ nullable: true, checkFalsy: true })
.isIn(nationalityList.split(";")).withMessage(nationalityErrorManifest.validation.invalid.summary)
.custom((value, { req }) => {
// Check if it's the same as 'nationalityInputSecond' or 'nationalityInput'
if ((value === req.body.nationality_input_1 || value === req.body.nationality_input_0) && value !== " ") {
throw new Error(nationalityErrorManifest.validation.doubleThirdNationality.summary);
}
return true;
})
.isString().withMessage(nationalityErrorManifest.validation.invalid.summary)
];
Loading

0 comments on commit 1c00cae

Please sign in to comment.