diff --git a/schemas/post-office-redirection-business.json b/schemas/post-office-redirection-business.json new file mode 100644 index 0000000..69307c1 --- /dev/null +++ b/schemas/post-office-redirection-business.json @@ -0,0 +1,234 @@ +{ + "id": "post-office-redirection-business", + "name": "Post Office Redirection for a Business", + "description": "Change where your mail is sent (business)", + "fields": [ + { + "name": "applicant", + "type": "object", + "required": true, + "fields": [ + { + "name": "title", + "type": "string", + "label": "Title", + "required": true, + "validations": { + "regex": "^(mr|ms|mrs)$", + "message": "Must select a valid title" + } + }, + { + "name": "firstName", + "type": "string", + "label": "First name", + "required": true, + "validations": { + "min": 2, + "max": 100, + "message": "First name is required" + } + }, + { + "name": "lastName", + "type": "string", + "label": "Last name", + "required": true, + "validations": { + "min": 2, + "max": 100, + "message": "Last name is required" + } + }, + { + "name": "dateOfBirth", + "type": "date", + "label": "Date of birth", + "required": false, + "validations": { + "regex": "^\\d{4}-\\d{2}-\\d{2}$", + "message": "Date of birth is required and must be in YYYY-MM-DD format" + } + }, + { + "name": "idNumber", + "type": "string", + "label": "National Identification (ID) Number", + "required": false, + "validations": { + "min": 2, + "message": "ID Number must be at least 2 characters" + } + }, + { + "name": "passportNumber", + "type": "string", + "label": "Passport Number", + "required": false, + "validations": { + "message": "Passport number must be at least 6 characters" + } + }, + { + "name": "email", + "type": "email", + "label": "Email Address", + "required": true + }, + { + "name": "telephoneNumber", + "type": "string", + "label": "Telephone Number", + "required": true, + "validations": { + "regex": "^\\+?[0-9]{10,15}$", + "message": "Telephone number must be 10-15 digits" + } + } + ] + }, + { + "name": "oldBusinessAddress", + "type": "object", + "required": true, + "fields": [ + { + "name": "addressLine1", + "type": "string", + "label": "Address Line 1", + "required": true, + "validations": { + "min": 5, + "max": 200, + "message": "Address must be at least 5 characters" + } + }, + { + "name": "addressLine2", + "type": "string", + "label": "Address Line 2", + "required": false, + "validations": { + "max": 200 + } + }, + { + "name": "parish", + "type": "string", + "label": "Parish", + "required": true, + "validations": { + "regex": "^(christ-church|st-andrew|st-george|st-james|st-john|st-joseph|st-lucy|st-michael|st-peter|st-philip|st-thomas)$", + "message": "Must select a valid parish" + } + }, + { + "name": "postalCode", + "type": "string", + "label": "Postal Code", + "required": false, + "validations": { + "regex": "^BB\\d{5}$", + "message": "Enter a valid postal code (e.g., BB17004)" + } + } + ] + }, + { + "name": "newBusinessAddress", + "type": "object", + "required": true, + "fields": [ + { + "name": "addressLine1", + "type": "string", + "label": "Address Line 1", + "required": true, + "validations": { + "min": 5, + "max": 200, + "message": "Address must be at least 5 characters" + } + }, + { + "name": "addressLine2", + "type": "string", + "label": "Address Line 2", + "required": false, + "validations": { + "max": 200 + } + }, + { + "name": "parish", + "type": "string", + "label": "Parish", + "required": true, + "validations": { + "regex": "^(christ-church|st-andrew|st-george|st-james|st-john|st-joseph|st-lucy|st-michael|st-peter|st-philip|st-thomas)$", + "message": "Must select a valid parish" + } + }, + { + "name": "postalCode", + "type": "string", + "label": "Postal Code", + "required": false, + "validations": { + "regex": "^BB\\d{5}$", + "message": "Enter a valid postal code (e.g., BB17004)" + } + }, + { + "name": "isMovingPermanent", + "type": "string", + "label": "Are you moving permanently?", + "required": true, + "validations": { + "regex": "^(yes|no)$", + "message": "Must select an option" + } + }, + { + "name": "redirectionStartDate", + "type": "date", + "label": "Redirection Start Date", + "required": false, + "validations": { + "regex": "^\\d{4}-\\d{2}-\\d{2}$", + "message": "Redirection Start Date is required and must be in YYYY-MM-DD format" + } + }, + { + "name": "redirectionEndDate", + "type": "date", + "label": "Redirection End Date", + "required": false, + "validations": { + "regex": "^\\d{4}-\\d{2}-\\d{2}$", + "message": "Redirection End Date is required and must be in YYYY-MM-DD format" + } + } + ] + }, + { + "name": "uploadDocumentUrls", + "type": "array", + "label": "Uploaded Documents", + "required": true, + "items": { + "type": "string" + } + } + ], + "processors": [ + { + "type": "email", + "config": { + "to": "{{db:post-office-redirection-business:admin_email}}", + "subject": "New Request to Redirect Mail for a Business - {{formData.applicant.firstName}} {{formData.applicant.lastName}}", + "template": "post-office-redirection-business" + } + } + ] +} diff --git a/schemas/post-office-redirection-deceased.json b/schemas/post-office-redirection-deceased.json new file mode 100644 index 0000000..eb7110b --- /dev/null +++ b/schemas/post-office-redirection-deceased.json @@ -0,0 +1,234 @@ +{ + "id": "post-office-redirection-deceased", + "name": "Post Office Redirection for the Deceased", + "description": "Change where your mail is sent (deceased)", + "fields": [ + { + "name": "applicant", + "type": "object", + "required": true, + "fields": [ + { + "name": "title", + "type": "string", + "label": "Title", + "required": true, + "validations": { + "regex": "^(mr|ms|mrs)$", + "message": "Must select a valid title" + } + }, + { + "name": "firstName", + "type": "string", + "label": "First name", + "required": true, + "validations": { + "min": 2, + "max": 100, + "message": "First name is required" + } + }, + { + "name": "lastName", + "type": "string", + "label": "Last name", + "required": true, + "validations": { + "min": 2, + "max": 100, + "message": "Last name is required" + } + }, + { + "name": "dateOfBirth", + "type": "date", + "label": "Date of birth", + "required": false, + "validations": { + "regex": "^\\d{4}-\\d{2}-\\d{2}$", + "message": "Date of birth is required and must be in YYYY-MM-DD format" + } + }, + { + "name": "idNumber", + "type": "string", + "label": "National Identification (ID) Number", + "required": false, + "validations": { + "min": 2, + "message": "ID Number must be at least 2 characters" + } + }, + { + "name": "passportNumber", + "type": "string", + "label": "Passport Number", + "required": false, + "validations": { + "message": "Passport number must be at least 6 characters" + } + }, + { + "name": "email", + "type": "email", + "label": "Email Address", + "required": true + }, + { + "name": "telephoneNumber", + "type": "string", + "label": "Telephone Number", + "required": true, + "validations": { + "regex": "^\\+?[0-9]{10,15}$", + "message": "Telephone number must be 10-15 digits" + } + } + ] + }, + { + "name": "oldAddress", + "type": "object", + "required": true, + "fields": [ + { + "name": "addressLine1", + "type": "string", + "label": "Address Line 1", + "required": true, + "validations": { + "min": 5, + "max": 200, + "message": "Address must be at least 5 characters" + } + }, + { + "name": "addressLine2", + "type": "string", + "label": "Address Line 2", + "required": false, + "validations": { + "max": 200 + } + }, + { + "name": "parish", + "type": "string", + "label": "Parish", + "required": true, + "validations": { + "regex": "^(christ-church|st-andrew|st-george|st-james|st-john|st-joseph|st-lucy|st-michael|st-peter|st-philip|st-thomas)$", + "message": "Must select a valid parish" + } + }, + { + "name": "postalCode", + "type": "string", + "label": "Postal Code", + "required": false, + "validations": { + "regex": "^BB\\d{5}$", + "message": "Enter a valid postal code (e.g., BB17004)" + } + } + ] + }, + { + "name": "newAddress", + "type": "object", + "required": true, + "fields": [ + { + "name": "addressLine1", + "type": "string", + "label": "Address Line 1", + "required": true, + "validations": { + "min": 5, + "max": 200, + "message": "Address must be at least 5 characters" + } + }, + { + "name": "addressLine2", + "type": "string", + "label": "Address Line 2", + "required": false, + "validations": { + "max": 200 + } + }, + { + "name": "parish", + "type": "string", + "label": "Parish", + "required": true, + "validations": { + "regex": "^(christ-church|st-andrew|st-george|st-james|st-john|st-joseph|st-lucy|st-michael|st-peter|st-philip|st-thomas)$", + "message": "Must select a valid parish" + } + }, + { + "name": "postalCode", + "type": "string", + "label": "Postal Code", + "required": false, + "validations": { + "regex": "^BB\\d{5}$", + "message": "Enter a valid postal code (e.g., BB17004)" + } + }, + { + "name": "isMovingPermanent", + "type": "string", + "label": "Are you moving permanently?", + "required": true, + "validations": { + "regex": "^(yes|no)$", + "message": "Must select an option" + } + }, + { + "name": "redirectionStartDate", + "type": "date", + "label": "Redirection Start Date", + "required": false, + "validations": { + "regex": "^\\d{4}-\\d{2}-\\d{2}$", + "message": "Redirection Start Date is required and must be in YYYY-MM-DD format" + } + }, + { + "name": "redirectionEndDate", + "type": "date", + "label": "Redirection End Date", + "required": false, + "validations": { + "regex": "^\\d{4}-\\d{2}-\\d{2}$", + "message": "Redirection End Date is required and must be in YYYY-MM-DD format" + } + } + ] + }, + { + "name": "uploadDocumentUrls", + "type": "array", + "label": "Uploaded Documents", + "required": true, + "items": { + "type": "string" + } + } + ], + "processors": [ + { + "type": "email", + "config": { + "to": "{{db:post-office-redirection-deceased:admin_email}}", + "subject": "New Request to Redirect Mail for a Deceased Person - {{formData.applicant.firstName}} {{formData.applicant.lastName}}", + "template": "post-office-redirection-deceased" + } + } + ] +} diff --git a/schemas/post-office-redirection-notice.json b/schemas/post-office-redirection-individual.json similarity index 54% rename from schemas/post-office-redirection-notice.json rename to schemas/post-office-redirection-individual.json index 12c9d93..33fd9e4 100644 --- a/schemas/post-office-redirection-notice.json +++ b/schemas/post-office-redirection-individual.json @@ -1,61 +1,95 @@ { - "id": "post-office-redirection-notice", - "name": "Post Office Redirection Notice", - "description": "Form to submit a post office redirection notice", + "id": "post-office-redirection-individual", + "name": "Post Office Redirection for an Individual", + "description": "Change where your mail is sent (individual)", "fields": [ { - "name": "personal", + "name": "applicant", "type": "object", - "label": "Application Details", "required": true, "fields": [ + { + "name": "title", + "type": "string", + "label": "Title", + "required": true, + "validations": { + "regex": "^(mr|ms|mrs)$", + "message": "Must select a valid title" + } + }, { "name": "firstName", "type": "string", - "label": "First Name", + "label": "First name", "required": true, "validations": { "min": 2, - "max": 50, - "message": "First name must be at least 2 characters" + "max": 100, + "message": "First name is required" } }, { "name": "lastName", "type": "string", - "label": "Last Name", + "label": "Last name", "required": true, "validations": { "min": 2, - "max": 50, - "message": "Last name must be at least 2 characters" + "max": 100, + "message": "Last name is required" } }, { "name": "dateOfBirth", "type": "date", - "label": "Date of Birth", - "required": true, + "label": "Date of birth", + "required": false, "validations": { "regex": "^\\d{4}-\\d{2}-\\d{2}$", - "message": "Date must be in YYYY-MM-DD format" + "message": "Date of birth is required and must be in YYYY-MM-DD format" } }, { "name": "idNumber", - "type": "number", - "label": "ID Number", + "type": "string", + "label": "National Identification (ID) Number", + "required": false, + "validations": { + "min": 2, + "message": "ID Number must be at least 2 characters" + } + }, + { + "name": "passportNumber", + "type": "string", + "label": "Passport Number", "required": false, "validations": { - "message": "ID Number must be a valid number" + "message": "Passport number must be at least 6 characters" + } + }, + { + "name": "email", + "type": "email", + "label": "Email Address", + "required": true + }, + { + "name": "telephoneNumber", + "type": "string", + "label": "Telephone Number", + "required": true, + "validations": { + "regex": "^\\+?[0-9]{10,15}$", + "message": "Telephone number must be 10-15 digits" } } ] }, { - "name": "oldaddress", + "name": "oldAddress", "type": "object", - "label": "Old Address", "required": true, "fields": [ { @@ -65,7 +99,7 @@ "required": true, "validations": { "min": 5, - "max": 100, + "max": 200, "message": "Address must be at least 5 characters" } }, @@ -75,7 +109,7 @@ "label": "Address Line 2", "required": false, "validations": { - "max": 100 + "max": 200 } }, { @@ -84,7 +118,8 @@ "label": "Parish", "required": true, "validations": { - "message": "Please select a valid parish" + "regex": "^(christ-church|st-andrew|st-george|st-james|st-john|st-joseph|st-lucy|st-michael|st-peter|st-philip|st-thomas)$", + "message": "Must select a valid parish" } }, { @@ -93,7 +128,8 @@ "label": "Postal Code", "required": false, "validations": { - "max": 10 + "regex": "^BB\\d{5}$", + "message": "Enter a valid postal code (e.g., BB17004)" } } ] @@ -101,7 +137,6 @@ { "name": "newAddress", "type": "object", - "label": "New Address", "required": true, "fields": [ { @@ -111,7 +146,7 @@ "required": true, "validations": { "min": 5, - "max": 100, + "max": 200, "message": "Address must be at least 5 characters" } }, @@ -121,7 +156,7 @@ "label": "Address Line 2", "required": false, "validations": { - "max": 100 + "max": 200 } }, { @@ -130,7 +165,8 @@ "label": "Parish", "required": true, "validations": { - "message": "Please select a valid parish" + "regex": "^(christ-church|st-andrew|st-george|st-james|st-john|st-joseph|st-lucy|st-michael|st-peter|st-philip|st-thomas)$", + "message": "Must select a valid parish" } }, { @@ -139,85 +175,38 @@ "label": "Postal Code", "required": false, "validations": { - "max": 10 - } - } - ] - }, - { - "name": "houseMembers", - "type": "object", - "label": "House Member Details", - "required": true, - "fields": [ - { - "name": "firstName", - "type": "string", - "label": "First Name", - "required": true, - "validations": { - "min": 2, - "max": 50, - "message": "First name must be at least 2 characters" + "regex": "^BB\\d{5}$", + "message": "Enter a valid postal code (e.g., BB17004)" } }, { - "name": "lastName", + "name": "isMovingPermanent", "type": "string", - "label": "Last Name", + "label": "Are you moving permanently?", "required": true, "validations": { - "min": 2, - "max": 50, - "message": "Last name must be at least 2 characters" - } - }, - { - "name": "idNumber", - "type": "number", - "label": "ID Number", - "required": false, - "validations": { - "message": "ID Number must be a valid number" + "regex": "^(yes|no)$", + "message": "Must select an option" } }, { - "name": "addAnother", - "type": "string", - "label": "Do you want to add another member?", + "name": "redirectionStartDate", + "type": "date", + "label": "Redirection Start Date", "required": false, "validations": { - "regex": "^(yes|no)$", - "message": "Must be 'yes' or 'no'" - } - } - ] - }, - { - "name": "businessInformation", - "type": "object", - "label": "Business Information", - "required": false, - "fields": [ - { - "name": "belongsToBusiness", - "type": "string", - "label": "Is this for a business/company?", - "required": true, - "validations": { - "regex": "^(true|false)$", - "message": "Must be 'true' or 'false'" + "regex": "^\\d{4}-\\d{2}-\\d{2}$", + "message": "Redirection Start Date is required and must be in YYYY-MM-DD format" } }, { - "name": "businessName", - "type": "string", - "label": "Business Name", + "name": "redirectionEndDate", + "type": "date", + "label": "Redirection End Date", "required": false, "validations": { - "min": 2, - "max": 100, - "message": "Business name must be at least 2 characters" + "regex": "^\\d{4}-\\d{2}-\\d{2}$", + "message": "Redirection End Date is required and must be in YYYY-MM-DD format" } } ] @@ -227,9 +216,9 @@ { "type": "email", "config": { - "to": "{{db:post-office-redirection-notice:admin_email}}", - "subject": "New Post Office Redirection Notice Request - {{formData.personal.firstName}} {{formData.personal.lastName}}", - "template": "post-office-redirection-notice" + "to": "{{db:post-office-redirection-individual:admin_email}}", + "subject": "New Request to Redirect Mail for an individual - {{formData.applicant.firstName}} {{formData.applicant.lastName}}", + "template": "post-office-redirection-individual" } } ]