diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 0e5df0711..5478611a1 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -71,7 +71,7 @@ jobs: with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - + - name: Wait for images to be available run: | while true; do @@ -92,6 +92,7 @@ jobs: env: DOMAIN: ${{ vars.DOMAIN }} REPLICAS: ${{ vars.REPLICAS }} + SSH_USER: ${{ secrets.SSH_USER }} SMTP_PORT: ${{ secrets.SMTP_PORT }} SMTP_HOST: ${{ secrets.SMTP_HOST }} SMTP_USERNAME: ${{ secrets.SMTP_USERNAME }} diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 000000000..3eb8da281 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,74 @@ +## [1.3.3](https://github.com/opencrvs/opencrvs-farajaland/compare/v1.3.2...v1.3.3) (TBD) + +## Breaking changes + +## New features + +- #### Greater customizability of location data in certificates + The various admin level handlebars e.g. **statePlaceofbirth**, + **districtPrimaryMother** only contained the name of that location which was + not able to take advantage of all the information OpenCRVS had available + about the various admin levels e.g. the name of that location in the + secondary language. So we are introducing a new set of admin level + handlebars that would contain the **id** of that location which we can + resolve into a value of the shape + ``` + { + name: string + alias: string + } + ``` + using the new **"location"** handlebar helper. Here name is the primary + label of the location and alias being the secondary one. Currently only + these 2 fields are available but we will be adding more fields depending on + various countries requirements. If previously the certificate svg used to + contain `{{districtPlaceofbirth}}` then now we can replace it with + `{{location districtPlaceofbirthId 'name'}}`. To access alias, the `'name'` + needs to be replaced with `'alias'`. + + Below is a list of all the new handlebars that are meant to be used with the + "location" handlebar helper. + + - statePrimaryInformantId + - districtPrimaryInformantId + - statePlaceofbirthId + - districtPlaceofbirthId + - statePrimaryMotherId + - districtPrimaryMotherId + - statePrimaryFatherId + - districtPrimaryFatherId + - statePrimaryDeceasedId + - districtPrimaryDeceasedId + - statePlaceofdeathId + - districtPlaceofdeathId + - statePrimaryGroomId + - districtPrimaryGroomId + - statePrimaryBrideId + - districtPrimaryBrideId + - statePlaceofmarriageId + - districtPlaceofmarriageId + - registrar.stateId + - registrar.districtId + - registrar.officeId + - registrationAgent.stateId + - registrationAgent.districtId + - registrationAgent.officeId + + ##### We will be deprecating the counterpart of the above mentioned handlebars that contains only the label of the specified location in a future version so we highly recommend that implementers update their certificates to use these new ones. + +- #### "Spouse" section in Farajaland death form + Spouse section is an optional section in death form. Going forward it will be included in Farajaland example configuration. + +- #### Type of ID dropdown + Farajaland forms will now include a dropdown to select the type of ID an individual is providing e.g. National ID, Driving License etc. instead of being restricted to only national ID number. +- #### Number of dependents of deceased field + As an example of custom field, the deceased section in death form will now include the __numberOfDependants__ field. +- #### Reason for late registration field + The birth & death forms will include another custom field, __reasonForLateRegistration__, which makes use of "LATE_REGISTRATION_TARGET" configuration option in it's visibility conditional. + +## Bug fixes + +- Updated translations for form introduction page and sending for approval to reflect the default notification method being email. +- Remove hard-coded conditionals from "occupation" field to make it usable in the deceased form + +See [Releases](https://github.com/opencrvs/opencrvs-farajaland/releases) for release notes of older releases. diff --git a/infrastructure/server-setup/playbook-1.yml b/infrastructure/server-setup/playbook-1.yml index 88b157bb0..521a9b935 100644 --- a/infrastructure/server-setup/playbook-1.yml +++ b/infrastructure/server-setup/playbook-1.yml @@ -14,6 +14,8 @@ - hosts: all become: yes become_method: sudo + environment: + PIP_BREAK_SYSTEM_PACKAGES: 1 tasks: - name: 'Create app directory' file: diff --git a/infrastructure/server-setup/playbook-3.yml b/infrastructure/server-setup/playbook-3.yml index 35d584f40..96c6b4f9c 100644 --- a/infrastructure/server-setup/playbook-3.yml +++ b/infrastructure/server-setup/playbook-3.yml @@ -14,6 +14,8 @@ - hosts: all become: yes become_method: sudo + environment: + PIP_BREAK_SYSTEM_PACKAGES: 1 tasks: - name: 'Create app directory' file: diff --git a/infrastructure/server-setup/playbook-5.yml b/infrastructure/server-setup/playbook-5.yml index 4fa490e1e..3192091ab 100644 --- a/infrastructure/server-setup/playbook-5.yml +++ b/infrastructure/server-setup/playbook-5.yml @@ -14,6 +14,8 @@ - hosts: all become: yes become_method: sudo + environment: + PIP_BREAK_SYSTEM_PACKAGES: 1 tasks: - name: 'Create app directory' file: diff --git a/src/api/certificate-configuration/handler.ts b/src/api/certificate-configuration/handler.ts index 2e2e1d2ea..26faf7e74 100644 --- a/src/api/certificate-configuration/handler.ts +++ b/src/api/certificate-configuration/handler.ts @@ -27,7 +27,7 @@ export function certificateConfigurationHandler(): Configuration { fonts: { ['Noto Sans']: { normal: `${COUNTRY_CONFIG_URL}/fonts/NotoSans-Regular.ttf`, - bold: `${COUNTRY_CONFIG_URL}/fonts/NotoSans-SemiBold.ttf`, + bold: `${COUNTRY_CONFIG_URL}/fonts/NotoSans-Bold.ttf`, italics: `${COUNTRY_CONFIG_URL}/fonts/NotoSans-Regular.ttf`, bolditalics: `${COUNTRY_CONFIG_URL}/fonts/NotoSans-Regular.ttf` } diff --git a/src/api/content/client/client.json b/src/api/content/client/client.json index aba8d3bf2..2def5a710 100644 --- a/src/api/content/client/client.json +++ b/src/api/content/client/client.json @@ -848,6 +848,7 @@ "fieldAgentHome.requireUpdatesCountLoading": "Checking your declarations", "fieldAgentHome.sentForReviewCount": "Sent for review ({total})", "fieldAgentHome.zeroUpdatesText": "No declarations require updates", + "form.customField.label.numberOfDependants": "No. of dependants", "form.field.label.addFile": "Upload", "form.field.showLabel": "Show", "form.field.hideLabel": "Hide", @@ -1252,11 +1253,11 @@ "form.section.information.name": "Information", "form.section.information.birth.bullet1": "I am going to help you make a declaration of birth.", "form.section.information.birth.bullet2": "As the legal Informant it is important that all the information provided by you is accurate.", - "form.section.information.birth.bullet3": "Once the declaration is processed you will receive you will receive an SMS to tell you when to visit the office to collect the certificate - Take your ID with you.", + "form.section.information.birth.bullet3": "Once the declaration is processed you will receive you will receive an email to tell you when to visit the office to collect the certificate - Take your ID with you.", "form.section.information.birth.bullet4": "Make sure you collect the certificate. A birth certificate is critical for this child, especially to make their life easy later on. It will help to access health services, school examinations and government benefits.", "form.section.information.death.bullet1": "I am going to help you make a declaration of death.", "form.section.information.death.bullet2": "As the legal Informant it is important that all the information provided by you is accurate.", - "form.section.information.death.bullet3": "Once the declaration is processed you will receive you will receive an SMS to tell you when to visit the office to collect the certificate - Take your ID with you.", + "form.section.information.death.bullet3": "Once the declaration is processed you will receive you will receive an email to tell you when to visit the office to collect the certificate - Take your ID with you.", "form.section.information.death.bullet4": "Make sure you collect the certificate. A death certificate is critical to support with inheritance claims and to resolve the affairs of the deceased e.g. closing bank accounts and setting loans.", "form.section.declaration.title": "Declaration details", "form.section.documents.birth.requirements": "The following documents are required", @@ -1287,6 +1288,7 @@ "home.header.placeHolderBrnDrn": "Search for a BRN/DRN", "home.header.placeholderName": "Search for a name", "home.header.placeHolderPhone": "Search for a phone no.", + "home.header.placeHolderId": "Search for an ID", "home.header.placeHolderNationalId": "Search for a national ID.", "home.header.placeHolderTrackingId": "Search for a tracking ID", "home.header.settingsTitle": "Settings", @@ -1409,12 +1411,14 @@ "form.field.label.docTypeMarriageNotice": "Notice of marriage", "form.field.label.proofOfGroomsID": "Proof of groom's identity", "form.field.label.proofOfBridesID": "Proof of bride's identity", + "form.customField.label.reasonForLateRegistrationBirth": "Reason for delayed registration", + "form.customField.label.reasonForLateRegistrationDeath": "Reason for late registration", "misc.createDescription": "Choose a PIN that doesn't have 4 repeating digits or sequential numbers", "misc.createTitle": "Create a PIN", - "misc.description.Complete": "The informant will receive an SMS with a registration number that they can use to collect their certificate.", + "misc.description.Complete": "The informant will receive an email with a registration number that they can use to collect their certificate.", "misc.description.inComplete": "Please add mandatory information before sending for approval.", "misc.newPass.header": "Choose a new password", - "misc.newPass.instruction": "Create a unique password - one that you don’t use for other websites or applications.", + "misc.newPass.instruction": "Create a unique password - one that you don't use for other websites or applications. A secure and easy to remember passphrase could include three random words, while avoiding the use of personal info.", "misc.notif.declarationsSynced": "As you have connectivity, we can synchronize your declarations.", "misc.notif.draftsSaved": "Your draft has been saved", "misc.notif.outboxText": "Outbox ({num})", @@ -1462,7 +1466,7 @@ "navigation.leaderboards": "Leaderboards", "navigation.dashboard": "Dashboard", "navigation.report": "Report", - "password.cases": "Contain upper and lower cases", + "password.cases": "At least one upper and lower case character", "password.label.confirm": "Confirm password", "password.label.current": "Current password", "password.label.new": "New password", @@ -2958,6 +2962,7 @@ "fieldAgentHome.requireUpdatesCountLoading": "Vérification de vos déclarations", "fieldAgentHome.sentForReviewCount": "Envoyées pour révision ({total})", "fieldAgentHome.zeroUpdatesText": "Aucune déclaration ne nécessite de mise à jour", + "form.customField.label.numberOfDependants": "Nombre de personnes à charge", "form.field.showLabel": "Afficher", "form.field.hideLabel": "Cacher", "form.field.nidNotVerified": "Authentifier", @@ -3325,6 +3330,8 @@ "form.field.select.placeholder": "Sélectionnez", "form.field.tooltip.tooltipNationalID": "Il s'agit d'une info-bulle pour guider l'utilisateur dans la saisie de l'identifiant national.", "form.field.dateRangepicker.checkbox.dateLabel": "{rangeStart} à {rangeEnd}", + "form.customField.label.reasonForLateRegistrationBirth": "Raison du retard d'inscription", + "form.customField.label.reasonForLateRegistrationDeath": "Raison de l'inscription tardive", "form.group.reasonNotApplying.parents": "Pourquoi la mère et le père ne font-ils pas de demande ?", "form.preview.group.label.english.name": "Nom anglais", "form.preview.group.label.father.english.name": "Nom anglais du père", @@ -3362,11 +3369,11 @@ "form.section.information.name": "Informations", "form.section.information.birth.bullet1": "Je vais vous aider à faire une déclaration de naissance.", "form.section.information.birth.bullet2": "En tant qu'informateur légal, il est important que toutes les informations que vous fournissez soient exactes.", - "form.section.information.birth.bullet3": "Une fois la déclaration traitée, vous recevrez un SMS vous indiquant quand vous rendre au bureau pour retirer le certificat - Munissez-vous d'une pièce d'identité.", + "form.section.information.birth.bullet3": "Une fois la déclaration traitée, vous recevrez un courriel vous indiquant quand vous rendre au bureau pour retirer le certificat - Munissez-vous d'une pièce d'identité.", "form.section.information.birth.bullet4": "Veillez à récupérer le certificat. Un certificat de naissance est essentiel pour cet enfant, notamment pour lui faciliter la vie plus tard. Il l'aidera à accéder aux services de santé, aux examens scolaires et aux prestations de l'État.", "form.section.information.death.bullet1": "Je vais vous aider à faire une déclaration de décès.", "form.section.information.death.bullet2": "En tant qu'informateur légal, il est important que toutes les informations que vous fournissez soient exactes.", - "form.section.information.death.bullet3": "Une fois la déclaration traitée, vous recevrez un SMS vous indiquant quand vous rendre au bureau pour retirer le certificat - Munissez-vous d'une pièce d'identité.", + "form.section.information.death.bullet3": "Une fois la déclaration traitée, vous recevrez un courriel vous indiquant quand vous rendre au bureau pour retirer le certificat - Munissez-vous d'une pièce d'identité.", "form.section.information.death.bullet4": "Veillez à récupérer le certificat. Le certificat de décès est essentiel pour les demandes d'héritage et pour régler les affaires de la personne décédée, par exemple la fermeture des comptes bancaires et la mise en place des prêts.", "form.section.declaration.title": "Détails de la déclaration", "form.section.documents.birth.requirements": "Les documents suivants sont requis", @@ -3397,6 +3404,7 @@ "home.header.placeHolderBrnDrn": "Recherche d'un BRN/DRN", "home.header.placeholderName": "Rechercher un nom", "home.header.placeHolderPhone": "Recherche d'un numéro de téléphone", + "home.header.placeHolderId": "Recherche d'un ID", "home.header.placeHolderNationalId": "Recherche d'une carte d'identité nationale", "home.header.placeHolderTrackingId": "Recherche d'un ID de suivi", "home.header.settingsTitle": "Paramètres", @@ -3521,10 +3529,10 @@ "form.field.label.proofOfBridesID": "Preuve de l'identité de la mariée", "misc.createDescription": "Choisissez un code PIN qui ne comporte pas 4 chiffres répétitifs ou des numéros séquentiels.", "misc.createTitle": "Créer un code PIN", - "misc.description.Complete": "En envoyant pour approbation, vous confirmez que la déclaration est prête à être approuvée.", + "misc.description.Complete": "L'informateur recevra un courriel contenant un numéro d'enregistrement qu'il pourra utiliser pour retirer son certificat.", "misc.description.inComplete": "Des informations obligatoires sont manquantes. Veuillez ajouter ces informations afin de pouvoir les envoyer pour approbation.", "misc.newPass.header": "Choisissez un nouveau mot de passe", - "misc.newPass.instruction": "Nous vous recommandons de créer un mot de passe unique - un mot de passe que vous n'utilisez pas pour un autre site Web ou une autre application. Remarque. Vous ne pouvez pas réutiliser votre ancien mot de passe une fois que vous l'avez modifié.", + "misc.newPass.instruction": "Créez un mot de passe unique, que vous n'utilisez pas pour d'autres sites web ou applications. Une phrase de passe sûre et facile à retenir pourrait inclure trois mots aléatoires, tout en évitant d'utiliser des informations personnelles.", "misc.notif.declarationsSynced": "Comme vous disposez d'une connectivité, nous pouvons synchroniser vos déclarations.", "misc.notif.draftsSaved": "Votre brouillon a été enregistré", "misc.notif.outboxText": "Boîte d'envoi({num})", @@ -3572,7 +3580,7 @@ "navigation.leaderboards": "Classements", "navigation.dashboard": "Tableau de bord", "navigation.report": "Rapport", - "password.cases": "Contient des majuscules et des minuscules", + "password.cases": "Au moins un caractère majuscule et minuscule", "password.label.confirm": "Confirmez le mot de passe", "password.label.current": "Mot de passe actuel", "password.label.new": "Nouveau mot de passe", @@ -4229,4 +4237,4 @@ } } ] -} +} \ No newline at end of file diff --git a/src/api/content/client/descriptions.json b/src/api/content/client/descriptions.json index f5bc0d238..e9e925b06 100644 --- a/src/api/content/client/descriptions.json +++ b/src/api/content/client/descriptions.json @@ -271,8 +271,6 @@ "constants.issueToInformant": "Issuance of death to informant", "constants.issueConfirmationMessage": "Confirmation of issuance", "constants.idCheckWithoutVerify": "Issuance without the confirmation of proof", - "form.field.label.UNION": "Label for Union", - "form.field.label.DIVISION": "Label for Division", "form.field.label.district": "Label for District", "form.field.label.city": "Label for City", "form.field.label.state": "Label for State", diff --git a/src/api/content/login/login.json b/src/api/content/login/login.json index 33050f847..cbc5576fa 100644 --- a/src/api/content/login/login.json +++ b/src/api/content/login/login.json @@ -64,10 +64,10 @@ "resetCredentials.success.page.subtitle.phone": "{forgottenItem, select, username {Check your phone for a reminder of your username} password {You can now login with your new password} other {}}", "resetCredentials.success.page.subtitle.email": "{forgottenItem, select, username {Check your email for a reminder of your username} password {You can now login with your new password} other {}}", "misc.newPass.header": "Choose a new password", - "misc.newPass.instruction": "Create a unique password one that you don't use for another website or application", + "misc.newPass.instruction": "Create a unique password - one that you don't use for other websites or applications. A secure and easy to remember passphrase could include three random words, while avoiding the use of personal info.", "password.label.confirm": "Confirm password", "password.label.new": "New password", - "password.cases": "Contain upper and lower cases", + "password.cases": "At least one upper and lower case character", "password.match": "Passwords match", "password.minLength": "{min} characters minimum", "password.mismatch": "Passwords do not match", diff --git a/src/api/fonts/NotoSans-Bold.ttf b/src/api/fonts/NotoSans-Bold.ttf new file mode 100644 index 000000000..d84248ed1 Binary files /dev/null and b/src/api/fonts/NotoSans-Bold.ttf differ diff --git a/src/data-seeding/certificates/README.md b/src/data-seeding/certificates/README.md deleted file mode 100644 index 0526732c1..000000000 --- a/src/data-seeding/certificates/README.md +++ /dev/null @@ -1,225 +0,0 @@ -These are all the available certificate handlebars in OpenCRVS - -### ALL EVENTS: -registrationNumber -qrCode -certificateDate -registrar -registrationAgent -registrarName -role -registrarSignature -registrationDate -registrationLocation -contactEmail -contactPhoneNumber -eventDate -informantType -informantFirstName -informantFamilyName -informantBirthDate -informantNationality -informantNID -countryPrimaryInformant -statePrimaryInformant -districtPrimaryInformant -cityPrimaryInformant -addressLine3PrimaryInformant -addressLine2PrimaryInformant -addressLine1PrimaryInformant -postalCodePrimaryInformant -internationalStatePrimaryInformant -internationalDistrictPrimaryInformant -internationalCityPrimaryInformant -internationalAddressLine1PrimaryInformant -internationalAddressLine2PrimaryInformant -internationalAddressLine3PrimaryInformant -internationalPostalCodePrimaryInformant - -### SPECIFICALLY BIRTH: -birthConfigurableIdentifier1 -birthConfigurableIdentifier2 -birthConfigurableIdentifier3 -placeOfBirth -attendantAtBirth -multipleBirth -weightAtBirth -birthType -childFirstName -childFamilyName -childGender -motherReasonNotApplying -motherBirthDate -motherFirstName -motherFamilyName -motherNationality -motherNID -motherMaritalStatus -motherOccupation -motherEducationalAttainment -fatherBirthDate -fatherFirstName -fatherFamilyName -fatherNationality -fatherNID -fatherMaritalStatus -fatherOccupation -fatherEducationalAttainment -countryPlaceofbirth -statePlaceofbirth -districtPlaceofbirth -cityPlaceofbirth -addressLine3Placeofbirth -addressLine2Placeofbirth -addressLine1Placeofbirth -postalCodePlaceofbirth -internationalStatePlaceofbirth -internationalDistrictPlaceofbirth -internationalCityPlaceofbirth -internationalAddressLine1Placeofbirth -internationalAddressLine2Placeofbirth -internationalAddressLine3Placeofbirth -internationalPostalCodePlaceofbirth -countryPrimaryMother -statePrimaryMother -districtPrimaryMother -cityPrimaryMother -addressLine3PrimaryMother -addressLine2PrimaryMother -addressLine1PrimaryMother -postalCodePrimaryMother -internationalStatePrimaryMother -internationalDistrictPrimaryMother -internationalCityPrimaryMother -internationalAddressLine1PrimaryMother -internationalAddressLine2PrimaryMother -internationalAddressLine3PrimaryMother -internationalPostalCodePrimaryMother -fatherReasonNotApplying -countryPrimaryFather -statePrimaryFather -districtPrimaryFather -cityPrimaryFather -addressLine3PrimaryFather -addressLine2PrimaryFather -addressLine1PrimaryFather -postalCodePrimaryFather -internationalStatePrimaryFather -internationalDistrictPrimaryFather -internationalCityPrimaryFather -internationalAddressLine1PrimaryFather -internationalAddressLine2PrimaryFather -internationalAddressLine3PrimaryFather -internationalPostalCodePrimaryFather - -### SPECIFICALLY DEATH: -deceasedFirstName -deceasedFamilyName -deceasedGender -deceasedBirthDate -deceasedNationality -deceasedNID -deceasedMaritalStatus -countryPrimaryDeceased -statePrimaryDeceased -districtPrimaryDeceased -cityPrimaryDeceased -addressLine3PrimaryDeceased -addressLine2PrimaryDeceased -addressLine1PrimaryDeceased -postalCodePrimaryDeceased -internationalStatePrimaryDeceased -internationalDistrictPrimaryDeceased -internationalCityPrimaryDeceased -internationalAddressLine1PrimaryDeceased -internationalAddressLine2PrimaryDeceased -internationalAddressLine3PrimaryDeceased -internationalPostalCodePrimaryDeceased -mannerOfDeath -causeOfDeathEstablished -causeOfDeathMethod -deathDescription -placeOfDeath -countryPlaceofdeath -statePlaceofdeath -districtPlaceofdeath -cityPlaceofdeath -addressLine3Placeofdeath -addressLine2Placeofdeath -addressLine1Placeofdeath -postalCodePlaceofdeath -internationalStatePlaceofdeath -internationalDistrictPlaceofdeath -internationalCityPlaceofdeath -internationalAddressLine1Placeofdeath -internationalAddressLine2Placeofdeath -internationalAddressLine3Placeofdeath -internationalPostalCodePlaceofdeath - -### SPECIFICALLY MARRIAGE: -groomSignature -brideSignature -witnessOneSignature -witnessTwoSignature -groomFirstName -groomFamilyName -groomBirthDate -groomNationality -groomNID -groomMarriedLastNameEng -countryPrimaryGroom -statePrimaryGroom -districtPrimaryGroom -cityPrimaryGroom -addressLine3PrimaryGroom -addressLine2PrimaryGroom -addressLine1PrimaryGroom -postalCodePrimaryGroom -internationalStatePrimaryGroom -internationalDistrictPrimaryGroom -internationalCityPrimaryGroom -internationalAddressLine1PrimaryGroom -internationalAddressLine2PrimaryGroom -internationalAddressLine3PrimaryGroom -internationalPostalCodePrimaryGroom -brideFirstName -brideFamilyName -brideBirthDate -brideNationality -brideNID -brideMarriedLastNameEng -countryPrimaryBride -statePrimaryBride -districtPrimaryBride -cityPrimaryBride -addressLine3PrimaryBride -addressLine2PrimaryBride -addressLine1PrimaryBride -postalCodePrimaryBride -internationalStatePrimaryBride -internationalDistrictPrimaryBride -internationalCityPrimaryBride -internationalAddressLine1PrimaryBride -internationalAddressLine2PrimaryBride -internationalAddressLine3PrimaryBride -internationalPostalCodePrimaryBride -typeOfMarriage -countryPlaceofmarriage -statePlaceofmarriage -districtPlaceofmarriage -cityPlaceofmarriage -addressLine3Placeofmarriage -addressLine2Placeofmarriage -addressLine1Placeofmarriage -postalCodePlaceofmarriage -internationalStatePlaceofmarriage -internationalDistrictPlaceofmarriage -internationalCityPlaceofmarriage -internationalAddressLine1Placeofmarriage -internationalAddressLine2Placeofmarriage -internationalAddressLine3Placeofmarriage -internationalPostalCodePlaceofmarriage -witnessOneFirstName -witnessOneFamilyName -witnessTwoFirstName -witnessTwoFamilyName diff --git a/src/data-seeding/certificates/handler.ts b/src/data-seeding/certificates/handler.ts index ede4b901d..1aa2fbf74 100644 --- a/src/data-seeding/certificates/handler.ts +++ b/src/data-seeding/certificates/handler.ts @@ -16,23 +16,23 @@ export async function certificateHandler(_: Request, h: ResponseToolkit) { const Certificates = [ { event: 'birth', - fileName: 'farajaland-birth-certificate-v1.svg', + fileName: 'Farajaland-birth-certificate-v2.svg', svgCode: readFileSync( - './src/data-seeding/certificates/source/BirthCertificate.svg' + './src/data-seeding/certificates/source/Farajaland-birth-certificate-v2.svg' ).toString() }, { event: 'death', - fileName: 'farajaland-death-certificate-v1.svg', + fileName: 'Farajaland-death-certificate-v2.svg', svgCode: readFileSync( - './src/data-seeding/certificates/source/DeathCertificate.svg' + './src/data-seeding/certificates/source/Farajaland-death-certificate-v2.svg' ).toString() }, { event: 'marriage', - fileName: 'farajaland-marriage-certificate-v1.svg', + fileName: 'Farajaland-marriage-certificate-v2.svg', svgCode: readFileSync( - './src/data-seeding/certificates/source/MarriageCertificate.svg' + './src/data-seeding/certificates/source/Farajaland-marriage-certificate-v2.svg' ).toString() } ] diff --git a/src/data-seeding/certificates/source/DeathCertificate.svg b/src/data-seeding/certificates/source/DeathCertificate.svg deleted file mode 100644 index b13ee0b7d..000000000 --- a/src/data-seeding/certificates/source/DeathCertificate.svg +++ /dev/null @@ -1,94 +0,0 @@ - - - - -{{registrarName}} -Registered by: -Date of registration: -{{registrationDate}} - - - - - - - - This event was registered at {{registrationLocation}} - - - {{eventDate}} - - - Died on - - - Place of death - - - - - -{{#ifCond placeOfBirth '===' 'HEALTH_FACILITY' }} -{{placeOfDeath}} - {{else}} -{{districtPlaceofdeath}}{{internationalDistrictPlaceofdeath}}, {{statePlaceofdeath}}{{internationalStatePlaceofdeath}}, {{countryPlaceofdeath}} -{{/ifCond}} - - - {{deceasedFirstName}} {{deceasedFamilyName}} - - - This is to certify that - - - {{registrationNumber}} - - - Death Registration No - - - Date of issuance of certificate: {{certificateDate}} - - - - - - - - - - - - - - - - - - - - - - - - - - FARAJALAND - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/data-seeding/certificates/source/Farajaland-birth-certificate-v2.svg b/src/data-seeding/certificates/source/Farajaland-birth-certificate-v2.svg new file mode 100644 index 000000000..87172cd87 --- /dev/null +++ b/src/data-seeding/certificates/source/Farajaland-birth-certificate-v2.svg @@ -0,0 +1,185 @@ + + + +CAUTION : THERE ARE OFFENCES RELATING TO FALSIFYING OR ALTERING A CERTIFICATE AND USING OR POSSESSING A FALSE CERTIFICATE IS NOT PROOF OF IDENTITY / ATTENTION : IL EXISTE DES INFRACTIONS RELATIVES A LA FALSIFIATION OU À LA MODIFICATION D'UN CERTIFICAT ET A L'UTILISATION OU LA POSSESSION D'UN FAUX CERTIFICAT. UN CERTIFICAT N'EST PAS UNE PREUVE D'IDENTITE + + + + + + + + + + + + + + + + + + +FARAJALAND + + +{{certificateDate}} +Date of certification / Date de délivrance +{{location registrar.officeId 'name'}}
{{location registrar.districtId 'name'}}, {{location registrar.stateId 'name'}}, Farajaland + +Place of certification / Lieu de délivrance +{{mosipAid}} + + + + {{#ifCond mosipAid '===' undefined }} + + {{else}} + {{mosipAIDLabel}} + {{/ifCond}} + + + + + + +Registrar / L'Officier de l'État Civil +{{registrar.name}} +I certify that this certificate is a true copy of the civil registry and is issued by the mandated authority in pursuance of civil registration law / Je certifie que le présent certificat est une copie conforme du registre d'état civil et qu'il est délivré par l'autorité mandatée conformément à la loi sur l'état civil. + +REPUBLIC OF FARAJALAND / REPUBLIQUE DE FARAJALAND +CERTIFICATE OF BIRTH / ACTE DE NAISSANCE + + +1. +Child’s full name /
Nom complet de l'enfant + +{{childFirstName}} {{childFamilyName}} + + +2. + /
Sexe +Sex + +{{childGender}} + + +3. + /
 +Date of birthDate de naissance + +{{eventDate}} + + +4. + /
 +Place of birthLieu de naissance + + + + {{#ifCond placeOfBirthFacility '===' undefined }} + {{location districtPlaceofbirthId 'name'}}{{internationalDistrictPlaceofbirth}}, + {{location statePlaceofbirthId 'name'}}{{internationalStatePlaceofbirth}}, {{countryPlaceofbirth}} + {{else}} + {{placeOfBirthFacility}} {{placeOfBirthState}}, {{placeOfBirthCountry}} + {{/ifCond}} + + + + +5. + /
 +Mother’s full nameNom complet de la mère + +{{motherFirstName}} {{motherFamilyName}} + + +6. +/
N +Father’s full name om complet du père + +{{fatherFirstName}} {{fatherFamilyName}} + + + +8. +Lieu d'enregistrement + +Place of registration / + +{{location registrar.officeId 'name'}}
{{location registrar.districtId 'name'}}, {{location registrar.stateId 'name'}}, Farajaland + + +9. + +Date of registration / +Date d'enregistrement + +{{registrationDate}} + + +10. +/
 +Registered by Enregistré par + +{{registrar.name}} + + + + +No. {{registrationNumber}} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +{{#ifCond printInAdvance '!==' true}}{{/ifCond}} + + diff --git a/src/data-seeding/certificates/source/Farajaland-death-certificate-v2.svg b/src/data-seeding/certificates/source/Farajaland-death-certificate-v2.svg new file mode 100644 index 000000000..a2770a38c --- /dev/null +++ b/src/data-seeding/certificates/source/Farajaland-death-certificate-v2.svg @@ -0,0 +1,167 @@ + + + +CAUTION : THERE ARE OFFENCES RELATING TO FALSIFYING OR ALTERING A CERTIFICATE AND USING OR POSSESSING A FALSE CERTIFICATE IS NOT PROOF OF IDENTITY / ATTENTION : IL EXISTE DES INFRACTIONS RELATIVES A LA FALSIFIATION OU À LA MODIFICATION D'UN CERTIFICAT ET A L'UTILISATION OU LA POSSESSION D'UN FAUX CERTIFICAT. UN CERTIFICAT N'EST PAS UNE PREUVE D'IDENTITE + + + +{{certificateDate}} +Date of certification / Date de délivrance +{{location registrar.officeId 'name'}}{{location registrar.districtId 'name'}}, {{location registrar.stateId 'name'}}, Farajaland +Place of certification / Lieu de certification + + + + +Registrar / L'Officier de l'État Civil +{{registrar.name}} +I certify that this certificate is a true copy of the civil registry and is issued by the mandated authority in pursuance of civil registration law / Je certifie que le présent certificat est une copie conforme du registre d'état civil et qu'il est délivré par l'autorité mandatée conformément à la loi sur l'état civil. + + +1. +Deceased full name /
Nom complet du défunt + +{{deceasedFirstName}} {{deceasedFamilyName}} + + +2. + /
Sexe +Sex + +{{deceasedGender}} + + +3. + /
 +Date of birthDate de naissance + + {{#ifCond ageOfDeceasedInYears '===' undefined }} + {{deceasedBirthDate}} + {{else}} + {{ageOfDeceasedInYears}} years old + {{/ifCond}} + + + +5. + /
 +Date of deathDate de deces + +{{eventDate}} + + +4. + /
 +Place of deathLieu de naissance + + + {{#ifCond placeOfDeathFacility '===' undefined }} + {{location districtPlaceofdeathId 'name'}}{{internationalDistrictPlaceofdeath}}, + {{location statePlaceofdeathId 'name'}}{{internationalStatePlaceofdeath}}, {{countryPlaceofdeath}} + {{else}} + {{placeOfDeathFacility}} {{placeOfDeathState}}, {{placeOfDeathCountry}} + {{/ifCond}} + + + + + + +5. +Lieu d'enregistrement + +Place of registration / + +{{location registrar.officeId 'name'}}
{{location registrar.districtId 'name'}}, {{location registrar.stateId 'name'}}, Farajaland + + +6. + +Date of registration / +Date d'enregistrement + +{{registrationDate}} + + +7. +/
 +Registered by Enregistré par + +{{registrar.name}} + + + + +No. {{registrationNumber}} + + + + + + + + + + + + + + + + + +FARAJALAND + + +REPUBLIC OF FARAJALAND / REPUBLIQUE DE FARAJALAND +CERTIFICATE OF DEATH / ACTE DE DEATH + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +{{#ifCond printInAdvance '!==' true}}{{/ifCond}} + + diff --git a/src/data-seeding/certificates/source/Farajaland-marriage-certificate-v2.svg b/src/data-seeding/certificates/source/Farajaland-marriage-certificate-v2.svg new file mode 100644 index 000000000..a3615ede4 --- /dev/null +++ b/src/data-seeding/certificates/source/Farajaland-marriage-certificate-v2.svg @@ -0,0 +1,178 @@ + + + +CAUTION : THERE ARE OFFENCES RELATING TO FALSIFYING OR ALTERING A CERTIFICATE AND USING OR POSSESSING A FALSE CERTIFICATE IS NOT PROOF OF IDENTITY / ATTENTION : IL EXISTE DES INFRACTIONS RELATIVES A LA FALSIFIATION OU À LA MODIFICATION D'UN CERTIFICAT ET A L'UTILISATION OU LA POSSESSION D'UN FAUX CERTIFICAT. UN CERTIFICAT N'EST PAS UNE PREUVE D'IDENTITE + + + + + + + + + + + + + + + + + + +FARAJALAND + +{{certificateDate}} +Date of certification / Date de délivrance +{{location registrar.officeId 'name'}}{{location registrar.districtId 'name'}}, {{location registrar.stateId 'name'}}, Farajaland +Place of certification / Lieu de certification + + + + +Registrar / L'Officier de l'État Civil +{{registrar.name}} +I certify that this certificate is a true copy of the civil registry and is issued by the mandated authority in pursuance of civil registration law / Je certifie que le présent certificat est une copie conforme du registre d'état civil et qu'il est délivré par l'autorité mandatée conformément à la loi sur l'état civil. + +REPUBLIC OF FARAJALAND / REPUBLIQUE DE FARAJALAND +CERTIFICATE OF MARRIAGE / ACTE DE MARRIAGE + + +1. +Groom’s full name /
Nom complet du marié + +{{groomFirstName}} {{groomFamilyName}} + + +2. +Bride’s full name /
Nom complet de la mariée + +{{brideFirstName}} {{brideFamilyName}} + + +3. + /
 +Date of marriageDate du mariage + +{{eventDate}} + + +4. + /
 +Place of marriageLieu de mariage + + + {{location districtPlaceofmarriageId 'name'}}{{internationalDistrictPlaceofmarriage}}, + {{location statePlaceofmarriageId 'name'}}{{internationalStatePlaceofmarriage}}, {{countryPlaceofmarriage}} + + + + +5. +Witnesses / Les témoins + +{{witnessOneFirstName}} {{witnessOneFamilyName}}
{{witnessTwoFirstName}} {{witnessTwoFamilyName}} + + + +6. +Lieu d'enregistrement + +Place of registration / + +{{location registrar.officeId 'name'}}
{{location registrar.districtId 'name'}}, {{location registrar.stateId 'name'}}, Farajaland + + +7. + +Date of registration / +Date d'enregistrement + +{{registrationDate}} + + +8. +/
 +Registered by Enregistré par + +{{registrar.name}} + + + +9. +Signatures of bride and groom / Signatures des mariés + + +Groom / Marié + + +Bride / Mariée + + + + +No. {{registrationNumber}} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +{{#ifCond printInAdvance '!==' true}}{{/ifCond}} + + + + + diff --git a/src/data-seeding/certificates/source/MarriageCertificate.svg b/src/data-seeding/certificates/source/MarriageCertificate.svg deleted file mode 100644 index 0fba0d825..000000000 --- a/src/data-seeding/certificates/source/MarriageCertificate.svg +++ /dev/null @@ -1,108 +0,0 @@ - - - - Date of issuance of certificate: {{certificateDate}} - - - - - This event was registered at - - - {{registrationLocation}} - - - {{groomFirstName}} {{groomFamilyName}} &{{brideFirstName}} {{brideFamilyName}} - - - This is to certify that - - - {{eventDate}} - - - Married on - - - Place of Marriage - - - - {{districtPlaceofmarriage}}{{internationalDistrictPlaceofmarriage}}, {{statePlaceofmarriage}}{{internationalStatePlaceofmarriage}}, {{countryPlaceofmarriage}} - - - - - - - - - - - -{{registrarName}} -Registered by: - -Date of registration: -{{registrationDate}} - - {{registrationNumber}} - - - Marriage Registration No - - - - - - - - - - - - - - - - -FARAJALAND - - - - - - -Signature of groom - - - - - - -Signature of bride - - - - - - - - - - - - - - - - - - - - diff --git a/src/data-seeding/certificates/source/BirthCertificate.svg b/src/data-seeding/certificates/source/test/UsingAddressHandlebars.svg similarity index 98% rename from src/data-seeding/certificates/source/BirthCertificate.svg rename to src/data-seeding/certificates/source/test/UsingAddressHandlebars.svg index a86bbb19b..557957a07 100644 --- a/src/data-seeding/certificates/source/BirthCertificate.svg +++ b/src/data-seeding/certificates/source/test/UsingAddressHandlebars.svg @@ -2,80 +2,80 @@ -{{registrarName}} -Registered by: -Date of registration: -{{registrationDate}} - - - - - - - - This event was registered at {{registrationLocation}} - + - {{eventDate}} +Event facility location in one handlebar for births and deaths: - - Was born on + +{{placeOfBirth}}{{placeOfDeath}} - - Place of birth + +Informant address - - + +{{countryPrimaryInformant}} +{{location statePrimaryInformantId 'name'}}{{internationalStatePrimaryInformant}} +{{location districtPrimaryInformantId 'name'}}{{internationalDistrictPrimaryInformant}} +{{cityPrimaryInformant}}{{internationalCityPrimaryInformant}}{{addressLine1RuralOptionPrimaryInformant}} +{{addressLine1UrbanOptionPrimaryInformant}}{{internationalAddressLine1PrimaryInformant}} +{{addressLine2UrbanOptionPrimaryInformant}}{{internationalAddressLine2PrimaryInformant}} +{{addressLine3UrbanOptionPrimaryInformant}}{{internationalAddressLine3PrimaryInformant}} +{{postalCodePrimaryInformant}}{{internationalPostalCodePrimaryInformant}} -{{#ifCond placeOfBirth '===' 'HEALTH_FACILITY' }} -{{placeOfBirth}} - {{else}} -{{districtPlaceofbirth}}{{internationalDistrictPlaceofbirth}}, {{statePlaceofbirth}}{{internationalStatePlaceofbirth}}, {{countryPlaceofbirth}} -{{/ifCond}} +Place of event individual fields + + +{{countryPlaceofbirth}}{{countryPlaceofdeath}}{{countryPlaceofmarriage}} +{{location statePlaceofbirthId 'name'}}{{internationalStatePlaceofbirth}}{{location statePlaceofdeathId 'name'}}{{internationalStatePlaceofdeath}}{{location statePlaceofmarriageId 'name'}}{{internationalStatePlaceofmarriage}} +{{location districtPlaceofbirthId 'name'}}{{internationalDistrictPlaceofbirth}}{{location districtPlaceofdeathId 'name'}}{{internationalDistrictPlaceofdeath}}{{location districtPlaceofmarriageId 'name'}}{{internationalDistrictPlaceofmarriage}} +{{cityPlaceofbirth}}{{internationalCityPlaceofbirth}}{{cityPlaceofdeath}}{{internationalCityPlaceofdeath}}{{cityPlaceofmarriage}}{{internationalCityPlaceofmarriage}}{{addressLine1RuralOptionPlaceofbirth}}{{addressLine1RuralOptionPlaceofdeath}}{{addressLine1RuralOptionPlaceofmarriage}} +{{addressLine1UrbanOptionPlaceofbirth}}{{internationalAddressLine1Placeofbirth}}{{addressLine1UrbanOptionPlaceofdeath}}{{internationalAddressLine1Placeofdeath}}{{addressLine1UrbanOptionPlaceofmarriage}}{{internationalAddressLine1Placeofmarriage}} +{{addressLine2UrbanOptionPlaceofbirth}}{{internationalAddressLine2Placeofbirth}}{{addressLine2UrbanOptionPlaceofdeath}}{{internationalAddressLine2Placeofdeath}}{{addressLine2UrbanOptionPlaceofmarriage}}{{internationalAddressLine2Placeofmarriage}} +{{addressLine3UrbanOptionPlaceofbirth}}{{internationalAddressLine3Placeofbirth}}{{addressLine3UrbanOptionPlaceofdeath}}{{internationalAddressLine3Placeofdeath}}{{addressLine3UrbanOptionPlaceofmarriage}}{{internationalAddressLine3Placeofmarriage}} +{{postalCodePlaceofbirth}}{{internationalPostalCodePlaceofbirth}}{{postalCodePlaceofdeath}}{{internationalPostalCodePlaceofdeath}}{{postalCodePlaceofmarriage}}{{internationalPostalCodePlaceofmarriage}} - {{childFirstName}} {{childFamilyName}} +Mother/Bride address - - This is to certify that + +{{countryPrimaryMother}}{{countryPrimaryBride}} +{{location statePrimaryMotherId 'name'}}{{internationalStatePrimaryMother}}{{location statePrimaryBrideId 'name'}}{{internationalStatePrimaryBride}} +{{location districtPrimaryMotherId 'name'}}{{internationalDistrictPrimaryMother}}{{location districtPrimaryBrideId 'name'}}{{internationalDistrictPrimaryBride}} +{{cityPrimaryMother}}{{internationalCityPrimaryMother}}{{addressLine1RuralOptionPrimaryMother}}{{cityPrimaryBride}}{{internationalCityPrimaryBride}}{{addressLine1RuralOptionPrimaryBride}} +{{addressLine1UrbanOptionPrimaryMother}}{{internationalAddressLine1PrimaryMother}}{{addressLine1UrbanOptionPrimaryBride}}{{internationalAddressLine1PrimaryBride}} +{{addressLine2UrbanOptionPrimaryMother}}{{internationalAddressLine2PrimaryMother}}{{addressLine2UrbanOptionPrimaryBride}}{{internationalAddressLine2PrimaryBride}} +{{addressLine3UrbanOptionPrimaryMother}}{{internationalAddressLine3PrimaryMother}}{{addressLine3UrbanOptionPrimaryBride}}{{internationalAddressLine3PrimaryBride}} +{{postalCodePrimaryMother}}{{internationalPostalCodePrimaryMother}}{{postalCodePrimaryBride}}{{internationalPostalCodePrimaryBride}} - - {{registrationNumber}} + +Father/Groom address - - Birth Registration No + +{{countryPrimaryFather}}{{countryPrimaryGroom}} +{{location statePrimaryFatherId 'name'}}{{internationalStatePrimaryFather}}{{location statePrimaryGroomId 'name'}}{{internationalStatePrimaryGroom}} +{{location districtPrimaryFatherId 'name'}}{{internationalDistrictPrimaryFather}}{{location districtPrimaryGroomId 'name'}}{{internationalDistrictPrimaryGroom}} +{{cityPrimaryFather}}{{internationalCityPrimaryFather}}{{addressLine1RuralOptionPrimaryFather}}{{cityPrimaryGroom}}{{internationalCityPrimaryGroom}}{{addressLine1RuralOptionPrimaryGroom}} +{{addressLine1UrbanOptionPrimaryFather}}{{internationalAddressLine1PrimaryFather}}{{addressLine1UrbanOptionPrimaryGroom}}{{internationalAddressLine1PrimaryGroom}} +{{addressLine2UrbanOptionPrimaryFather}}{{internationalAddressLine2PrimaryFather}}{{addressLine2UrbanOptionPrimaryGroom}}{{internationalAddressLine2PrimaryGroom}} +{{addressLine3UrbanOptionPrimaryFather}}{{internationalAddressLine3PrimaryFather}}{{addressLine3UrbanOptionPrimaryGroom}}{{internationalAddressLine3PrimaryGroom}} +{{postalCodePrimaryFather}}{{internationalPostalCodePrimaryFather}}{{postalCodePrimaryGroom}}{{internationalPostalCodePrimaryGroom}} - - Date of issuance of certificate: {{certificateDate}} + +Deceased's address -: - - - - - - - - - - - - - - - - - - FARAJALAND + +{{countryPrimaryDeceased}} +{{statePrimaryDeceased}}{{internationalStatePrimaryDeceased}} +{{districtPrimaryDeceased}}{{internationalDistrictPrimaryDeceased}} +{{cityPrimaryDeceased}}{{internationalCityPrimaryDeceased}}{{addressLine1RuralOptionPrimaryDeceased}} +{{addressLine1UrbanOptionPrimaryDeceased}}{{internationalAddressLine1PrimaryDeceased}} +{{addressLine2UrbanOptionPrimaryDeceased}}{{internationalAddressLine2PrimaryDeceased}} +{{addressLine3UrbanOptionPrimaryDeceased}}{{internationalAddressLine3PrimaryDeceased}} +{{postalCodePrimaryDeceased}}{{internationalPostalCodePrimaryDeceased}} - - - - - - - + +