From ece7b17af3477491791cd69c2fb1575ebe825a6f Mon Sep 17 00:00:00 2001 From: tareq89 Date: Thu, 3 Oct 2024 12:24:01 +0600 Subject: [PATCH 01/37] new certificate svg template added --- .../birth-certificate-certified-copy.svg | 227 +++++++++++++++++ .../certificates/source/birth-certificate.svg | 167 +++++++++++++ .../death-certificate-certified-copy.svg | 183 ++++++++++++++ .../certificates/source/death-certificate.svg | 144 +++++++++++ .../marriage-certificate-certified-copy.svg | 162 ++++++++++++ .../source/marriage-certificate.svg | 234 ++++++++++++++++++ 6 files changed, 1117 insertions(+) create mode 100644 src/data-seeding/certificates/source/birth-certificate-certified-copy.svg create mode 100644 src/data-seeding/certificates/source/birth-certificate.svg create mode 100644 src/data-seeding/certificates/source/death-certificate-certified-copy.svg create mode 100644 src/data-seeding/certificates/source/death-certificate.svg create mode 100644 src/data-seeding/certificates/source/marriage-certificate-certified-copy.svg create mode 100644 src/data-seeding/certificates/source/marriage-certificate.svg diff --git a/src/data-seeding/certificates/source/birth-certificate-certified-copy.svg b/src/data-seeding/certificates/source/birth-certificate-certified-copy.svg new file mode 100644 index 000000000..99fb96be1 --- /dev/null +++ b/src/data-seeding/certificates/source/birth-certificate-certified-copy.svg @@ -0,0 +1,227 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/data-seeding/certificates/source/birth-certificate.svg b/src/data-seeding/certificates/source/birth-certificate.svg new file mode 100644 index 000000000..b21ddbbfd --- /dev/null +++ b/src/data-seeding/certificates/source/birth-certificate.svg @@ -0,0 +1,167 @@ + + + +CAUTION : THERE ARE OFFENCES RELATING TO FALSIFYING OR ALTERING A CERTIFICATE AND USING OR POSSESSING A FALSE CERTIFICATE. A 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 + +{{}} +01 April 2012 +Date of certification / Date de délivrance +{{Imbobo District Office}}
{{Chiwala}}, {{Kabwe}}, {{Farajaland}} + +Place of certification / Lieu de délivrance +{{12345678912345678912345678900}} +MOSIP Application ID / MOSIP Application ID + + + + +Registrar / L'Officier de l'État Civil +{{Jude Hopper}} +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 + +{{Male}} + + +3. + /
 +Date of birthDate de naissance + +{{22 March 2012}} + + +4. + /
 +Place of birthLieu de naissance + +{{District}} or {{Hospital}} {{State}}, {{Country}} + + +5. + /
 +Mother’s full nameNom complet de la mère + +{{Nicky Smith}} + + +6. +/
N +Father’s full name om complet du père + +{{Nicky Smith}} + + + +8. +Lieu d'enregistrement + +Place of registration / + +{{Imbobo District Office}}
{{Chiwala}}, {{Kabwe}}, {{Farajaland}} + + +9. + +Date of registration / +Date d'enregistrement + +{{30 March 2012}} + + +10. +/
 +Registered by Enregistré par + +{{Jude Hopper}} + + + + +No. 2023S5D234S + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/data-seeding/certificates/source/death-certificate-certified-copy.svg b/src/data-seeding/certificates/source/death-certificate-certified-copy.svg new file mode 100644 index 000000000..d16bb1774 --- /dev/null +++ b/src/data-seeding/certificates/source/death-certificate-certified-copy.svg @@ -0,0 +1,183 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/data-seeding/certificates/source/death-certificate.svg b/src/data-seeding/certificates/source/death-certificate.svg new file mode 100644 index 000000000..f509f139a --- /dev/null +++ b/src/data-seeding/certificates/source/death-certificate.svg @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/data-seeding/certificates/source/marriage-certificate-certified-copy.svg b/src/data-seeding/certificates/source/marriage-certificate-certified-copy.svg new file mode 100644 index 000000000..6dbc6919b --- /dev/null +++ b/src/data-seeding/certificates/source/marriage-certificate-certified-copy.svg @@ -0,0 +1,162 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/data-seeding/certificates/source/marriage-certificate.svg b/src/data-seeding/certificates/source/marriage-certificate.svg new file mode 100644 index 000000000..e6a3e11c1 --- /dev/null +++ b/src/data-seeding/certificates/source/marriage-certificate.svg @@ -0,0 +1,234 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From df4ccad808fe27f48ac65b3e487c52b1bd9a3448 Mon Sep 17 00:00:00 2001 From: tareq89 Date: Thu, 3 Oct 2024 12:24:39 +0600 Subject: [PATCH 02/37] client csv certificate fields updated --- src/translations/client.csv | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/translations/client.csv b/src/translations/client.csv index 002f098fc..424aee27d 100644 --- a/src/translations/client.csv +++ b/src/translations/client.csv @@ -167,6 +167,12 @@ certificate.receipt.service.5year,,{event} registration after 5 years of event,{ certificate.receipt.service.targetDay,,{event} registration after 45 days of event,{event} Déclaration après 45 jours de l'événement. certificate.receipt.service.targetDay.amount,,৳ 25.00,৳ 25.00 certificate.receipt.subheader,Subheader for receipt on payment on certificate,{event} Registration after {DOBDiff} of {DOE},{event} Déclaration après {DOBDiff} de {DOE} +certificates.birth.certificate,Birth Certificate,Birth Certificate,Acte de naissance +certificates.birth.certificate.copy,Birth Certificate Certified Copy,Birth Certificate Certified Copy,Copie certifiée conforme de l'acte de naissance +certificates.death.certificate,Death Certificate,Death Certificate,Certificat de décès +certificates.death.certificate.copy,Death Certificate Certified Copy,Death Certificate Certified Copy,Copie certifiée conforme du certificat de décès +certificates.marriage.certificate,Marriage Certificate,Marriage Certificate,Acte de mariage +certificates.marriage.certificate.copy,Marriage Certificate Certified Copy,Marriage Certificate Certified Copy,Copie certifiée conforme de l'acte de mariage changeEmail.validation.msg,Phone number validation message,Must be a valid email address,Doit être une adresse e-mail valide changePhone.validation.msg,Phone number validation message,Must be a valid 10 digit number that starts with 0,Doit être un numéro valide à {num} chiffres qui commence par {start}. config.advanced.search,This is used for the advanced search,Advanced Search,Recherche avancée From 5707a73fe589beec6234cb4e5f0e6133debf8c16 Mon Sep 17 00:00:00 2001 From: tareq89 Date: Thu, 3 Oct 2024 12:25:43 +0600 Subject: [PATCH 03/37] added new route to get certificate config data --- src/api/certificate-configuration/handler.ts | 36 ------ src/api/certificates/handler.ts | 120 ++++++++++++++++++- src/index.ts | 23 ++-- 3 files changed, 127 insertions(+), 52 deletions(-) delete mode 100644 src/api/certificate-configuration/handler.ts diff --git a/src/api/certificate-configuration/handler.ts b/src/api/certificate-configuration/handler.ts deleted file mode 100644 index 26faf7e74..000000000 --- a/src/api/certificate-configuration/handler.ts +++ /dev/null @@ -1,36 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at https://mozilla.org/MPL/2.0/. - * - * OpenCRVS is also distributed under the terms of the Civil Registration - * & Healthcare Disclaimer located at http://opencrvs.org/license. - * - * Copyright (C) The OpenCRVS Authors located at https://github.com/opencrvs/opencrvs-core/blob/master/AUTHORS. - */ - -import { COUNTRY_CONFIG_URL } from '@countryconfig/constants' - -type FontFamilyTypes = { - normal: string - bold: string - italics: string - bolditalics: string -} - -type Configuration = Partial<{ - fonts: Record -}> - -export function certificateConfigurationHandler(): Configuration { - return { - fonts: { - ['Noto Sans']: { - normal: `${COUNTRY_CONFIG_URL}/fonts/NotoSans-Regular.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/certificates/handler.ts b/src/api/certificates/handler.ts index 658e04eb6..4e284e325 100644 --- a/src/api/certificates/handler.ts +++ b/src/api/certificates/handler.ts @@ -13,8 +13,120 @@ import { Request, ResponseToolkit } from '@hapi/hapi' import { readFileSync } from 'fs' export async function certificateHandler(request: Request, h: ResponseToolkit) { - const res = readFileSync( - `./src/api/certificates/source/Farajaland-${request.params.event}-certificate-v2.svg` - ).toString() - return h.response(res).code(200) + if (request.params.event) { + const res = readFileSync( + `./src/api/certificates/source/Farajaland-${request.params.event}-certificate-v2.svg` + ).toString() + return h.response(res).code(200) + } + return [ + { + id: 'birth.certificate', + event: 'birth', + label: { + id: 'certificates.birth.certificate', + defaultMessage: 'Birth Certificate', + description: 'The label for a birth certificate' + }, + svgUrl: '/certificates/birth-certificate.svg', + fonts: { + 'Noto Sans': { + normal: '/fonts/NotoSans-Regular.ttf', + bold: '/fonts/NotoSans-Bold.ttf', + italics: '/fonts/NotoSans-Regular.ttf', + bolditalics: '/fonts/NotoSans-Regular.ttf' + } + } + }, + { + id: 'birth.certificate.copy', + event: 'birth', + label: { + id: 'certificates.birth.certificate.copy', + defaultMessage: 'Birth Certificate certified copy', + description: 'The label for a birth certificate' + }, + svgUrl: '/certificates/birth-certificate-certified-copy.svg', + fonts: { + 'Noto Sans': { + normal: '/fonts/NotoSans-Regular.ttf', + bold: '/fonts/NotoSans-Bold.ttf', + italics: '/fonts/NotoSans-Regular.ttf', + bolditalics: '/fonts/NotoSans-Regular.ttf' + } + } + }, + { + id: 'death.certificate', + event: 'death', + label: { + id: 'certificates.death.certificate', + defaultMessage: 'Death Certificate', + description: 'The label for a death certificate' + }, + svgUrl: '/certificates/death-certificate.svg', + fonts: { + 'Noto Sans': { + normal: '/fonts/NotoSans-Regular.ttf', + bold: '/fonts/NotoSans-Bold.ttf', + italics: '/fonts/NotoSans-Regular.ttf', + bolditalics: '/fonts/NotoSans-Regular.ttf' + } + } + }, + { + id: 'death.certificate.copy', + event: 'death', + label: { + id: 'certificates.death.certificate.copy', + defaultMessage: 'Death Certificate certified copy', + description: 'The label for a death certificate' + }, + svgUrl: '/certificates/death-certificate-certified-copy.svg', + fonts: { + 'Noto Sans': { + normal: '/fonts/NotoSans-Regular.ttf', + bold: '/fonts/NotoSans-Bold.ttf', + italics: '/fonts/NotoSans-Regular.ttf', + bolditalics: '/fonts/NotoSans-Regular.ttf' + } + } + }, + { + id: 'marriage.certificate', + event: 'marriage', + label: { + id: 'certificates.marriage.certificate', + defaultMessage: 'Marriage Certificate', + description: 'The label for a marriage certificate' + }, + svgUrl: '/certificates/marriage-certificate.svg', + fonts: { + 'Noto Sans': { + normal: '/fonts/NotoSans-Regular.ttf', + bold: '/fonts/NotoSans-Bold.ttf', + italics: '/fonts/NotoSans-Regular.ttf', + bolditalics: '/fonts/NotoSans-Regular.ttf' + } + } + }, + { + id: 'marriage.certificate.copy', + event: 'marriage', + label: { + id: 'certificates.marriage.certificate.copy', + defaultMessage: 'Marriage Certificate certified copy', + description: 'The label for a marriage certificate' + }, + svgUrl: '/certificates/marriage-certificate-certified-copy.svg', + fonts: { + 'Noto Sans': { + normal: '/fonts/NotoSans-Regular.ttf', + bold: '/fonts/NotoSans-Bold.ttf', + italics: '/fonts/NotoSans-Regular.ttf', + bolditalics: '/fonts/NotoSans-Regular.ttf' + } + } + } + ] } diff --git a/src/index.ts b/src/index.ts index c12d07052..86895c76b 100644 --- a/src/index.ts +++ b/src/index.ts @@ -60,7 +60,6 @@ import { handlebarsHandler } from './form/common/certificate/handlebars/handler' import { trackingIDHandler } from './api/tracking-id/handler' import { dashboardQueriesHandler } from './api/dashboards/handler' import { fontsHandler } from './api/fonts/handler' -import { certificateConfigurationHandler } from './api/certificate-configuration/handler' import { recordNotificationHandler } from './api/record-notification/handler' export interface ITokenPayload { @@ -239,6 +238,17 @@ export async function createServer() { server.auth.default('jwt') + server.route({ + method: 'GET', + path: '/certificates', + handler: certificateHandler, + options: { + auth: false, + tags: ['api', 'certificates'], + description: 'Returns certificate metadata' + } + }) + server.route({ method: 'GET', path: '/certificates/{event}.svg', @@ -276,17 +286,6 @@ export async function createServer() { } }) - server.route({ - method: 'GET', - path: '/certificate-configuration', - handler: certificateConfigurationHandler, - options: { - auth: false, - tags: ['api'], - description: 'Serves certificate configurations' - } - }) - server.route({ method: 'GET', path: '/client-config.js', From b37fe8b53f3d9bab6f77c1f7191dfa9d2bd07f41 Mon Sep 17 00:00:00 2001 From: tareq89 Date: Fri, 4 Oct 2024 11:32:04 +0600 Subject: [PATCH 04/37] update certificate template folder --- src/api/certificates/handler.ts | 77 ++++++++++--------- .../birth-certificate-certified-copy.svg | 0 .../certificates/source/birth-certificate.svg | 0 .../death-certificate-certified-copy.svg | 0 .../certificates/source/death-certificate.svg | 0 .../marriage-certificate-certified-copy.svg | 0 .../source/marriage-certificate.svg | 0 src/index.ts | 10 ++- 8 files changed, 46 insertions(+), 41 deletions(-) rename src/{data-seeding => api}/certificates/source/birth-certificate-certified-copy.svg (100%) rename src/{data-seeding => api}/certificates/source/birth-certificate.svg (100%) rename src/{data-seeding => api}/certificates/source/death-certificate-certified-copy.svg (100%) rename src/{data-seeding => api}/certificates/source/death-certificate.svg (100%) rename src/{data-seeding => api}/certificates/source/marriage-certificate-certified-copy.svg (100%) rename src/{data-seeding => api}/certificates/source/marriage-certificate.svg (100%) diff --git a/src/api/certificates/handler.ts b/src/api/certificates/handler.ts index 4e284e325..eee05a0d6 100644 --- a/src/api/certificates/handler.ts +++ b/src/api/certificates/handler.ts @@ -15,116 +15,119 @@ import { readFileSync } from 'fs' export async function certificateHandler(request: Request, h: ResponseToolkit) { if (request.params.event) { const res = readFileSync( - `./src/api/certificates/source/Farajaland-${request.params.event}-certificate-v2.svg` + `./src/api/certificates/source/${request.params.event}.svg` ).toString() return h.response(res).code(200) } return [ { - id: 'birth.certificate', + id: 'birth-certificate', event: 'birth', label: { id: 'certificates.birth.certificate', defaultMessage: 'Birth Certificate', description: 'The label for a birth certificate' }, - svgUrl: '/certificates/birth-certificate.svg', + svgUrl: '/api/countryconfig/certificates/birth-certificate.svg', fonts: { 'Noto Sans': { - normal: '/fonts/NotoSans-Regular.ttf', - bold: '/fonts/NotoSans-Bold.ttf', - italics: '/fonts/NotoSans-Regular.ttf', - bolditalics: '/fonts/NotoSans-Regular.ttf' + normal: '/api/countryconfig/fonts/NotoSans-Regular.ttf', + bold: '/api/countryconfig/fonts/NotoSans-Bold.ttf', + italics: '/api/countryconfig/fonts/NotoSans-Regular.ttf', + bolditalics: '/api/countryconfig/fonts/NotoSans-Regular.ttf' } } }, { - id: 'birth.certificate.copy', + id: 'certified-birth-certificate', event: 'birth', label: { id: 'certificates.birth.certificate.copy', defaultMessage: 'Birth Certificate certified copy', description: 'The label for a birth certificate' }, - svgUrl: '/certificates/birth-certificate-certified-copy.svg', + svgUrl: + '/api/countryconfig/certificates/birth-certificate-certified-copy.svg', fonts: { 'Noto Sans': { - normal: '/fonts/NotoSans-Regular.ttf', - bold: '/fonts/NotoSans-Bold.ttf', - italics: '/fonts/NotoSans-Regular.ttf', - bolditalics: '/fonts/NotoSans-Regular.ttf' + normal: '/api/countryconfig/fonts/NotoSans-Regular.ttf', + bold: '/api/countryconfig/fonts/NotoSans-Bold.ttf', + italics: '/api/countryconfig/fonts/NotoSans-Regular.ttf', + bolditalics: '/api/countryconfig/fonts/NotoSans-Regular.ttf' } } }, { - id: 'death.certificate', + id: 'death-certificate', event: 'death', label: { id: 'certificates.death.certificate', defaultMessage: 'Death Certificate', description: 'The label for a death certificate' }, - svgUrl: '/certificates/death-certificate.svg', + svgUrl: '/api/countryconfig/certificates/death-certificate.svg', fonts: { 'Noto Sans': { - normal: '/fonts/NotoSans-Regular.ttf', - bold: '/fonts/NotoSans-Bold.ttf', - italics: '/fonts/NotoSans-Regular.ttf', - bolditalics: '/fonts/NotoSans-Regular.ttf' + normal: '/api/countryconfig/fonts/NotoSans-Regular.ttf', + bold: '/api/countryconfig/fonts/NotoSans-Bold.ttf', + italics: '/api/countryconfig/fonts/NotoSans-Regular.ttf', + bolditalics: '/api/countryconfig/fonts/NotoSans-Regular.ttf' } } }, { - id: 'death.certificate.copy', + id: 'certified-death-certificate', event: 'death', label: { id: 'certificates.death.certificate.copy', defaultMessage: 'Death Certificate certified copy', description: 'The label for a death certificate' }, - svgUrl: '/certificates/death-certificate-certified-copy.svg', + svgUrl: + '/api/countryconfig/certificates/death-certificate-certified-copy.svg', fonts: { 'Noto Sans': { - normal: '/fonts/NotoSans-Regular.ttf', - bold: '/fonts/NotoSans-Bold.ttf', - italics: '/fonts/NotoSans-Regular.ttf', - bolditalics: '/fonts/NotoSans-Regular.ttf' + normal: '/api/countryconfig/fonts/NotoSans-Regular.ttf', + bold: '/api/countryconfig/fonts/NotoSans-Bold.ttf', + italics: '/api/countryconfig/fonts/NotoSans-Regular.ttf', + bolditalics: '/api/countryconfig/fonts/NotoSans-Regular.ttf' } } }, { - id: 'marriage.certificate', + id: 'marriage-certificate', event: 'marriage', label: { id: 'certificates.marriage.certificate', defaultMessage: 'Marriage Certificate', description: 'The label for a marriage certificate' }, - svgUrl: '/certificates/marriage-certificate.svg', + svgUrl: '/api/countryconfig/certificates/marriage-certificate.svg', fonts: { 'Noto Sans': { - normal: '/fonts/NotoSans-Regular.ttf', - bold: '/fonts/NotoSans-Bold.ttf', - italics: '/fonts/NotoSans-Regular.ttf', - bolditalics: '/fonts/NotoSans-Regular.ttf' + normal: '/api/countryconfig/fonts/NotoSans-Regular.ttf', + bold: '/api/countryconfig/fonts/NotoSans-Bold.ttf', + italics: '/api/countryconfig/fonts/NotoSans-Regular.ttf', + bolditalics: '/api/countryconfig/fonts/NotoSans-Regular.ttf' } } }, { - id: 'marriage.certificate.copy', + id: 'certified-marriage-certificate', event: 'marriage', label: { id: 'certificates.marriage.certificate.copy', defaultMessage: 'Marriage Certificate certified copy', description: 'The label for a marriage certificate' }, - svgUrl: '/certificates/marriage-certificate-certified-copy.svg', + svgUrl: + '/api/countryconfig/certificates/marriage-certificate-certified-copy.svg', fonts: { 'Noto Sans': { - normal: '/fonts/NotoSans-Regular.ttf', - bold: '/fonts/NotoSans-Bold.ttf', - italics: '/fonts/NotoSans-Regular.ttf', - bolditalics: '/fonts/NotoSans-Regular.ttf' + normal: '/api/countryconfig/fonts/NotoSans-Regular.ttf', + bold: '/api/countryconfig/fonts/NotoSans-Bold.ttf', + italics: '/api/countryconfig/fonts/NotoSans-Regular.ttf', + bolditalics: '/api/countryconfig/fonts/NotoSans-Regular.ttf' } } } diff --git a/src/data-seeding/certificates/source/birth-certificate-certified-copy.svg b/src/api/certificates/source/birth-certificate-certified-copy.svg similarity index 100% rename from src/data-seeding/certificates/source/birth-certificate-certified-copy.svg rename to src/api/certificates/source/birth-certificate-certified-copy.svg diff --git a/src/data-seeding/certificates/source/birth-certificate.svg b/src/api/certificates/source/birth-certificate.svg similarity index 100% rename from src/data-seeding/certificates/source/birth-certificate.svg rename to src/api/certificates/source/birth-certificate.svg diff --git a/src/data-seeding/certificates/source/death-certificate-certified-copy.svg b/src/api/certificates/source/death-certificate-certified-copy.svg similarity index 100% rename from src/data-seeding/certificates/source/death-certificate-certified-copy.svg rename to src/api/certificates/source/death-certificate-certified-copy.svg diff --git a/src/data-seeding/certificates/source/death-certificate.svg b/src/api/certificates/source/death-certificate.svg similarity index 100% rename from src/data-seeding/certificates/source/death-certificate.svg rename to src/api/certificates/source/death-certificate.svg diff --git a/src/data-seeding/certificates/source/marriage-certificate-certified-copy.svg b/src/api/certificates/source/marriage-certificate-certified-copy.svg similarity index 100% rename from src/data-seeding/certificates/source/marriage-certificate-certified-copy.svg rename to src/api/certificates/source/marriage-certificate-certified-copy.svg diff --git a/src/data-seeding/certificates/source/marriage-certificate.svg b/src/api/certificates/source/marriage-certificate.svg similarity index 100% rename from src/data-seeding/certificates/source/marriage-certificate.svg rename to src/api/certificates/source/marriage-certificate.svg diff --git a/src/index.ts b/src/index.ts index 86895c76b..9fea795bc 100644 --- a/src/index.ts +++ b/src/index.ts @@ -240,24 +240,26 @@ export async function createServer() { server.route({ method: 'GET', - path: '/certificates', + path: '/certificates/{event}.svg', handler: certificateHandler, options: { auth: false, tags: ['api', 'certificates'], - description: 'Returns certificate metadata' + description: 'Returns only one certificate metadata' } }) server.route({ method: 'GET', - path: '/certificates/{event}.svg', + path: '/certificates', handler: certificateHandler, options: { + auth: false, tags: ['api', 'certificates'], - description: 'Returns only one certificate metadata' + description: 'Returns certificate metadata' } }) + // add ping route by default for health check server.route({ method: 'GET', From ea0feec6e9d4783ecc311dfd394275858a6a9512 Mon Sep 17 00:00:00 2001 From: tareq89 Date: Fri, 4 Oct 2024 11:32:39 +0600 Subject: [PATCH 05/37] select certificate template label added --- src/translations/client.csv | 1 + 1 file changed, 1 insertion(+) diff --git a/src/translations/client.csv b/src/translations/client.csv index 424aee27d..675375b25 100644 --- a/src/translations/client.csv +++ b/src/translations/client.csv @@ -167,6 +167,7 @@ certificate.receipt.service.5year,,{event} registration after 5 years of event,{ certificate.receipt.service.targetDay,,{event} registration after 45 days of event,{event} Déclaration après 45 jours de l'événement. certificate.receipt.service.targetDay.amount,,৳ 25.00,৳ 25.00 certificate.receipt.subheader,Subheader for receipt on payment on certificate,{event} Registration after {DOBDiff} of {DOE},{event} Déclaration après {DOBDiff} de {DOE} +certificate.selectTemplate,Select certificate template,Select certificate template,Sélectionnez un modèle de certificat certificates.birth.certificate,Birth Certificate,Birth Certificate,Acte de naissance certificates.birth.certificate.copy,Birth Certificate Certified Copy,Birth Certificate Certified Copy,Copie certifiée conforme de l'acte de naissance certificates.death.certificate,Death Certificate,Death Certificate,Certificat de décès From daf40394354669708ad9c55936bed12971c3d0dd Mon Sep 17 00:00:00 2001 From: tareq89 Date: Mon, 14 Oct 2024 12:15:32 +0600 Subject: [PATCH 06/37] additional certificate config info added --- src/api/certificates/handler.ts | 48 +++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/src/api/certificates/handler.ts b/src/api/certificates/handler.ts index eee05a0d6..8a53d7fc4 100644 --- a/src/api/certificates/handler.ts +++ b/src/api/certificates/handler.ts @@ -28,6 +28,14 @@ export async function certificateHandler(request: Request, h: ResponseToolkit) { defaultMessage: 'Birth Certificate', description: 'The label for a birth certificate' }, + registrationTarget: 30, + lateRegistrationTarget: 365, + printInAdvance: true, + fee: { + onTime: 0, + late: 5.5, + delayed: 15 + }, svgUrl: '/api/countryconfig/certificates/birth-certificate.svg', fonts: { 'Noto Sans': { @@ -46,6 +54,14 @@ export async function certificateHandler(request: Request, h: ResponseToolkit) { defaultMessage: 'Birth Certificate certified copy', description: 'The label for a birth certificate' }, + registrationTarget: 30, + lateRegistrationTarget: 365, + printInAdvance: true, + fee: { + onTime: 0, + late: 5.5, + delayed: 15 + }, svgUrl: '/api/countryconfig/certificates/birth-certificate-certified-copy.svg', fonts: { @@ -65,6 +81,14 @@ export async function certificateHandler(request: Request, h: ResponseToolkit) { defaultMessage: 'Death Certificate', description: 'The label for a death certificate' }, + registrationTarget: 30, + lateRegistrationTarget: 365, + printInAdvance: true, + fee: { + onTime: 0, + late: 5.5, + delayed: 15 + }, svgUrl: '/api/countryconfig/certificates/death-certificate.svg', fonts: { 'Noto Sans': { @@ -83,6 +107,14 @@ export async function certificateHandler(request: Request, h: ResponseToolkit) { defaultMessage: 'Death Certificate certified copy', description: 'The label for a death certificate' }, + registrationTarget: 30, + lateRegistrationTarget: 365, + printInAdvance: true, + fee: { + onTime: 0, + late: 5.5, + delayed: 15 + }, svgUrl: '/api/countryconfig/certificates/death-certificate-certified-copy.svg', fonts: { @@ -102,6 +134,14 @@ export async function certificateHandler(request: Request, h: ResponseToolkit) { defaultMessage: 'Marriage Certificate', description: 'The label for a marriage certificate' }, + registrationTarget: 30, + lateRegistrationTarget: 365, + printInAdvance: true, + fee: { + onTime: 0, + late: 5.5, + delayed: 15 + }, svgUrl: '/api/countryconfig/certificates/marriage-certificate.svg', fonts: { 'Noto Sans': { @@ -120,6 +160,14 @@ export async function certificateHandler(request: Request, h: ResponseToolkit) { defaultMessage: 'Marriage Certificate certified copy', description: 'The label for a marriage certificate' }, + registrationTarget: 30, + lateRegistrationTarget: 365, + printInAdvance: true, + fee: { + onTime: 0, + late: 5.5, + delayed: 15 + }, svgUrl: '/api/countryconfig/certificates/marriage-certificate-certified-copy.svg', fonts: { From e7593bd56829ce66eb45112b35bed90658bdf40f Mon Sep 17 00:00:00 2001 From: tareq89 Date: Tue, 22 Oct 2024 18:43:43 +0600 Subject: [PATCH 07/37] selectedTemplate translation added --- src/form/types/types.ts | 2 +- src/translations/client.csv | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/form/types/types.ts b/src/form/types/types.ts index 014dc3636..b350e9ac4 100644 --- a/src/form/types/types.ts +++ b/src/form/types/types.ts @@ -790,7 +790,7 @@ export type IDeclarationCertificate = { corrector?: Partial<{ type: RelationForCertificateCorrection }> hasShowedVerifiedDocument?: boolean payments?: Payment - data?: string + certTemplateId?: string } export interface IFileValue { diff --git a/src/translations/client.csv b/src/translations/client.csv index 675375b25..8ff07f823 100644 --- a/src/translations/client.csv +++ b/src/translations/client.csv @@ -168,6 +168,7 @@ certificate.receipt.service.targetDay,,{event} registration after 45 days of eve certificate.receipt.service.targetDay.amount,,৳ 25.00,৳ 25.00 certificate.receipt.subheader,Subheader for receipt on payment on certificate,{event} Registration after {DOBDiff} of {DOE},{event} Déclaration après {DOBDiff} de {DOE} certificate.selectTemplate,Select certificate template,Select certificate template,Sélectionnez un modèle de certificat +certificate.selectedTemplate,Selected certificate template,Selected certificate template,Modèle de certificat sélectionné certificates.birth.certificate,Birth Certificate,Birth Certificate,Acte de naissance certificates.birth.certificate.copy,Birth Certificate Certified Copy,Birth Certificate Certified Copy,Copie certifiée conforme de l'acte de naissance certificates.death.certificate,Death Certificate,Death Certificate,Certificat de décès From 3b70b353376d5ca186123e6a8b6a6800b2c12d43 Mon Sep 17 00:00:00 2001 From: tareq89 Date: Tue, 29 Oct 2024 21:37:13 +0600 Subject: [PATCH 08/37] ICertificateConfigData added --- src/api/certificates/handler.ts | 51 +++++++++++++++++++++------------ src/form/types/types.ts | 2 +- 2 files changed, 33 insertions(+), 20 deletions(-) diff --git a/src/api/certificates/handler.ts b/src/api/certificates/handler.ts index 8a53d7fc4..4a6d7e644 100644 --- a/src/api/certificates/handler.ts +++ b/src/api/certificates/handler.ts @@ -12,6 +12,30 @@ import { Request, ResponseToolkit } from '@hapi/hapi' import { readFileSync } from 'fs' +type FontFamilyTypes = { + normal: string + bold: string + italics: string + bolditalics: string +} +export interface ICertificateConfigData { + id: string + event: Event + label: { + id: string + defaultMessage: string + description: string + } + isDefault: boolean + fee: { + onTime: number + late: number + delayed: number + } + svgUrl: string + fonts?: Record +} + export async function certificateHandler(request: Request, h: ResponseToolkit) { if (request.params.event) { const res = readFileSync( @@ -19,7 +43,7 @@ export async function certificateHandler(request: Request, h: ResponseToolkit) { ).toString() return h.response(res).code(200) } - return [ + const certificateConfigs: ICertificateConfigData[] = [ { id: 'birth-certificate', event: 'birth', @@ -28,9 +52,7 @@ export async function certificateHandler(request: Request, h: ResponseToolkit) { defaultMessage: 'Birth Certificate', description: 'The label for a birth certificate' }, - registrationTarget: 30, - lateRegistrationTarget: 365, - printInAdvance: true, + isDefault: true, fee: { onTime: 0, late: 5.5, @@ -54,9 +76,7 @@ export async function certificateHandler(request: Request, h: ResponseToolkit) { defaultMessage: 'Birth Certificate certified copy', description: 'The label for a birth certificate' }, - registrationTarget: 30, - lateRegistrationTarget: 365, - printInAdvance: true, + isDefault: false, fee: { onTime: 0, late: 5.5, @@ -81,9 +101,7 @@ export async function certificateHandler(request: Request, h: ResponseToolkit) { defaultMessage: 'Death Certificate', description: 'The label for a death certificate' }, - registrationTarget: 30, - lateRegistrationTarget: 365, - printInAdvance: true, + isDefault: true, fee: { onTime: 0, late: 5.5, @@ -107,9 +125,7 @@ export async function certificateHandler(request: Request, h: ResponseToolkit) { defaultMessage: 'Death Certificate certified copy', description: 'The label for a death certificate' }, - registrationTarget: 30, - lateRegistrationTarget: 365, - printInAdvance: true, + isDefault: false, fee: { onTime: 0, late: 5.5, @@ -134,9 +150,7 @@ export async function certificateHandler(request: Request, h: ResponseToolkit) { defaultMessage: 'Marriage Certificate', description: 'The label for a marriage certificate' }, - registrationTarget: 30, - lateRegistrationTarget: 365, - printInAdvance: true, + isDefault: true, fee: { onTime: 0, late: 5.5, @@ -160,9 +174,7 @@ export async function certificateHandler(request: Request, h: ResponseToolkit) { defaultMessage: 'Marriage Certificate certified copy', description: 'The label for a marriage certificate' }, - registrationTarget: 30, - lateRegistrationTarget: 365, - printInAdvance: true, + isDefault: false, fee: { onTime: 0, late: 5.5, @@ -180,4 +192,5 @@ export async function certificateHandler(request: Request, h: ResponseToolkit) { } } ] + return certificateConfigs } diff --git a/src/form/types/types.ts b/src/form/types/types.ts index b350e9ac4..b73f9008b 100644 --- a/src/form/types/types.ts +++ b/src/form/types/types.ts @@ -790,7 +790,7 @@ export type IDeclarationCertificate = { corrector?: Partial<{ type: RelationForCertificateCorrection }> hasShowedVerifiedDocument?: boolean payments?: Payment - certTemplateId?: string + certificateTemplateId?: string } export interface IFileValue { From 70f3ecacb86ad0e21a5320b4c4cfe215c317c587 Mon Sep 17 00:00:00 2001 From: tareq89 Date: Tue, 29 Oct 2024 22:11:20 +0600 Subject: [PATCH 09/37] change log updated --- CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3fc0ffc90..5ed33b227 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,7 +18,7 @@ ### Breaking changes -- **Title** Description +- Existing implementations relying on database-stored SVGs need to be updated to use the new configuration-based approach. A migration needs to be run (defined in [migration](https://github.com/opencrvs/opencrvs-core/pull/7813/files#diff-e5472dec87399bb9f73f75ec379ceb6a32ca135bc01dd8d0eb8f7d7aaa0bc0b1)), and default certificate templates must be created for each event type, following the convention `${event}-certificate` as the certificate template ID. ### Improvements @@ -32,7 +32,7 @@ ### New features -- **Major new feature** Description +- **Refactored certificate handling:** SVGs are no longer stored in the database; streamlined configurations now include certificate details, and clients request SVGs directly via URLs. - Misc new feature - Add constant.humanName to allow coutries to have custom ordering on thier full name e.g start with `lastName` or `firstName` [#6830](https://github.com/opencrvs/opencrvs-core/issues/6830) From 9817ad224cf8e8e7fbbd1a96c5bab253afce874e Mon Sep 17 00:00:00 2001 From: tareq89 Date: Thu, 31 Oct 2024 17:09:15 +0600 Subject: [PATCH 10/37] misc --- .../certificates/source/birth-certificate.svg | 1179 ++++++++++++++--- src/translations/client.csv | 2 +- 2 files changed, 1014 insertions(+), 167 deletions(-) diff --git a/src/api/certificates/source/birth-certificate.svg b/src/api/certificates/source/birth-certificate.svg index b21ddbbfd..140f788f4 100644 --- a/src/api/certificates/source/birth-certificate.svg +++ b/src/api/certificates/source/birth-certificate.svg @@ -1,167 +1,1014 @@ - - - -CAUTION : THERE ARE OFFENCES RELATING TO FALSIFYING OR ALTERING A CERTIFICATE AND USING OR POSSESSING A FALSE CERTIFICATE. A 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 - -{{}} -01 April 2012 -Date of certification / Date de délivrance -{{Imbobo District Office}}
{{Chiwala}}, {{Kabwe}}, {{Farajaland}} - -Place of certification / Lieu de délivrance -{{12345678912345678912345678900}} -MOSIP Application ID / MOSIP Application ID - - - - -Registrar / L'Officier de l'État Civil -{{Jude Hopper}} -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 - -{{Male}} - - -3. - /
 -Date of birthDate de naissance - -{{22 March 2012}} - - -4. - /
 -Place of birthLieu de naissance - -{{District}} or {{Hospital}} {{State}}, {{Country}} - - -5. - /
 -Mother’s full nameNom complet de la mère - -{{Nicky Smith}} - - -6. -/
N -Father’s full name om complet du père - -{{Nicky Smith}} - - - -8. -Lieu d'enregistrement - -Place of registration / - -{{Imbobo District Office}}
{{Chiwala}}, {{Kabwe}}, {{Farajaland}} - - -9. - -Date of registration / -Date d'enregistrement - -{{30 March 2012}} - - -10. -/
 -Registered by Enregistré par - -{{Jude Hopper}} - - - - -No. 2023S5D234S - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + CAUTION : THERE ARE OFFENCES RELATING TO FALSIFYING OR ALTERING A + CERTIFICATE AND USING OR POSSESSING A FALSE CERTIFICATE. A + + + 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 + + + + + + + + + 01 April 2012 + + + + Date of certification / Date de délivrance + + + + Imbobo District Office
 + Chiwala , Kabwe , Farajaland + + + + + + + Place of certification / Lieu de délivrance + + + + 12345678912345678912345678900 + + + + MOSIP Application ID / MOSIP Application ID + + + + + + + + + Registrar / L'Officier de l'État Civil + + + + Jude Hopper + + + + 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 + + + + Male + + + + + 3. + + + /
 + + + Date of birth + Date de naissance + + + + 22 March 2012 + + + + + 4. + + + /
 + + + Place of birth + Lieu de naissance + + + + District or Hospital + State , Country + + + + + 5. + + + /
 + + + Mother’s full name + Nom complet de la mère + + + + Nicky Smith + + + + + 6. + + + /
 + N + + + Father’s full name + om complet du père + + + + Nicky Smith + + + + + + 8. + + + Lieu d'enregistrement + + + + + + Place of registration / + + + + Imbobo District Office
 + Chiwala , Kabwe , Farajaland + + + + + 9. + + + + + + Date of registration / + + + Date d'enregistrement + + + + 30 March 2012 + + + + + 10. + + + /
 + + + Registered by + Enregistré par + + + + Jude Hopper + + + + + + + No. 2023S5D234S + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/translations/client.csv b/src/translations/client.csv index 8ff07f823..3ac6813d7 100644 --- a/src/translations/client.csv +++ b/src/translations/client.csv @@ -167,7 +167,7 @@ certificate.receipt.service.5year,,{event} registration after 5 years of event,{ certificate.receipt.service.targetDay,,{event} registration after 45 days of event,{event} Déclaration après 45 jours de l'événement. certificate.receipt.service.targetDay.amount,,৳ 25.00,৳ 25.00 certificate.receipt.subheader,Subheader for receipt on payment on certificate,{event} Registration after {DOBDiff} of {DOE},{event} Déclaration après {DOBDiff} de {DOE} -certificate.selectTemplate,Select certificate template,Select certificate template,Sélectionnez un modèle de certificat +certificate.selectTemplate,Select certificate template,Type,Taper certificate.selectedTemplate,Selected certificate template,Selected certificate template,Modèle de certificat sélectionné certificates.birth.certificate,Birth Certificate,Birth Certificate,Acte de naissance certificates.birth.certificate.copy,Birth Certificate Certified Copy,Birth Certificate Certified Copy,Copie certifiée conforme de l'acte de naissance From 4c6f49717803402220e192d5d432f28a38efbbc5 Mon Sep 17 00:00:00 2001 From: tareq89 Date: Thu, 31 Oct 2024 17:22:52 +0600 Subject: [PATCH 11/37] /certificates auth enabled --- src/index.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/index.ts b/src/index.ts index 9fea795bc..4f393864f 100644 --- a/src/index.ts +++ b/src/index.ts @@ -254,7 +254,6 @@ export async function createServer() { path: '/certificates', handler: certificateHandler, options: { - auth: false, tags: ['api', 'certificates'], description: 'Returns certificate metadata' } From 1ab5a363fd1490db3c416dc074d5f714786e13f4 Mon Sep 17 00:00:00 2001 From: tareq89 Date: Fri, 1 Nov 2024 14:30:54 +0600 Subject: [PATCH 12/37] certificate svg auth enabled --- src/index.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/index.ts b/src/index.ts index 4f393864f..92462f081 100644 --- a/src/index.ts +++ b/src/index.ts @@ -243,7 +243,6 @@ export async function createServer() { path: '/certificates/{event}.svg', handler: certificateHandler, options: { - auth: false, tags: ['api', 'certificates'], description: 'Returns only one certificate metadata' } From 3fa9bdb68066b4135fee3f576c5565ef1c005cc6 Mon Sep 17 00:00:00 2001 From: tareq89 Date: Wed, 6 Nov 2024 16:45:46 +0600 Subject: [PATCH 13/37] variables binding in sample svg certificates --- src/api/application/application-config.ts | 2 +- .../birth-certificate-certified-copy.svg | 1439 ++++++++++++++--- .../certificates/source/birth-certificate.svg | 24 +- .../death-certificate-certified-copy.svg | 1168 ++++++++++--- .../certificates/source/death-certificate.svg | 1069 ++++++++++-- .../marriage-certificate-certified-copy.svg | 1365 ++++++++++++++-- .../source/marriage-certificate.svg | 1241 +++++++++++--- .../common/certificate/handlebars/helpers.ts | 27 + 8 files changed, 5377 insertions(+), 958 deletions(-) diff --git a/src/api/application/application-config.ts b/src/api/application/application-config.ts index 949a04e0f..0db2da36c 100644 --- a/src/api/application/application-config.ts +++ b/src/api/application/application-config.ts @@ -42,7 +42,7 @@ export const applicationConfig = { DECLARATION_AUDIT_LOCATIONS: 'DISTRICT', FEATURES: { DEATH_REGISTRATION: true, - MARRIAGE_REGISTRATION: false, + MARRIAGE_REGISTRATION: true, EXTERNAL_VALIDATION_WORKQUEUE: false, INFORMANT_SIGNATURE: false, PRINT_DECLARATION: false, diff --git a/src/api/certificates/source/birth-certificate-certified-copy.svg b/src/api/certificates/source/birth-certificate-certified-copy.svg index 99fb96be1..a5caefff5 100644 --- a/src/api/certificates/source/birth-certificate-certified-copy.svg +++ b/src/api/certificates/source/birth-certificate-certified-copy.svg @@ -1,227 +1,1214 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + {{ordinalFormatDate registrar.date}} + + + + Date of certification / Date de certification + + + + + + Imbobo District Office, Chiwala State, Farajaland + + + + + Place of certification / Lieu de certification + + + + 12345678912345678912345678900 + + + + MOSIP Application ID / MOSIP Application ID + + + + + + Certified by: {{registrar.name}} + + + + + CAUTION : THERE ARE OFFENCES RELATING TO FALSIFYING OR ALTERING A + CERTIFICATE AND USING OR POSSESSING A FALSE CERTIFICATE. A + + + CERTIFICATE IS NOT PROOF OF IDENTITY / ATTENTION : IL EXISTE DES + INFRACTIONS RELATIVES À LA FALSIFIATION OU À LA MODIFICATION + + + D'UN CERTIFICAT ET À L'UTILISATION OU LA POSSESSION + D'UN FAUX CERTIFICAT. UN CERTIFICAT N'EST PAS UNE PREUVE + D'IDENTITÉ + + + + + + + + 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 and vital statistics law / J’attestation est + une copie conforme de l'état civil et est délivré par + + + l'autorité mandatée conformément à la loi sur + l'enregistrement et les statistiques de l'état civil + + + + + + + No. 2023HSND234S + + + + + + + + + + + + + + + + + + + + FARAJALAND + + + + REPUBLIC OF FARAJALAND / REPUBLIC OF FARAJALAND + + + + + CERTIFIED COPY OF BIRTH RECORD / COPIE CERTIFIÉE DE L'ACTE DE + NAISSANCE + + + + + + Child’s details / Détails de l'enfant + + + + + 1. + + + Full name / Nom et prénom + + + + {{ childFirstName }} {{ childFamilyName }} + + + + + 2. + + + Sex / Sexe + + + + {{ childGender }} + + + + + 3. + + + Date of birth / Date de naissance + + + + {{ eventDate }} + + + + + 4. + + + Place of birth / Lieu de naissance + + + + {{ placeOfBirthFacility }}, {{ placeOfBirthDistrict }} + {{ placeOfBirthState }}, {{ placeOfBirthCountry }} + + + + + + Mother’s details / Détails de la mère + + + + 5. + + + Full name / Nom complet + + + + {{ motherFirstName }} {{ motherFamilyName }} + + + + + 6. + + + Date of birth / Date de naissance + + + + {{motherBirthDate}} + + + + + 7. + + + Resident at / Domicilié à + + + + {{districtPrimaryMother}}, {{statePrimaryMother}}, {{countryPrimaryMother}} + + + + + 8. + + + Nationality / Nationalité + + + + {{motherNationality}} + + + + + 9. + + + Occupation / Profession + + + + Doctor + + + + + + Détails du père / Father’s details + + + + 10. + + + Full name / Nom complet + + + + {{fatherFirstName}} {{fatherFamilyName}} + + + + + 11. + + + Date of birth / Date de naissance + + + + {{fatherBirthDate}} + + + + + 12. + + + Resident at / Domicilié à + + + + {{districtPrimaryFather}}, {{statePrimaryFather}}, {{countryPrimaryFather}} + + + + + 13. + + + Nationality / Nationalité + + + + {{fatherNationality}} + + + + + 14. + + + Occupation / Profession + + + + Doctor + + + + + + Registration details / Détails d'inscription + + + + 15. + + + Informant full name / Informant full name + + + + {{informantFirstName}} {{informantNationality}} + {{countryPrimaryInformant}} + + + + + 16. + + + Place of registration / Inscrit à + + + + {{ registrar.district.name }}, {{ registrar.state.name }}, {{ registrar.country }} + + + + + + 17. + + + + Date of registration / Date d'enregistrement + + + + + {{{ ordinalFormatDate registrar.date }}} + + + + + 18. + + + Registered by / Enregistré par + + + + {{ registrar.name }} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/api/certificates/source/birth-certificate.svg b/src/api/certificates/source/birth-certificate.svg index 140f788f4..a30143779 100644 --- a/src/api/certificates/source/birth-certificate.svg +++ b/src/api/certificates/source/birth-certificate.svg @@ -260,7 +260,7 @@ font-size="7.76" letter-spacing="0px" > - Jude Hopper + {{ registrar.name }} - childFirstName childFamilyName + {{ childFirstName }} {{ childFamilyName }} - Male + {{ childGender }} - 22 March 2012 + {{ eventDate }} - District or Hospital - State , Country + {{ placeOfBirthFacility }}, {{ placeOfBirthDistrict }} + {{ placeOfBirthState }}, {{ placeOfBirthCountry }} - Nicky Smith + {{ motherFirstName }} {{ motherFamilyName }} - Nicky Smith + {{ fatherFirstName }} {{ fatherFamilyName }} - Imbobo District Office
 - Chiwala , Kabwe , Farajaland + {{ registrar.office.name }} + {{ registrar.district.name }}, {{ registrar.state.name }}, {{ registrar.country }} - 30 March 2012 + {{{ ordinalFormatDate registrar.date }}} - Jude Hopper + {{ registrar.name }} diff --git a/src/api/certificates/source/death-certificate-certified-copy.svg b/src/api/certificates/source/death-certificate-certified-copy.svg index d16bb1774..c4b108b0e 100644 --- a/src/api/certificates/source/death-certificate-certified-copy.svg +++ b/src/api/certificates/source/death-certificate-certified-copy.svg @@ -1,183 +1,987 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + 01 April 2012 + + + + Date of certification / Date de certification + + + + + + Imbobo District Office, Chiwala State, Farajaland + + + + + Place of certification / Lieu de certification + + + + 12345678912345678912345678900 + + + + MOSIP Application ID / MOSIP Application ID + + + + + + Registrar {{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 and vital statistics law / + J’attestation est une copie conforme de l'état civil. et + est + + + délivré par l'autorité mandatée conformément + à la loi sur l'enregistrement et les statistiques de + l'état civil + + + + + + + No. 2023HSND234S + + + + + Deceased details / Deceased details + + + + 1. + + + Full name / Nom et prénom + + + + {{ deceasedFirstName }} {{ deceasedFamilyName }} + + + + + 2. + + + Date of birth / Date de naissance + + + + {{deceasedBirthDate}} + + + + + 3. + + + Place of birth / Lieu de naissance + + + + Kabwe State Hospital
 + Chiwala, Kabwe, Farajaland + + + + + 4. + + + Resident at / Domicilié à + + + + {{districtPrimaryDeceased}}, {{statePrimaryDeceased}}, {{countryPrimaryDeceased}} + + + + + 5. + + + Marital status / Marital status + + + + {{deceasedMaritalStatus}} + + + + + + 6. + + + Nationality / Nationalité + + + + {{deceasedNationality}} + + + + + Event details / Event details + + + 7. + + + Date of death / Date de death + + + + {{eventDate}} + + + + + 8. + + + Place of death / Place of death + + + + {{placeOfDeathFacility}} + {{placeOfDeathDistrict}}, {{placeOfDeathState}}, {{placeOfDeathCountry}} + + + + + 9. + + + Manner of death + + + + {{mannerOfDeath}} + + + + + + Registration details / Détails d'inscription + + + + 10. + + + Informant full name / Informant full name + + + + {{informantFirstName}} {{informantFamilyName}} + Spouse + + + + + + 12. + + + Place of registration / Inscrit à + + + + {{registrar.district.name}}, {{registrar.state.name}}, {{registrar.country}} + + + + + + 13. + + + + Date of registration / Date d'enregistrement + + + + + {{ ordinalFormatDate registrar.date }} + + + + + 14. + + + Registered by / Enregistré par + + + + {{ registrar.name }} + + + + + + + + + + + + + + + + + + + FARAJALAND + + + + REPUBLIC OF FARAJALAND / REPUBLIC OF FARAJALAND + + + + + CERTIFIED COPY OF DEATH RECORD / COPIE CERTIFIÉE DE L'ACTE DE + DÉCÈS + + + + + + + CAUTION : THERE ARE OFFENCES RELATING TO FALSIFYING OR ALTERING A + CERTIFICATE AND USING OR POSSESSING A FALSE CERTIFICATE. A + + + CERTIFICATE IS NOT PROOF OF IDENTITY / ATTENTION : IL EXISTE DES + INFRACTIONS RELATIVES À LA FALSIFIATION OU À LA MODIFICATION + + + D'UN CERTIFICAT ET À L'UTILISATION OU LA POSSESSION + D'UN FAUX CERTIFICAT. UN CERTIFICAT N'EST PAS UNE PREUVE + D'IDENTITÉ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/api/certificates/source/death-certificate.svg b/src/api/certificates/source/death-certificate.svg index f509f139a..d5cab2be2 100644 --- a/src/api/certificates/source/death-certificate.svg +++ b/src/api/certificates/source/death-certificate.svg @@ -1,144 +1,927 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + CAUTION : THERE ARE OFFENCES RELATING TO FALSIFYING OR ALTERING A + CERTIFICATE AND USING OR POSSESSING A FALSE CERTIFICATE. A + + + 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 + + + + + + + + {{ ordinalFormatDate registrar.date }} + + + + Date of certification / Date de délivrance + + + + + + Imbobo District Office, Chiwala State, 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 birth + Date de naissance + + + + {{deceasedBirthDate}} + + + + + + + + + 5. + + + /
 + + + Date of death + Date de deces + + + + {{ eventDate }} + + + + + 4. + + + /
 + + + Place of death + Lieu de naissance + + + + {{ placeOfDeathDistrict }} or {{ placeOfDeathFacility }} + {{ placeOfDeathState }}, {{ placeOfDeathCountry }} + + + + + + + + 5. + + + Lieu d'enregistrement + + + + + + Place of registration / + + + + {{registrar.office.name}} + {{registrar.district.name}}, {{registrar.state.name}}, {{registrar.country}} + + + + + 6. + + + + + + Date of registration / + + + Date d'enregistrement + + + + {{ ordinalFormatDate registrar.date }} + + + + + 7. + + + /
 + + + Registered by + Enregistré par + + + + {{ registrar.name }} + + + + + + + No. 2023S5D234S + + + + + + + + + + + + + + + + + + + + FARAJALAND + + + + + + + + REPUBLIC OF FARAJALAND / REPUBLIQUE DE FARAJALAND + + + + CERTIFICATE OF DEATH / ACTE DE DEATH + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/api/certificates/source/marriage-certificate-certified-copy.svg b/src/api/certificates/source/marriage-certificate-certified-copy.svg index 6dbc6919b..aee3fcf5e 100644 --- a/src/api/certificates/source/marriage-certificate-certified-copy.svg +++ b/src/api/certificates/source/marriage-certificate-certified-copy.svg @@ -1,162 +1,1205 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + {{ordinalFormatDate registrar.date}} + + + + Date of certification / Date de certification + + + + + + {{registrar.office.name}}, {{registrar.state.name}}, {{registrar.country}} + + + + + Place of certification / Lieu de certification + + + + + + + + Registrar {{registrar.name}} + + + + + + + No. {{registrar.registrationNumber}} + + + + + 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 and vital statistics law / + J’attestation est une copie conforme de l'état civil. et + est + + + délivré par l'autorité mandatée + conformément à la loi sur l'enregistrement et les + statistiques de l'état civil + + + + + + + Groom’s details / Groom’s details + + + + + 1. + + + Full name / Nom et prénom + + + + {{groomFirstName}} {{groomFamilyName}} + + + + + 2. + + + Last name at birth + + + + 2. + + + Date of birth / Date de naissance + + + + {{groomBirthDate}} + + + + + + 4. + + + Resident at / Domicilié à + + + + {{districtPrimaryGroom}}, {{statePrimaryGroom}}, {{countryPrimaryGroom}} + + + + + 6. + + + Nationality / Nationalité + + + + {{groomNationality}} + + + + + + Bride’s details / Bride’s details + + + + 1. + + + Full name / Nom et prénom + + + + {{brideFirstName}} {{brideFamilyName}} + + + + + 2. + + + Last name at birth + + + + + + + + + 2. + + + Date of birth / Date de naissance + + + + {{brideBirthDate}} + + + + + + 4. + + + Resident at / Domicilié à + + + + {{districtPrimaryBride}}, {{statePrimaryBride}}, {{countryPrimaryBride}} + + + + + 6. + + + Nationality / Nationalité + + + + {{brideNationality}} + + + + + Event details / Event details + + + 12. + + + Date of marriage / Date of marriage + + + + {{eventDate}} + + + + + 11. + + + Place of marriage / Place of marriage + + + + {{districtPlaceofmarriage}}, {{statePlaceofmarriage}}, {{countryPlaceofmarriage}} + + + + + 13. + + + Type of marriage / Type of marriage + + + + {{typeOfMarriage}} + + + + + Witness details / Witness details + + + 11. + + + Witness 1 / Witness 1 + + + + {{witnessOneFirstName}} {{witnessOneFamilyName}} + Head of Groom’s Family + + + + + 11. + + + Witness 2 / Witness 2 + + + + {{witnessTwoFirstName}} {{witnessTwoFamilyName}} + Head of Bride’s Family + + + + + + Registration details / Détails d'inscription + + + + + 16. + + + Place of registration / Inscrit à + + + + {{registrar.district.name}}, {{registrar.state.name}}, {{registrar.country}} + + + + + + 17. + + + + Date of registration / Date d'enregistrement + + + + + {{ordinalFormatDate registrar.date}} + + + + + 18. + + + Registered by / Enregistré par + + + + {{registrar.name}} + + + + + + + + + + + + + + + + + + + FARAJALAND + + + + REPUBLIC OF FARAJALAND / REPUBLIC OF FARAJALAND + + + + + CERTIFIED COPY OF MARRIAGE RECORD / COPIE CERTIFIÉE DE L'ACTE + DE MARIAGE + + + + + + + CAUTION : THERE ARE OFFENCES RELATING TO FALSIFYING OR ALTERING A + CERTIFICATE AND USING OR POSSESSING A FALSE CERTIFICATE. A + + + CERTIFICATE IS NOT PROOF OF IDENTITY / ATTENTION : IL EXISTE DES + INFRACTIONS RELATIVES À LA FALSIFIATION OU À LA MODIFICATION + + + D'UN CERTIFICAT ET À L'UTILISATION OU LA POSSESSION + D'UN FAUX CERTIFICAT. UN CERTIFICAT N'EST PAS UNE PREUVE + D'IDENTITÉ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/api/certificates/source/marriage-certificate.svg b/src/api/certificates/source/marriage-certificate.svg index e6a3e11c1..19e647106 100644 --- a/src/api/certificates/source/marriage-certificate.svg +++ b/src/api/certificates/source/marriage-certificate.svg @@ -1,234 +1,1009 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + CAUTION : THERE ARE OFFENCES RELATING TO FALSIFYING OR ALTERING A + CERTIFICATE AND USING OR POSSESSING A FALSE CERTIFICATE. A + + + 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 + + + + + 01 April 2012 + + + + Date of certification / Date de délivrance + + + + + + Imbobo District Office, Chiwala State, 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 marriage + Date du mariage + + + + {{eventDate}} + + + + + 4. + + + /
 + + + Place of marriage + Lieu de mariage + + + + {{ districtPlaceofmarriage }} + {{ statePlaceofmarriage }}, {{ countryPlaceofmarriage }} + + + + + + 5. + + + Witnesses / + Les témoins + + + + {{witnessOneFirstName}} {{witnessOneFamilyName}} + {{witnessTwoFirstName}} {{witnessTwoFamilyName}} + + + + + + 6. + + + Lieu d'enregistrement + + + + + + Place of registration / + + + + {{registrar.office.name}} + {{registrar.office.district}}, {{registrar.office.state}}, {{registrar.country}} + + + + + 7. + + + + + + Date of registration / + + + Date d'enregistrement + + + + {{ordinalFormatDate registrar.date}} + + + + + 8. + + + /
 + + + Registered by + Enregistré par + + + + {{ registrar.name }} + + + + + + 9. + + + + Signatures of bride and groom / + + Signatures des mariés + + + + + Groom / Marié + + + + + Bride / Mariée + + + + + + + No. {{registrationNumber}} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/form/common/certificate/handlebars/helpers.ts b/src/form/common/certificate/handlebars/helpers.ts index e19250d90..6fd4f6acb 100644 --- a/src/form/common/certificate/handlebars/helpers.ts +++ b/src/form/common/certificate/handlebars/helpers.ts @@ -23,3 +23,30 @@ export function debug(): Handlebars.HelperDelegate { return value } } + +export function ordinalFormatDate(): Handlebars.HelperDelegate { + return function (dateString: string) { + const date = new Date(dateString.trim()) + const getOrdinalSuffix = (day: number) => { + if (day > 3 && day < 21) return day + 'th' + switch (day % 10) { + case 1: + return day + 'st' + case 2: + return day + 'nd' + case 3: + return day + 'rd' + default: + return day + 'th' + } + } + + // Format the date into ex: "11th November 2023" + const day = getOrdinalSuffix(date.getDate()) + const month = date.toLocaleString('default', { month: 'long' }) + const year = date.getFullYear() + + const formattedDate = `${day} ${month} ${year}` + return formattedDate + } +} From 27c1e1b5be1539bc57aa549dc9b828649e1acd4a Mon Sep 17 00:00:00 2001 From: tareq89 Date: Mon, 11 Nov 2024 21:23:28 +0600 Subject: [PATCH 14/37] certificate indentation fixed --- .../birth-certificate-certified-copy.svg | 134 +- .../certificates/source/birth-certificate.svg | 1189 +++-------------- .../death-certificate-certified-copy.svg | 90 +- .../certificates/source/death-certificate.svg | 1080 +++------------ .../marriage-certificate-certified-copy.svg | 137 +- .../source/marriage-certificate.svg | 1174 +++------------- 6 files changed, 567 insertions(+), 3237 deletions(-) diff --git a/src/api/certificates/source/birth-certificate-certified-copy.svg b/src/api/certificates/source/birth-certificate-certified-copy.svg index a5caefff5..2cc8f46a3 100644 --- a/src/api/certificates/source/birth-certificate-certified-copy.svg +++ b/src/api/certificates/source/birth-certificate-certified-copy.svg @@ -27,9 +27,7 @@ font-weight="600" letter-spacing="0px" > - - Date of certification / Date de certification - + Date of certification / Date de certification - - Imbobo District Office, Chiwala State, Farajaland - + Imbobo District Office, Chiwala State, Farajaland - - Place of certification / Lieu de certification - + Place of certification / Lieu de certification - - MOSIP Application ID / MOSIP Application ID - + MOSIP Application ID / MOSIP Application ID - + - - CAUTION : THERE ARE OFFENCES RELATING TO FALSIFYING OR ALTERING A - CERTIFICATE AND USING OR POSSESSING A FALSE CERTIFICATE. A - - - CERTIFICATE IS NOT PROOF OF IDENTITY / ATTENTION : IL EXISTE DES - INFRACTIONS RELATIVES À LA FALSIFIATION OU À LA MODIFICATION - - - D'UN CERTIFICAT ET À L'UTILISATION OU LA POSSESSION - D'UN FAUX CERTIFICAT. UN CERTIFICAT N'EST PAS UNE PREUVE - D'IDENTITÉ - + CAUTION : THERE ARE OFFENCES RELATING TO FALSIFYING OR ALTERING A CERTIFICATE AND USING OR POSSESSING A FALSE CERTIFICATE. A + CERTIFICATE IS NOT PROOF OF IDENTITY / ATTENTION : IL EXISTE DES INFRACTIONS RELATIVES À LA FALSIFIATION OU À LA MODIFICATION + D'UN CERTIFICAT ET À L'UTILISATION OU LA POSSESSION D'UN FAUX CERTIFICAT. UN CERTIFICAT N'EST PAS UNE PREUVE D'IDENTITÉ - + - - 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 and vital statistics law / J’attestation est - une copie conforme de l'état civil et est délivré par - - - l'autorité mandatée conformément à la loi sur - l'enregistrement et les statistiques de l'état civil - + 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 and vital statistics law / J’attestation est une copie conforme de l'état civil et est délivré par + l'autorité mandatée conformément à la loi sur l'enregistrement et les statistiques de l'état civil - - REPUBLIC OF FARAJALAND / REPUBLIC OF FARAJALAND - + REPUBLIC OF FARAJALAND / REPUBLIC OF FARAJALAND - - CERTIFIED COPY OF BIRTH RECORD / COPIE CERTIFIÉE DE L'ACTE DE - NAISSANCE - + CERTIFIED COPY OF BIRTH RECORD / COPIE CERTIFIÉE DE L'ACTE DE NAISSANCE - - Child’s details / Détails de l'enfant - + Child’s details / Détails de l'enfant - - Mother’s details / Détails de la mère - + Mother’s details / Détails de la mère - - Détails du père / Father’s details - + Father’s details / Détails du père - - Registration details / Détails d'inscription - + Registration details / Détails d'inscription - - Date of registration / Date d'enregistrement - + Date of registration / Date d'enregistrement - - - - - - - - - - - - - CAUTION : THERE ARE OFFENCES RELATING TO FALSIFYING OR ALTERING A - CERTIFICATE AND USING OR POSSESSING A FALSE CERTIFICATE. A - - - 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 - - - - - - - - - 01 April 2012 - - - - Date of certification / Date de délivrance - - - - Imbobo District Office
 - Chiwala , Kabwe , Farajaland - - - - - - - Place of certification / Lieu de délivrance - - - - 12345678912345678912345678900 - - - - MOSIP Application ID / MOSIP Application ID - - - - - - - - - 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 birth - Date de naissance - - - - {{ eventDate }} - - - - - 4. - - - /
 - - - Place of birth - Lieu de naissance - - - - {{ placeOfBirthFacility }}, {{ placeOfBirthDistrict }} - {{ placeOfBirthState }}, {{ placeOfBirthCountry }} - - - - - 5. - - - /
 - - - Mother’s full name - Nom 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 / - - - - {{ registrar.office.name }} - {{ registrar.district.name }}, {{ registrar.state.name }}, {{ registrar.country }} - - - - - 9. - - - - - - Date of registration / - - - Date d'enregistrement - - - - {{{ ordinalFormatDate registrar.date }}} - - - - - 10. - - - /
 - - - Registered by - Enregistré par - - - - {{ registrar.name }} - - - - - - - No. 2023S5D234S - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + +{{#ifCond printInAdvance '!==' true}}{{/ifCond}} + +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 loggedInUser.officeId 'name'}}
{{location loggedInUser.districtId 'name'}}, {{location loggedInUser.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}} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/api/certificates/source/death-certificate-certified-copy.svg b/src/api/certificates/source/death-certificate-certified-copy.svg index c4b108b0e..152c4c95f 100644 --- a/src/api/certificates/source/death-certificate-certified-copy.svg +++ b/src/api/certificates/source/death-certificate-certified-copy.svg @@ -27,9 +27,7 @@ font-weight="600" letter-spacing="0px" > - - Date of certification / Date de certification - + Date of certification / Date de certification - - Imbobo District Office, Chiwala State, Farajaland - + Imbobo District Office, Chiwala State, Farajaland - - Place of certification / Lieu de certification - + Place of certification / Lieu de certification - - MOSIP Application ID / MOSIP Application ID - + MOSIP Application ID / MOSIP Application ID + + xlink:href="{{registrar.signature}}" + /> - - 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 and vital statistics law / - J’attestation est une copie conforme de l'état civil. et - est - - - délivré par l'autorité mandatée conformément - à la loi sur l'enregistrement et les statistiques de - l'état civil - + 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 and vital statistics law / J’attestation est une copie conforme de l'état civil. et est + délivré par l'autorité mandatée conformément à la loi sur l'enregistrement et les statistiques de l'état civil - - Date of registration / Date d'enregistrement - + Date of registration / Date d'enregistrement - - REPUBLIC OF FARAJALAND / REPUBLIC OF FARAJALAND - + REPUBLIC OF FARAJALAND / REPUBLIC OF FARAJALAND - - CERTIFIED COPY OF DEATH RECORD / COPIE CERTIFIÉE DE L'ACTE DE - DÉCÈS - + CERTIFIED COPY OF DEATH RECORD / COPIE CERTIFIÉE DE L'ACTE DE DÉCÈS @@ -793,19 +772,9 @@ font-weight="600" letter-spacing="0px" > - - CAUTION : THERE ARE OFFENCES RELATING TO FALSIFYING OR ALTERING A - CERTIFICATE AND USING OR POSSESSING A FALSE CERTIFICATE. A - - - CERTIFICATE IS NOT PROOF OF IDENTITY / ATTENTION : IL EXISTE DES - INFRACTIONS RELATIVES À LA FALSIFIATION OU À LA MODIFICATION - - - D'UN CERTIFICAT ET À L'UTILISATION OU LA POSSESSION - D'UN FAUX CERTIFICAT. UN CERTIFICAT N'EST PAS UNE PREUVE - D'IDENTITÉ - + CAUTION : THERE ARE OFFENCES RELATING TO FALSIFYING OR ALTERING A CERTIFICATE AND USING OR POSSESSING A FALSE CERTIFICATE. A + CERTIFICATE IS NOT PROOF OF IDENTITY / ATTENTION : IL EXISTE DES INFRACTIONS RELATIVES À LA FALSIFIATION OU À LA MODIFICATION + D'UN CERTIFICAT ET À L'UTILISATION OU LA POSSESSION D'UN FAUX CERTIFICAT. UN CERTIFICAT N'EST PAS UNE PREUVE D'IDENTITÉ - - - - diff --git a/src/api/certificates/source/death-certificate.svg b/src/api/certificates/source/death-certificate.svg index d5cab2be2..047369e27 100644 --- a/src/api/certificates/source/death-certificate.svg +++ b/src/api/certificates/source/death-certificate.svg @@ -1,927 +1,153 @@ - - - - - - CAUTION : THERE ARE OFFENCES RELATING TO FALSIFYING OR ALTERING A - CERTIFICATE AND USING OR POSSESSING A FALSE CERTIFICATE. A - - - 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 - - - - - - - - {{ ordinalFormatDate registrar.date }} - - - - Date of certification / Date de délivrance - - - - - - Imbobo District Office, Chiwala State, 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 birth - Date de naissance - - - - {{deceasedBirthDate}} - - - - - - - - - 5. - - - /
 - - - Date of death - Date de deces - - - - {{ eventDate }} - - - - - 4. - - - /
 - - - Place of death - Lieu de naissance - - - - {{ placeOfDeathDistrict }} or {{ placeOfDeathFacility }} - {{ placeOfDeathState }}, {{ placeOfDeathCountry }} - - - - - - - - 5. - - - Lieu d'enregistrement - - - - - - Place of registration / - - - - {{registrar.office.name}} - {{registrar.district.name}}, {{registrar.state.name}}, {{registrar.country}} - - - - - 6. - - - - - - Date of registration / - - - Date d'enregistrement - - - - {{ ordinalFormatDate registrar.date }} - - - - - 7. - - - /
 - - - Registered by - Enregistré par - - - - {{ registrar.name }} - - - - - - - No. 2023S5D234S - - - - - - - - - - - - - - - - - - - - FARAJALAND - - - - - - - - REPUBLIC OF FARAJALAND / REPUBLIQUE DE FARAJALAND - - - - CERTIFICATE OF DEATH / ACTE DE DEATH - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + +{{#ifCond printInAdvance '!==' true}}{{/ifCond}} + +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 loggedInUser.officeId 'name'}}{{location loggedInUser.districtId 'name'}}, {{location loggedInUser.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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/api/certificates/source/marriage-certificate-certified-copy.svg b/src/api/certificates/source/marriage-certificate-certified-copy.svg index aee3fcf5e..075e3073d 100644 --- a/src/api/certificates/source/marriage-certificate-certified-copy.svg +++ b/src/api/certificates/source/marriage-certificate-certified-copy.svg @@ -27,9 +27,7 @@ font-weight="600" letter-spacing="0px" > - - Date of certification / Date de certification - + Date of certification / Date de certification - - {{registrar.office.name}}, {{registrar.state.name}}, {{registrar.country}} - + {{registrar.office.name}}, {{registrar.state.name}}, {{registrar.country}} - - Place of certification / Lieu de certification - + Place of certification / Lieu de certification - - - + - No. {{registrar.registrationNumber}} + No. {{registrationNumber}} - - 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 and vital statistics law / - J’attestation est une copie conforme de l'état civil. et - est - - - délivré par l'autorité mandatée - conformément à la loi sur l'enregistrement et les - statistiques de l'état civil - + 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 and vital statistics law / J’attestation est une copie conforme de l'état civil. et est + délivré par l'autorité mandatée conformément à la loi sur l'enregistrement et les statistiques de l'état civil @@ -155,9 +136,7 @@ font-weight="bold" letter-spacing="0px" > - - Groom’s details / Groom’s details - + Groom’s details / Groom’s details - - Bride’s details / Bride’s details - + Bride’s details / Bride’s details - - Registration details / Détails d'inscription - + Registration details / Détails d'inscription - - Date of registration / Date d'enregistrement - + Date of registration / Date d'enregistrement - - REPUBLIC OF FARAJALAND / REPUBLIC OF FARAJALAND - + REPUBLIC OF FARAJALAND / REPUBLIC OF FARAJALAND - - CERTIFIED COPY OF MARRIAGE RECORD / COPIE CERTIFIÉE DE L'ACTE - DE MARIAGE - + CERTIFIED COPY OF MARRIAGE RECORD / COPIE CERTIFIÉE DE L'ACTE DE MARIAGE @@ -963,41 +931,21 @@ font-weight="600" letter-spacing="0px" > - - CAUTION : THERE ARE OFFENCES RELATING TO FALSIFYING OR ALTERING A - CERTIFICATE AND USING OR POSSESSING A FALSE CERTIFICATE. A - - - CERTIFICATE IS NOT PROOF OF IDENTITY / ATTENTION : IL EXISTE DES - INFRACTIONS RELATIVES À LA FALSIFIATION OU À LA MODIFICATION - - - D'UN CERTIFICAT ET À L'UTILISATION OU LA POSSESSION - D'UN FAUX CERTIFICAT. UN CERTIFICAT N'EST PAS UNE PREUVE - D'IDENTITÉ - + CAUTION : THERE ARE OFFENCES RELATING TO FALSIFYING OR ALTERING A CERTIFICATE AND USING OR POSSESSING A FALSE CERTIFICATE. A + CERTIFICATE IS NOT PROOF OF IDENTITY / ATTENTION : IL EXISTE DES INFRACTIONS RELATIVES À LA FALSIFIATION OU À LA MODIFICATION + D'UN CERTIFICAT ET À L'UTILISATION OU LA POSSESSION D'UN FAUX CERTIFICAT. UN CERTIFICAT N'EST PAS UNE PREUVE D'IDENTITÉ - - - - - - - - - - - - diff --git a/src/api/certificates/source/marriage-certificate.svg b/src/api/certificates/source/marriage-certificate.svg index 19e647106..526cea917 100644 --- a/src/api/certificates/source/marriage-certificate.svg +++ b/src/api/certificates/source/marriage-certificate.svg @@ -1,1009 +1,165 @@ - - - - - - CAUTION : THERE ARE OFFENCES RELATING TO FALSIFYING OR ALTERING A - CERTIFICATE AND USING OR POSSESSING A FALSE CERTIFICATE. A - - - 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 - - - - - 01 April 2012 - - - - Date of certification / Date de délivrance - - - - - - Imbobo District Office, Chiwala State, 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 marriage - Date du mariage - - - - {{eventDate}} - - - - - 4. - - - /
 - - - Place of marriage - Lieu de mariage - - - - {{ districtPlaceofmarriage }} - {{ statePlaceofmarriage }}, {{ countryPlaceofmarriage }} - - - - - - 5. - - - Witnesses / - Les témoins - - - - {{witnessOneFirstName}} {{witnessOneFamilyName}} - {{witnessTwoFirstName}} {{witnessTwoFamilyName}} - - - - - - 6. - - - Lieu d'enregistrement - - - - - - Place of registration / - - - - {{registrar.office.name}} - {{registrar.office.district}}, {{registrar.office.state}}, {{registrar.country}} - - - - - 7. - - - - - - Date of registration / - - - Date d'enregistrement - - - - {{ordinalFormatDate registrar.date}} - - - - - 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}} + +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 loggedInUser.officeId 'name'}}{{location loggedInUser.districtId 'name'}}, {{location loggedInUser.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}} + + + + \ No newline at end of file From 0ff8a8fb51719090885c70f178e176b30c0caeb3 Mon Sep 17 00:00:00 2001 From: tareq89 Date: Tue, 12 Nov 2024 18:41:14 +0600 Subject: [PATCH 15/37] rect removed from svg certificate as image container --- .../birth-certificate-certified-copy.svg | 990 ++---------------- .../certificates/source/birth-certificate.svg | 457 +++++--- .../death-certificate-certified-copy.svg | 837 ++------------- .../certificates/source/death-certificate.svg | 415 +++++--- .../marriage-certificate-certified-copy.svg | 979 ++--------------- .../source/marriage-certificate.svg | 429 +++++--- 6 files changed, 1138 insertions(+), 2969 deletions(-) diff --git a/src/api/certificates/source/birth-certificate-certified-copy.svg b/src/api/certificates/source/birth-certificate-certified-copy.svg index 2cc8f46a3..1856832d0 100644 --- a/src/api/certificates/source/birth-certificate-certified-copy.svg +++ b/src/api/certificates/source/birth-certificate-certified-copy.svg @@ -1,1132 +1,368 @@ - + - + {{ordinalFormatDate registrar.date}} - + Date of certification / Date de certification - + Imbobo District Office, Chiwala State, Farajaland - + Place of certification / Lieu de certification - + 12345678912345678912345678900 - + MOSIP Application ID / MOSIP Application ID - - - + + Certified by: {{registrar.name}} - + CAUTION : THERE ARE OFFENCES RELATING TO FALSIFYING OR ALTERING A CERTIFICATE AND USING OR POSSESSING A FALSE CERTIFICATE. A CERTIFICATE IS NOT PROOF OF IDENTITY / ATTENTION : IL EXISTE DES INFRACTIONS RELATIVES À LA FALSIFIATION OU À LA MODIFICATION D'UN CERTIFICAT ET À L'UTILISATION OU LA POSSESSION D'UN FAUX CERTIFICAT. UN CERTIFICAT N'EST PAS UNE PREUVE D'IDENTITÉ - - + 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 and vital statistics law / J’attestation est une copie conforme de l'état civil et est délivré par l'autorité mandatée conformément à la loi sur l'enregistrement et les statistiques de l'état civil - - - - + + + No. 2023HSND234S - + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + FARAJALAND - + REPUBLIC OF FARAJALAND / REPUBLIC OF FARAJALAND - + CERTIFIED COPY OF BIRTH RECORD / COPIE CERTIFIÉE DE L'ACTE DE NAISSANCE - + Child’s details / Détails de l'enfant - + 1. - + Full name / Nom et prénom - + {{ childFirstName }} {{ childFamilyName }} - + 2. - + Sex / Sexe - + {{ childGender }} - + 3. - + Date of birth / Date de naissance - + {{ eventDate }} - + 4. - + Place of birth / Lieu de naissance - + {{ placeOfBirthFacility }}, {{ placeOfBirthDistrict }} {{ placeOfBirthState }}, {{ placeOfBirthCountry }} - + Mother’s details / Détails de la mère - + 5. - + Full name / Nom complet - + {{ motherFirstName }} {{ motherFamilyName }} - + 6. - + Date of birth / Date de naissance - + {{motherBirthDate}} - + 7. - + Resident at / Domicilié à - + {{districtPrimaryMother}}, {{statePrimaryMother}}, {{countryPrimaryMother}} - + 8. - + Nationality / Nationalité - + {{motherNationality}} - + 9. - + Occupation / Profession - + Doctor - + Father’s details / Détails du père - + 10. - + Full name / Nom complet - + {{fatherFirstName}} {{fatherFamilyName}} - + 11. - + Date of birth / Date de naissance - + {{fatherBirthDate}} - + 12. - + Resident at / Domicilié à - + {{districtPrimaryFather}}, {{statePrimaryFather}}, {{countryPrimaryFather}} - + 13. - + Nationality / Nationalité - + {{fatherNationality}} - + 14. - + Occupation / Profession - + Doctor - + Registration details / Détails d'inscription - + 15. - + Informant full name / Informant full name - + {{informantFirstName}} {{informantNationality}} {{countryPrimaryInformant}} - + 16. - + Place of registration / Inscrit à - + {{ registrar.district.name }}, {{ registrar.state.name }}, {{ registrar.country }} - + 17. - + Date of registration / Date d'enregistrement - + {{{ ordinalFormatDate registrar.date }}} - + 18. - + Registered by / Enregistré par - + {{ registrar.name }} - - - - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + + + \ No newline at end of file diff --git a/src/api/certificates/source/birth-certificate.svg b/src/api/certificates/source/birth-certificate.svg index 74fcab20e..3e1d94798 100644 --- a/src/api/certificates/source/birth-certificate.svg +++ b/src/api/certificates/source/birth-certificate.svg @@ -1,175 +1,294 @@ - - -{{#ifCond printInAdvance '!==' true}}{{/ifCond}} - -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 loggedInUser.officeId 'name'}}
{{location loggedInUser.districtId 'name'}}, {{location loggedInUser.stateId 'name'}}, Farajaland - -Place of certification / Lieu de délivrance -{{mosipAid}} - - - - {{#ifCond mosipAid '===' undefined }} - - {{else}} - {{mosipAIDLabel}} - {{/ifCond}} + + + + 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 loggedInUser.officeId 'name'}}
 + {{location loggedInUser.districtId 'name'}}, {{location loggedInUser.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. - - - - - - -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 - - - + + /
 + + + Date of birth + Date de naissance + + + + {{eventDate}} + + + + + 4. + + + /
 + + + Place of birth + Lieu de naissance + + + {{#ifCond placeOfBirthFacility '===' undefined }} - {{location districtPlaceofbirthId 'name'}}{{internationalDistrictPlaceofbirth}}, - {{location statePlaceofbirthId 'name'}}{{internationalStatePlaceofbirth}}, {{countryPlaceofbirth}} - {{else}} - {{placeOfBirthFacility}} {{placeOfBirthState}}, {{placeOfBirthCountry}} + {{location districtPlaceofbirthId 'name'}}{{internationalDistrictPlaceofbirth}}, + {{location statePlaceofbirthId 'name'}}{{internationalStatePlaceofbirth}}, {{countryPlaceofbirth}} + {{else}} + {{placeOfBirthFacility}} + {{placeOfBirthState}}, {{placeOfBirthCountry}} {{/ifCond}} + + + + + 5. + + + /
 + + + Mother’s full name + Nom 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 - - - -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}} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + {{registrar.name}} + + + + + + + No. {{registrationNumber}} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{#ifCond printInAdvance '!==' true}} + + {{/ifCond}} \ No newline at end of file diff --git a/src/api/certificates/source/death-certificate-certified-copy.svg b/src/api/certificates/source/death-certificate-certified-copy.svg index 152c4c95f..e852f0991 100644 --- a/src/api/certificates/source/death-certificate-certified-copy.svg +++ b/src/api/certificates/source/death-certificate-certified-copy.svg @@ -1,939 +1,294 @@ - + - + 01 April 2012 - + Date of certification / Date de certification - + Imbobo District Office, Chiwala State, Farajaland - + Place of certification / Lieu de certification - + 12345678912345678912345678900 - + MOSIP Application ID / MOSIP Application ID - - - - + + + Registrar {{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 and vital statistics law / J’attestation est une copie conforme de l'état civil. et est délivré par l'autorité mandatée conformément à la loi sur l'enregistrement et les statistiques de l'état civil - - - - + + + No. 2023HSND234S - + - + Deceased details / Deceased details - + 1. - + Full name / Nom et prénom - - {{ deceasedFirstName }} {{ deceasedFamilyName }} + + {{ deceasedFirstName }} {{ deceasedFamilyName }} - + 2. - + Date of birth / Date de naissance - + {{deceasedBirthDate}} - + 3. - + Place of birth / Lieu de naissance - + Kabwe State Hospital
 Chiwala, Kabwe, Farajaland - + 4. - + Resident at / Domicilié à - + {{districtPrimaryDeceased}}, {{statePrimaryDeceased}}, {{countryPrimaryDeceased}} - + 5. - + Marital status / Marital status - + {{deceasedMaritalStatus}} - + 6. - + Nationality / Nationalité - + {{deceasedNationality}} - + Event details / Event details - + 7. - + Date of death / Date de death - + {{eventDate}} - + 8. - + Place of death / Place of death - + {{placeOfDeathFacility}} {{placeOfDeathDistrict}}, {{placeOfDeathState}}, {{placeOfDeathCountry}} - + 9. - + Manner of death - + {{mannerOfDeath}} - - - Registration details / Détails d'inscription - - - + + Registration details / Détails d'inscription + + 10. - + Informant full name / Informant full name - + {{informantFirstName}} {{informantFamilyName}} Spouse - + 12. - + Place of registration / Inscrit à - + {{registrar.district.name}}, {{registrar.state.name}}, {{registrar.country}} - + 13. - + Date of registration / Date d'enregistrement - + {{ ordinalFormatDate registrar.date }} - + 14. - + Registered by / Enregistré par - + {{ registrar.name }} - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + FARAJALAND - + REPUBLIC OF FARAJALAND / REPUBLIC OF FARAJALAND - + CERTIFIED COPY OF DEATH RECORD / COPIE CERTIFIÉE DE L'ACTE DE DÉCÈS - + CAUTION : THERE ARE OFFENCES RELATING TO FALSIFYING OR ALTERING A CERTIFICATE AND USING OR POSSESSING A FALSE CERTIFICATE. A CERTIFICATE IS NOT PROOF OF IDENTITY / ATTENTION : IL EXISTE DES INFRACTIONS RELATIVES À LA FALSIFIATION OU À LA MODIFICATION D'UN CERTIFICAT ET À L'UTILISATION OU LA POSSESSION D'UN FAUX CERTIFICAT. UN CERTIFICAT N'EST PAS UNE PREUVE D'IDENTITÉ - - - - - - - - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - + + + + \ No newline at end of file diff --git a/src/api/certificates/source/death-certificate.svg b/src/api/certificates/source/death-certificate.svg index 047369e27..3d4cee3af 100644 --- a/src/api/certificates/source/death-certificate.svg +++ b/src/api/certificates/source/death-certificate.svg @@ -1,153 +1,266 @@ - - -{{#ifCond printInAdvance '!==' true}}{{/ifCond}} - -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 loggedInUser.officeId 'name'}}{{location loggedInUser.districtId 'name'}}, {{location loggedInUser.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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + 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 loggedInUser.officeId 'name'}} + {{location loggedInUser.districtId 'name'}}, {{location loggedInUser.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 birth + Date de naissance + + + {{#ifCond ageOfDeceasedInYears '===' undefined }} + + {{deceasedBirthDate}} + + + {{else}} + + {{ageOfDeceasedInYears}} years old + + {{/ifCond}} + + + + + + + 5. + + + /
 + + + Date of death + Date de deces + + + + {{eventDate}} + + + + + 4. + + + /
 + + + Place of death + Lieu 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}} \ No newline at end of file diff --git a/src/api/certificates/source/marriage-certificate-certified-copy.svg b/src/api/certificates/source/marriage-certificate-certified-copy.svg index 075e3073d..e1cabf7a8 100644 --- a/src/api/certificates/source/marriage-certificate-certified-copy.svg +++ b/src/api/certificates/source/marriage-certificate-certified-copy.svg @@ -1,1122 +1,365 @@ - + - + {{ordinalFormatDate registrar.date}} - + Date of certification / Date de certification - + {{registrar.office.name}}, {{registrar.state.name}}, {{registrar.country}} - + Place of certification / Lieu de certification - - - + + Registrar {{registrar.name}} - - - - + + + No. {{registrationNumber}} - - + + 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 and vital statistics law / J’attestation est une copie conforme de l'état civil. et est délivré par l'autorité mandatée conformément à la loi sur l'enregistrement et les statistiques de l'état civil - + Groom’s details / Groom’s details - + 1. - + Full name / Nom et prénom - + {{groomFirstName}} {{groomFamilyName}} - + 2. - + Last name at birth - + 2. - + Date of birth / Date de naissance - + {{groomBirthDate}} - + 4. - + Resident at / Domicilié à - + {{districtPrimaryGroom}}, {{statePrimaryGroom}}, {{countryPrimaryGroom}} - + 6. - + Nationality / Nationalité - + {{groomNationality}} - + Bride’s details / Bride’s details - + 1. - + Full name / Nom et prénom - + {{brideFirstName}} {{brideFamilyName}} - + 2. - + Last name at birth - + - + 2. - + Date of birth / Date de naissance - + {{brideBirthDate}} - + 4. - + Resident at / Domicilié à - + {{districtPrimaryBride}}, {{statePrimaryBride}}, {{countryPrimaryBride}} - + 6. - + Nationality / Nationalité - + {{brideNationality}} - + Event details / Event details - + 12. - + Date of marriage / Date of marriage - + {{eventDate}} - + 11. - + Place of marriage / Place of marriage - + {{districtPlaceofmarriage}}, {{statePlaceofmarriage}}, {{countryPlaceofmarriage}} - + 13. - + Type of marriage / Type of marriage - + {{typeOfMarriage}} - + Witness details / Witness details - + 11. - + Witness 1 / Witness 1 - + {{witnessOneFirstName}} {{witnessOneFamilyName}} Head of Groom’s Family - + 11. - + Witness 2 / Witness 2 - + {{witnessTwoFirstName}} {{witnessTwoFamilyName}} Head of Bride’s Family - + Registration details / Détails d'inscription - + 16. - + Place of registration / Inscrit à - + {{registrar.district.name}}, {{registrar.state.name}}, {{registrar.country}} - + 17. - + Date of registration / Date d'enregistrement - + {{ordinalFormatDate registrar.date}} - + 18. - + Registered by / Enregistré par - + {{registrar.name}} - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + FARAJALAND - + REPUBLIC OF FARAJALAND / REPUBLIC OF FARAJALAND - + CERTIFIED COPY OF MARRIAGE RECORD / COPIE CERTIFIÉE DE L'ACTE DE MARIAGE - + CAUTION : THERE ARE OFFENCES RELATING TO FALSIFYING OR ALTERING A CERTIFICATE AND USING OR POSSESSING A FALSE CERTIFICATE. A CERTIFICATE IS NOT PROOF OF IDENTITY / ATTENTION : IL EXISTE DES INFRACTIONS RELATIVES À LA FALSIFIATION OU À LA MODIFICATION D'UN CERTIFICAT ET À L'UTILISATION OU LA POSSESSION D'UN FAUX CERTIFICAT. UN CERTIFICAT N'EST PAS UNE PREUVE D'IDENTITÉ - - - - - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + + + \ No newline at end of file diff --git a/src/api/certificates/source/marriage-certificate.svg b/src/api/certificates/source/marriage-certificate.svg index 526cea917..cb9b3f87c 100644 --- a/src/api/certificates/source/marriage-certificate.svg +++ b/src/api/certificates/source/marriage-certificate.svg @@ -1,165 +1,268 @@ - - - - -{{#ifCond printInAdvance '!==' true}}{{/ifCond}} - -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 loggedInUser.officeId 'name'}}{{location loggedInUser.districtId 'name'}}, {{location loggedInUser.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}} - - - + + + + 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 loggedInUser.officeId 'name'}} + {{location loggedInUser.districtId 'name'}}, {{location loggedInUser.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 marriage + Date du mariage + + + + {{eventDate}} + + + + + 4. + + + /
 + + + Place of marriage + Lieu 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}} \ No newline at end of file From 768f9e9ca986f63fd395ae5d185002cab6755ee9 Mon Sep 17 00:00:00 2001 From: tareq89 Date: Tue, 12 Nov 2024 19:00:49 +0600 Subject: [PATCH 16/37] groom and bride last name added in the certificate --- .../source/marriage-certificate-certified-copy.svg | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/api/certificates/source/marriage-certificate-certified-copy.svg b/src/api/certificates/source/marriage-certificate-certified-copy.svg index e1cabf7a8..a81c1b9b1 100644 --- a/src/api/certificates/source/marriage-certificate-certified-copy.svg +++ b/src/api/certificates/source/marriage-certificate-certified-copy.svg @@ -54,6 +54,9 @@ Last name at birth + + {{groomMarriedLastNameEng}} + 2. @@ -113,6 +116,9 @@ Last name at birth + + {{brideMarriedLastNameEng}} + From f11a733f673c75deb6560c7abb1b992db563fa08 Mon Sep 17 00:00:00 2001 From: tareq89 Date: Tue, 12 Nov 2024 21:06:47 +0600 Subject: [PATCH 17/37] misc binding issues in certificates --- .../birth-certificate-certified-copy.svg | 15 +- .../death-certificate-certified-copy.svg | 10 +- .../marriage-certificate-certified-copy.svg | 4 +- src/translations/client.csv | 249 ++++++++++++++++++ src/utils/mapping/field-mapping-utils.ts | 2 +- 5 files changed, 264 insertions(+), 16 deletions(-) diff --git a/src/api/certificates/source/birth-certificate-certified-copy.svg b/src/api/certificates/source/birth-certificate-certified-copy.svg index 1856832d0..4285b8b00 100644 --- a/src/api/certificates/source/birth-certificate-certified-copy.svg +++ b/src/api/certificates/source/birth-certificate-certified-copy.svg @@ -9,7 +9,7 @@ - Imbobo District Office, Chiwala State, Farajaland + {{location registrar.officeId 'name'}}, {{location registrar.districtId 'name'}}, {{location registrar.stateId 'name'}}, Farajaland Place of certification / Lieu de certification @@ -40,7 +40,7 @@ - No. 2023HSND234S + No. {{registrationNumber}} @@ -169,7 +169,7 @@ - {{motherNationality}} + {{intl 'nationality' motherNationality}} @@ -181,7 +181,7 @@ - Doctor + {{motherOccupation}} @@ -232,7 +232,7 @@ - {{fatherNationality}} + {{intl 'nationality' fatherNationality}} @@ -244,7 +244,7 @@ - Doctor + {{fatherOccupation}} @@ -259,8 +259,7 @@ - {{informantFirstName}} {{informantNationality}} - {{countryPrimaryInformant}} + {{informantFirstName}} {{informantFamilyName}} diff --git a/src/api/certificates/source/death-certificate-certified-copy.svg b/src/api/certificates/source/death-certificate-certified-copy.svg index e852f0991..2fe4400bc 100644 --- a/src/api/certificates/source/death-certificate-certified-copy.svg +++ b/src/api/certificates/source/death-certificate-certified-copy.svg @@ -2,14 +2,14 @@ - 01 April 2012 + {{certificateDate}} Date of certification / Date de certification - Imbobo District Office, Chiwala State, Farajaland + {{location registrar.officeId 'name'}}, {{location registrar.districtId 'name'}}, {{location registrar.stateId 'name'}}, Farajaland Place of certification / Lieu de certification @@ -33,7 +33,7 @@ - No. 2023HSND234S + No. {{registrationNumber}} @@ -111,7 +111,7 @@ - {{deceasedNationality}} + {{intl 'nationality' deceasedNationality}} @@ -167,7 +167,7 @@ {{informantFirstName}} {{informantFamilyName}} - Spouse + {{informantRelation}} diff --git a/src/api/certificates/source/marriage-certificate-certified-copy.svg b/src/api/certificates/source/marriage-certificate-certified-copy.svg index a81c1b9b1..6381bd9dd 100644 --- a/src/api/certificates/source/marriage-certificate-certified-copy.svg +++ b/src/api/certificates/source/marriage-certificate-certified-copy.svg @@ -91,7 +91,7 @@ - {{groomNationality}} + {{intl 'nationality' groomNationality}} @@ -158,7 +158,7 @@ - {{brideNationality}} + {{intl 'nationality' brideNationality}} diff --git a/src/translations/client.csv b/src/translations/client.csv index 3ac6813d7..f35d65496 100644 --- a/src/translations/client.csv +++ b/src/translations/client.csv @@ -1407,6 +1407,255 @@ misc.reEnterDescription,,Let's make sure we collected your PIN correctly,Assuron misc.reEnterTitle,The title displayed while creating a PIN,Re-enter your PIN,Saisissez à nouveau votre nouveau code PIN misc.session.expired,SessionExpire modal confirmation text,Your session has expired. Please login again.,Votre session a expiré. Veuillez vous connecter à nouveau. misc.title.declarationStatus,Title for review action component,Send for approval,Envoyer pour approbation +nationality.ABW,,Aruban,Arubais +nationality.AFG,,Afghan,Afghan +nationality.AGO,,Angolan,Angolais +nationality.AIA,,Anguillan,Anguillais +nationality.ALA,,Ã…land Islander,Insulaire d’Åland +nationality.ALB,,Albanian,Albanais +nationality.AND,,Andorran,Andorran +nationality.ARE,,Emirati,Emirien +nationality.ARG,,Argentine,Argentin +nationality.ARM,,Armenian,Arménien +nationality.ASM,,American Samoan,Samoan Américain +nationality.ATA,,Antarctic,Antarctique +nationality.ATF,,French Southern,Des Terres Australes et Antarctiques Françaises +nationality.ATG,,Antiguan/Barbudan,Antiguayen/Barbudien +nationality.AUS,,Australian,Australien +nationality.AUT,,Austrian,Autrichien +nationality.AZE,,Azerbaijani,Azerbaïdjanais +nationality.BDI,,Burundian,Burundais +nationality.BEL,,Belgian,Belge +nationality.BEN,,Beninese,Béninois +nationality.BES,,Dutch Caribbean,Caribéen Néerlandais +nationality.BFA,,Burkinabe,Burkinabé +nationality.BGD,,Bangladeshi,Bangladais +nationality.BGR,,Bulgarian,Bulgare +nationality.BHR,,Bahraini,Bahreïnien +nationality.BHS,,Bahamian,Bahaméen +nationality.BIH,,Bosnian/Herzegovinian,Bosnien/Herzégovinien +nationality.BLM,,Saint Barthélemy Islander,Insulaire de Saint-Barthélemy +nationality.BLR,,Belarusian,Biélorusse +nationality.BLZ,,Belizean,Bélizéen +nationality.BMU,,Bermudian,Bermudien +nationality.BOL,,Bolivian,Bolivien +nationality.BRA,,Brazilian,Brésilien +nationality.BRB,,Barbadian,Barbadien +nationality.BRN,,Bruneian,Brunéien +nationality.BTN,,Bhutanese,Bhoutanais +nationality.BVT,,Bouvet Islander,Insulaire de Bouvet +nationality.BWA,,Botswanan,Botswanais +nationality.CAF,,Central African,Centrafricain +nationality.CAN,,Canadian,Canadien +nationality.CCK,,Cocos Islander,Insulaire des Cocos +nationality.CHE,,Swiss,Suisse +nationality.CHL,,Chilean,Chilien +nationality.CHN,,Chinese,Chinois +nationality.CIV,,Ivorian,Ivoirien +nationality.CMR,,Cameroonian,Camerounais +nationality.COD,,Congolese (DRC),Congolais (RDC) +nationality.COG,,Congolese (Congo),Congolais (Congo) +nationality.COK,,Cook Islander,Insulaire des Cook +nationality.COL,,Colombian,Colombien +nationality.COM,,Comoran,Comorien +nationality.CPV,,Cape Verdean,Caboverdien +nationality.CRI,,Costa Rican,Costaricien +nationality.CUB,,Cuban,Cubain +nationality.CUW,,Curaçaoan,Curacien +nationality.CXR,,Christmas Islander,Insulaire de Christmas +nationality.CYM,,Caymanian,Caïmanais +nationality.CYP,,Cypriot,Chypriote +nationality.CZE,,Czech,Tchèque +nationality.DEU,,German,Allemand +nationality.DJI,,Djiboutian,Djiboutien +nationality.DMA,,Dominican,Dominicain +nationality.DNK,,Danish,Danois +nationality.DOM,,Dominican,Dominicain +nationality.DZA,,Algerian,Algérien +nationality.ECU,,Ecuadorian,Équatorien +nationality.EGY,,Egyptian,Égyptien +nationality.ERI,,Eritrean,Érythréen +nationality.ESH,,Sahrawi,Sahraoui +nationality.ESP,,Spanish,Espagnol +nationality.EST,,Estonian,Estonien +nationality.ETH,,Ethiopian,Éthiopien +nationality.FAR,,Farajalandian,Farajalandien +nationality.FIN,,Finnish,Finlandais +nationality.FJI,,Fijian,Fidjien +nationality.FLK,,Falkland Islander,Insulaire des Falkland +nationality.FRA,,French,Français +nationality.FRO,,Faroese,Féroïen +nationality.FSM,,Micronesian,Micronésien +nationality.GAB,,Gabonese,Gabonais +nationality.GBR,,British,Britannique +nationality.GEO,,Georgian,Géorgien +nationality.GGY,,Guernsey,Guernesiais +nationality.GHA,,Ghanaian,Ghanéen +nationality.GIB,,Gibraltarian,Gibraltarien +nationality.GIN,,Guinean,Guinéen +nationality.GLP,,Guadeloupean,Guadeloupéen +nationality.GMB,,Gambian,Gambien +nationality.GNB,,Bissau-Guinean,Bissau-Guinéen +nationality.GNQ,,Equatoguinean,Guinéen équatorial +nationality.GRC,,Greek,Grec +nationality.GRD,,Grenadian,Grenad +nationality.GRD,,Grenadian,Grenadien +nationality.GRL,,Greenlander,Groenlandais +nationality.GTM,,Guatemalan,Guatémaltèque +nationality.GUF,,French Guianese,Français de Guyane +nationality.GUM,,Guamanian,Guaméen +nationality.GUY,,Guyanese,Guyanais +nationality.HKG,,Hong Kong Special Administrative Region,Région Administrative Spéciale de Hong Kong +nationality.HMD,,Heard Islander,ÃŽles Heard +nationality.HND,,Honduran,Hondurien +nationality.HRV,,Croatian,Croate +nationality.HTI,,Haitian,Haïtien +nationality.HUN,,Hungarian,Hongrois +nationality.IDN,,Indonesian,Indonésien +nationality.IMN,,Manx,Manxois +nationality.IND,,Indian,Indien +nationality.IOT,,British Indian Ocean Territory,Territoire britannique de l'océan Indien +nationality.IRL,,Irish,Irlandais +nationality.IRN,,Iranian,Iranien +nationality.IRQ,,Iraqi,Irakien +nationality.ISL,,Icelander,Islandais +nationality.ISR,,Israeli,Israélien +nationality.ITA,,Italian,Italien +nationality.JAM,,Jamaican,Jamaïcain +nationality.JEY,,Jersey,Jersiais +nationality.JOR,,Jordanian,Jordannien +nationality.JPN,,Japanese,Japonais +nationality.KAZ,,Kazakhstani,Kazakh +nationality.KEN,,Kenyan,Kényan +nationality.KGZ,,Kyrgyz,Kirghize +nationality.KHM,,Cambodian,Cambodgien +nationality.KIR,,Kiribati,Kiribatien +nationality.KNA,,Kittitian/Nevisian,Nevisien +nationality.KOR,,South Korean,Coréen du Sud +nationality.KWT,,Kuwaiti,Koweïtien +nationality.LBN,,Lebanese,Libanais +nationality.LBR,,Liberian,Libérien +nationality.LBY,,Libyan,Libyen +nationality.LCA,,Saint Lucian,Saint-Lucien +nationality.LIE,,Liechtensteiner,Liechtensteinois +nationality.LKA,,Sri Lankan,Sri Lankais +nationality.LSO,,Lesotho,Lesothan +nationality.LTU,,Lithuanian,Lituanien +nationality.LUX,,Luxembourgish,Luxembourgeois +nationality.LVA,,Latvian,Letton +nationality.MAC,,Macao Special Administrative Region,Région Administrative Spéciale de Macao +nationality.MAF,,Saint Martiner,Martiniquais +nationality.MAR,,Moroccan,Marocain +nationality.MCO,,Monégasque,Monégasque +nationality.MDA,,Moldovan,Moldave +nationality.MDG,,Madagascan,Malgache +nationality.MDV,,Maldivian,Maldivien +nationality.MEX,,Mexican,Mexicain +nationality.MHL,,Marshallese,Marshalles +nationality.MKD,,Macedonian,Macédonien +nationality.MLI,,Malian,Malien +nationality.MLT,,Maltese,Maltais +nationality.MMR,,Myanmarese,Myanmarais +nationality.MNE,,Montenegrin,Monténégrin +nationality.MNG,,Mongolian,Mongol +nationality.MNP,,Northern Marianan,Marianais +nationality.MOZ,,Mozambican,Mozambicain +nationality.MRT,,Mauritanian,Mauritanien +nationality.MSR,,Montserratian,Montserratien +nationality.MTQ,,Martinican,Martiniquais +nationality.MUS,,Mauritian,Mauricien +nationality.MWI,,Malawian,Malawite +nationality.MYS,,Malaysian,Malaisien +nationality.MYT,,Mayottean,Mayotien +nationality.NAM,,Namibian,Namibien +nationality.NCL,,New Caledonian,Calédonien +nationality.NER,,Nigerien,Nigérien +nationality.NFK,,Norfolk Islander,ÃŽles Norfolk +nationality.NGA,,Nigerian,Nigérian +nationality.NIC,,Nicaraguan,Nicaraguayen +nationality.NIU,,Niuean,Niouéen +nationality.NLD,,Dutch,Néerlandais +nationality.NOR,,Norwegian,Norvégien +nationality.NPL,,Nepalese,Népalais +nationality.NRU,,Nauruan,Nauruan +nationality.NZL,,New Zealander,Néo-Zélandais +nationality.OMN,,Omani,Omanais +nationality.PAK,,Pakistani,Pakistanais +nationality.PAN,,Panamanian,Panaméen +nationality.PCN,,Pitcairn Islander,Pitcairnais +nationality.PER,,Peruvian,Péruvien +nationality.PHL,,Filipino,Philippin +nationality.PLW,,Palauan,Palaosien +nationality.PNG,,Papua New Guinean,Papouasien +nationality.POL,,Polish,Polonais +nationality.PRI,,Puerto Rican,Portoricain +nationality.PRK,,North Korean,Coréen du Nord +nationality.PRT,,Portuguese,Portugais +nationality.PRY,,Paraguayan,Paraguayen +nationality.PSE,,Palestinian,Palestinien +nationality.PYF,,French Polynesian,Polynésien +nationality.QAT,,Qatari,Qatarien +nationality.REU,,Reunionese,Réunionnais +nationality.ROU,,Romanian,Roumain +nationality.RUS,,Russian,Russe +nationality.RWA,,Rwandan,Rwandais +nationality.SAU,,Saudi,Saoudien +nationality.SDN,,Sudanese,Soudanais +nationality.SEN,,Senegalese,Sénégalais +nationality.SGP,,Singaporean,Singapourien +nationality.SGS,,South Georgian/South Sandwich Islander,ÃŽles Sandwich du Sud +nationality.SHN,,Saint Helenian,Sainte-Hélène +nationality.SJM,,Svalbardian,Spitzbergien +nationality.SLB,,Solomon Islander,Salomonien +nationality.SLE,,Sierra Leonean,Sierra-Léonais +nationality.SLV,,Salvadoran,Salvadorien +nationality.SMR,,Sammarinese,Saint-Marinais +nationality.SOM,,Somali,Somalien +nationality.SPM,,Saint-Pierrais/Miquelonnais,Saint-Pierrais/Miquelonnais +nationality.SRB,,Serbian,Serbe +nationality.SSD,,South Sudanese,Soudanais du Sud +nationality.STP,,São Toméan,Santoméen +nationality.SUR,,Surinamese,Surinamien +nationality.SVK,,Slovak,Slovaque +nationality.SVN,,Slovene,Slovène +nationality.SWE,,Swedish,Suédois +nationality.SWZ,,Swazi,Swazi +nationality.SXM,,Sint Maartener,Saint-Martinois +nationality.SYC,,Seychellois,Seychellois +nationality.SYR,,Syrian,Syrien +nationality.TCA,,Turks and Caicos Islander,ÃŽles Turques-et-Caïques +nationality.TCD,,Chadian,Tchadien +nationality.TGO,,Togolese,Togolais +nationality.THA,,Thai,Thaïlandais +nationality.TJK,,Tajikistani,Tadjik +nationality.TKL,,Tokelauan,Tokelauan +nationality.TKM,,Turkmen,Turkmène +nationality.TLS,,Timorese,Timorais +nationality.TON,,Tongan,Tongien +nationality.TTO,,Trinidadian/Tobagonian,Trinidadien +nationality.TUN,,Tunisian,Tunisien +nationality.TUR,,Turkish,Turc +nationality.TUV,,Tuvaluan,Tuvaluan +nationality.TZA,,Tanzanian,Tanzanien +nationality.UGA,,Ugandan,Ugandais +nationality.UKR,,Ukrainian,Ukrainien +nationality.UMI,,American,Américain +nationality.URY,,Uruguayan,Uruguayen +nationality.USA,,American,Américain +nationality.UZB,,Uzbekistani,Ouzbek +nationality.VAT,,Holy See,Saint-Siège +nationality.VCT,,Saint Vincentian,Saint-Vincentais +nationality.VEN,,Venezuelan,Vénézuélien +nationality.VGB,,British Virgin Islander,ÃŽles Vierges britanniques +nationality.VIR,,Virgin Islander,ÃŽles Vierges +nationality.VNM,,Vietnamese,Vietnamien +nationality.VUT,,Ni-Vanuatu,Ni-Vanuatu +nationality.WLF,,Wallis and Futuna Islander,Wallisien +nationality.WSM,,Samoan,Samoan +nationality.YEM,,Yemeni,Yéménite +nationality.ZAF,,South African,Sud-Africain +nationality.ZMB,,Zambian,Zambien +nationality.ZWE,,Zimbabwean,Zimbabwéen navigation.analytic,Analytic Group,Analytics,Analytique navigation.application,Application label in navigation,Application,Application navigation.approvals,Sent for approval label in navigation,Sent for approval,Envoyé pour approbation diff --git a/src/utils/mapping/field-mapping-utils.ts b/src/utils/mapping/field-mapping-utils.ts index 25f9200e6..54ef4c59e 100644 --- a/src/utils/mapping/field-mapping-utils.ts +++ b/src/utils/mapping/field-mapping-utils.ts @@ -296,7 +296,7 @@ export function getFieldMapping( return { template: { fieldName: certificateHandlebar, - operation: 'nationalityTransformer' + operation: 'plainInputTransformer' }, mutation: { operation: 'fieldToArrayTransformer' From 76d88896532da8c1bd78b00e582006666163bd0d Mon Sep 17 00:00:00 2001 From: tareq89 Date: Wed, 13 Nov 2024 17:48:12 +0600 Subject: [PATCH 18/37] misc --- .../Farajaland-birth-certificate-v2.svg | 3 ++- .../Farajaland-death-certificate-v2.svg | 3 ++- .../birth-certificate-certified-copy.svg | 17 +++++++++++++++-- .../certificates/source/birth-certificate.svg | 2 +- .../death-certificate-certified-copy.svg | 19 ++++++++++++++++--- .../certificates/source/death-certificate.svg | 2 +- .../marriage-certificate-certified-copy.svg | 10 +++++++++- src/form/birth/certificate-handlebars.ts | 3 +++ src/form/birth/index.ts | 9 ++++++--- src/form/death/certficate-handlebars.ts | 2 ++ src/form/death/index.ts | 6 ++++-- src/form/marriage/certificate-handlebars.ts | 3 +++ src/form/marriage/index.ts | 9 ++++++--- 13 files changed, 70 insertions(+), 18 deletions(-) diff --git a/src/api/certificates/source/Farajaland-birth-certificate-v2.svg b/src/api/certificates/source/Farajaland-birth-certificate-v2.svg index 6910fa727..b4dae9a0b 100644 --- a/src/api/certificates/source/Farajaland-birth-certificate-v2.svg +++ b/src/api/certificates/source/Farajaland-birth-certificate-v2.svg @@ -72,7 +72,8 @@ {{location districtPlaceofbirthId 'name'}}{{internationalDistrictPlaceofbirth}}, {{location statePlaceofbirthId 'name'}}{{internationalStatePlaceofbirth}}, {{countryPlaceofbirth}} {{else}} - {{placeOfBirthFacility}} {{placeOfBirthState}}, {{placeOfBirthCountry}} + {{placeOfBirthFacility}} + {{placeOfBirthState}}, {{placeOfBirthCountry}} {{/ifCond}} diff --git a/src/api/certificates/source/Farajaland-death-certificate-v2.svg b/src/api/certificates/source/Farajaland-death-certificate-v2.svg index 994b425a3..83a49e588 100644 --- a/src/api/certificates/source/Farajaland-death-certificate-v2.svg +++ b/src/api/certificates/source/Farajaland-death-certificate-v2.svg @@ -56,7 +56,8 @@ {{location districtPlaceofdeathId 'name'}}{{internationalDistrictPlaceofdeath}}, {{location statePlaceofdeathId 'name'}}{{internationalStatePlaceofdeath}}, {{countryPlaceofdeath}} {{else}} - {{placeOfDeathFacility}} {{placeOfDeathState}}, {{placeOfDeathCountry}} + {{placeOfDeathFacility}} + {{placeOfDeathState}}, {{placeOfDeathCountry}} {{/ifCond}} diff --git a/src/api/certificates/source/birth-certificate-certified-copy.svg b/src/api/certificates/source/birth-certificate-certified-copy.svg index 4285b8b00..9b82151af 100644 --- a/src/api/certificates/source/birth-certificate-certified-copy.svg +++ b/src/api/certificates/source/birth-certificate-certified-copy.svg @@ -117,8 +117,13 @@ - {{ placeOfBirthFacility }}, {{ placeOfBirthDistrict }} - {{ placeOfBirthState }}, {{ placeOfBirthCountry }} + {{#ifCond placeOfBirthFacility '===' undefined }} + {{location districtPlaceofbirthId 'name'}}{{internationalDistrictPlaceofbirth}}, + {{location statePlaceofbirthId 'name'}}{{internationalStatePlaceofbirth}}, {{countryPlaceofbirth}} + {{else}} + {{ placeOfBirthFacility }} + {{ placeOfBirthDistrict }}, {{ placeOfBirthState }}, {{ placeOfBirthCountry }} + {{/ifCond}} @@ -145,7 +150,11 @@ + {{#ifCond ageOfMotherInYears '===' undefined }} {{motherBirthDate}} + {{else}} + {{ageOfMotherInYears}} years old + {{/ifCond}} @@ -208,7 +217,11 @@ + {{#ifCond ageOfFatherInYears '===' undefined }} {{fatherBirthDate}} + {{else}} + {{ageOfFatherInYears}} years old + {{/ifCond}} diff --git a/src/api/certificates/source/birth-certificate.svg b/src/api/certificates/source/birth-certificate.svg index 3e1d94798..e4284dbc7 100644 --- a/src/api/certificates/source/birth-certificate.svg +++ b/src/api/certificates/source/birth-certificate.svg @@ -146,7 +146,7 @@ {{location statePlaceofbirthId 'name'}}{{internationalStatePlaceofbirth}}, {{countryPlaceofbirth}} {{else}} {{placeOfBirthFacility}} - {{placeOfBirthState}}, {{placeOfBirthCountry}} + {{ placeOfBirthDistrict }}, {{placeOfBirthState}}, {{placeOfBirthCountry}} {{/ifCond}} diff --git a/src/api/certificates/source/death-certificate-certified-copy.svg b/src/api/certificates/source/death-certificate-certified-copy.svg index 2fe4400bc..d1d44ef13 100644 --- a/src/api/certificates/source/death-certificate-certified-copy.svg +++ b/src/api/certificates/source/death-certificate-certified-copy.svg @@ -61,7 +61,11 @@ + {{#ifCond ageOfDeceasedInYears '===' undefined }} {{deceasedBirthDate}} + {{else}} + {{ageOfDeceasedInYears}} years old + {{/ifCond}} @@ -126,7 +130,11 @@ - {{eventDate}} + {{#ifCond ageOfDeceasedInYears '===' undefined }} + {{deceasedBirthDate}} + {{else}} + {{ageOfDeceasedInYears}} years old + {{/ifCond}} @@ -138,8 +146,13 @@ - {{placeOfDeathFacility}} - {{placeOfDeathDistrict}}, {{placeOfDeathState}}, {{placeOfDeathCountry}} + {{#ifCond placeOfDeathFacility '===' undefined }} + {{location districtPlaceofdeathId 'name'}}{{internationalDistrictPlaceofdeath}}, + {{location statePlaceofdeathId 'name'}}{{internationalStatePlaceofdeath}}, {{countryPlaceofdeath}} + {{else}} + {{placeOfDeathFacility}} + {{placeOfDeathDistrict}}, {{placeOfDeathState}}, {{placeOfDeathCountry}} + {{/ifCond}} diff --git a/src/api/certificates/source/death-certificate.svg b/src/api/certificates/source/death-certificate.svg index 3d4cee3af..e5ae1b5d0 100644 --- a/src/api/certificates/source/death-certificate.svg +++ b/src/api/certificates/source/death-certificate.svg @@ -124,7 +124,7 @@ {{location statePlaceofdeathId 'name'}}{{internationalStatePlaceofdeath}}, {{countryPlaceofdeath}} {{else}} {{placeOfDeathFacility}} - {{placeOfDeathState}}, {{placeOfDeathCountry}} + {{placeOfDeathDistrict}}, {{placeOfDeathState}}, {{placeOfDeathCountry}} {{/ifCond}} diff --git a/src/api/certificates/source/marriage-certificate-certified-copy.svg b/src/api/certificates/source/marriage-certificate-certified-copy.svg index 6381bd9dd..622c951bc 100644 --- a/src/api/certificates/source/marriage-certificate-certified-copy.svg +++ b/src/api/certificates/source/marriage-certificate-certified-copy.svg @@ -66,7 +66,11 @@ + {{#ifCond ageOfGroomInYears '===' undefined }} {{groomBirthDate}} + {{else}} + {{ageOfGroomInYears}} years old + {{/ifCond}} @@ -133,7 +137,11 @@ + {{#ifCond ageOfGroomInYears '===' undefined }} {{brideBirthDate}} + {{else}} + {{ageOfBrideInYears}} years old + {{/ifCond}} @@ -185,7 +193,7 @@ - {{districtPlaceofmarriage}}, {{statePlaceofmarriage}}, {{countryPlaceofmarriage}} + {{location districtPlaceofmarriageId 'name'}}{{internationalDistrictPlaceofmarriage}}, {{location statePlaceofmarriageId 'name'}}{{internationalStatePlaceofmarriage}}, {{countryPlaceofmarriage}} diff --git a/src/form/birth/certificate-handlebars.ts b/src/form/birth/certificate-handlebars.ts index beb88b83d..da3e6ad78 100644 --- a/src/form/birth/certificate-handlebars.ts +++ b/src/form/birth/certificate-handlebars.ts @@ -58,6 +58,9 @@ export const certificateHandlebars = { childFamilyName: 'childFamilyName', childGender: 'childGender', eventDate: 'eventDate', + ageOfFatherInYears: 'ageOfFatherInYears', + ageOfMotherInYears: 'ageOfMotherInYears', + ageOfInformantInYears: 'ageOfInformantInYears', informantFirstName: 'informantFirstName', informantFamilyName: 'informantFamilyName', informantBirthDate: 'informantBirthDate', diff --git a/src/form/birth/index.ts b/src/form/birth/index.ts index 404a38ce7..3a3906a0f 100644 --- a/src/form/birth/index.ts +++ b/src/form/birth/index.ts @@ -256,7 +256,8 @@ export const birthForm: ISerializedForm = { exactDateOfBirthUnknownConditional.concat( hideIfInformantMotherOrFather ), - ageOfIndividualValidators + ageOfIndividualValidators, + certificateHandlebars.ageOfInformantInYears ), getNationality( certificateHandlebars.informantNationality, @@ -328,7 +329,8 @@ export const birthForm: ISerializedForm = { exactDateOfBirthUnknownConditional.concat( detailsExistConditional ), - ageOfParentsConditionals + ageOfParentsConditionals, + certificateHandlebars.ageOfMotherInYears ), getNationality( certificateHandlebars.motherNationality, @@ -406,7 +408,8 @@ export const birthForm: ISerializedForm = { exactDateOfBirthUnknownConditional.concat( detailsExistConditional ), - ageOfParentsConditionals + ageOfParentsConditionals, + certificateHandlebars.ageOfFatherInYears ), getNationality( certificateHandlebars.fatherNationality, diff --git a/src/form/death/certficate-handlebars.ts b/src/form/death/certficate-handlebars.ts index 5e4040a2f..4556f7f76 100644 --- a/src/form/death/certficate-handlebars.ts +++ b/src/form/death/certficate-handlebars.ts @@ -42,6 +42,8 @@ export const certificateHandlebars = { districtPrimaryDeceasedId: 'districtPrimaryDeceasedId', cityPrimaryDeceased: 'cityPrimaryDeceased', ageOfDeceasedInYears: 'ageOfDeceasedInYears', + ageOfInformantInYears: 'ageOfInformantInYears', + ageOfSpouseInYears: 'ageOfSpouseInYears', addressLine3PrimaryDeceased: 'addressLine3PrimaryDeceased', addressLine2PrimaryDeceased: 'addressLine2PrimaryDeceased', addressLine1PrimaryDeceased: 'addressLine1PrimaryDeceased', diff --git a/src/form/death/index.ts b/src/form/death/index.ts index e88e55a62..21644fab2 100644 --- a/src/form/death/index.ts +++ b/src/form/death/index.ts @@ -284,7 +284,8 @@ export const deathForm = { getAgeOfIndividualInYears( formMessageDescriptors.ageOfInformant, exactDateOfBirthUnknownConditional.concat(hideIfInformantSpouse), - ageOfIndividualValidators + ageOfIndividualValidators, + certificateHandlebars.ageOfInformantInYears ), getNationality( certificateHandlebars.informantNationality, @@ -346,7 +347,8 @@ export const deathForm = { getAgeOfIndividualInYears( formMessageDescriptors.ageOfSpouse, exactDateOfBirthUnknownConditional.concat(detailsExist), - ageOfIndividualValidators + ageOfIndividualValidators, + certificateHandlebars.ageOfSpouseInYears ), getNationality( certificateHandlebars.spouseNationality, diff --git a/src/form/marriage/certificate-handlebars.ts b/src/form/marriage/certificate-handlebars.ts index 164883946..1067cb049 100644 --- a/src/form/marriage/certificate-handlebars.ts +++ b/src/form/marriage/certificate-handlebars.ts @@ -34,6 +34,9 @@ export const certificateHandlebars = { informantPassport: 'informantPassport', informantAlienId: 'informantAlienId', informantRefugeeId: 'informantRefugeeId', + ageOfInformantInYears: 'ageOfInformantInYears', + ageOfGroomInYears: 'ageOfGroomInYears', + ageOfBrideInYears: 'ageOfBrideInYears', countryPrimaryInformant: 'countryPrimaryInformant', statePrimaryInformant: 'statePrimaryInformant', // @deprecated use statePrimaryInformantId instead statePrimaryInformantId: 'statePrimaryInformantId', diff --git a/src/form/marriage/index.ts b/src/form/marriage/index.ts index 1892e2dff..37bb7f1f5 100644 --- a/src/form/marriage/index.ts +++ b/src/form/marriage/index.ts @@ -135,7 +135,8 @@ export const marriageForm: ISerializedForm = { exactDateOfBirthUnknownConditional.concat( hideIfInformantBrideOrGroom ), - ageOfIndividualValidators + ageOfIndividualValidators, + certificateHandlebars.ageOfInformantInYears ), getNationality( certificateHandlebars.informantNationality, @@ -196,7 +197,8 @@ export const marriageForm: ISerializedForm = { getAgeOfIndividualInYears( formMessageDescriptors.ageOfGroom, exactDateOfBirthUnknownConditional, - brideOrGroomAgeValidators + brideOrGroomAgeValidators, + certificateHandlebars.ageOfGroomInYears ), getNationality(certificateHandlebars.groomNationality, []), // Required field getIDType('marriage', 'groom', [], true), @@ -242,7 +244,8 @@ export const marriageForm: ISerializedForm = { getAgeOfIndividualInYears( formMessageDescriptors.ageOfBride, exactDateOfBirthUnknownConditional, - brideOrGroomAgeValidators + brideOrGroomAgeValidators, + certificateHandlebars.ageOfBrideInYears ), getNationality(certificateHandlebars.brideNationality, []), // Required field getIDType('marriage', 'bride', [], true), From 22fb4f20acdd67ae681ca70bb381a317504aada2 Mon Sep 17 00:00:00 2001 From: tareq89 Date: Thu, 14 Nov 2024 13:00:24 +0600 Subject: [PATCH 19/37] registrar signature condition updated --- .../source/birth-certificate-certified-copy.svg | 4 +++- .../source/death-certificate-certified-copy.svg | 2 ++ .../source/marriage-certificate-certified-copy.svg | 6 ++++-- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/api/certificates/source/birth-certificate-certified-copy.svg b/src/api/certificates/source/birth-certificate-certified-copy.svg index 9b82151af..cb2d03656 100644 --- a/src/api/certificates/source/birth-certificate-certified-copy.svg +++ b/src/api/certificates/source/birth-certificate-certified-copy.svg @@ -376,5 +376,7 @@ - + {{#ifCond printInAdvance '!==' true}} + + {{/ifCond}} \ No newline at end of file diff --git a/src/api/certificates/source/death-certificate-certified-copy.svg b/src/api/certificates/source/death-certificate-certified-copy.svg index d1d44ef13..efa829b93 100644 --- a/src/api/certificates/source/death-certificate-certified-copy.svg +++ b/src/api/certificates/source/death-certificate-certified-copy.svg @@ -303,5 +303,7 @@ + {{#ifCond printInAdvance '!==' true}} + {{/ifCond}} \ No newline at end of file diff --git a/src/api/certificates/source/marriage-certificate-certified-copy.svg b/src/api/certificates/source/marriage-certificate-certified-copy.svg index 622c951bc..4a4b815d4 100644 --- a/src/api/certificates/source/marriage-certificate-certified-copy.svg +++ b/src/api/certificates/source/marriage-certificate-certified-copy.svg @@ -83,7 +83,7 @@ - {{districtPrimaryGroom}}, {{statePrimaryGroom}}, {{countryPrimaryGroom}} + {{districtPrimaryGroom}}{{internationalDistrictPrimaryGroom}}, {{statePrimaryGroom}}{{internationalStatePrimaryGroom}}, {{countryPrimaryGroom}} @@ -154,7 +154,7 @@ - {{districtPrimaryBride}}, {{statePrimaryBride}}, {{countryPrimaryBride}} + {{districtPrimaryBride}}{{internationalDistrictPrimaryBride}}, {{statePrimaryBride}}{{internationalStatePrimaryBride}}, {{countryPrimaryBride}} @@ -375,5 +375,7 @@ + {{#ifCond printInAdvance '!==' true}} + {{/ifCond}} \ No newline at end of file From ce98c007480783fb5b89987124563f2d8186af2b Mon Sep 17 00:00:00 2001 From: tareq89 Date: Thu, 14 Nov 2024 20:58:16 +0600 Subject: [PATCH 20/37] serving svg templates as file --- src/api/certificates/handler.ts | 14 ++++++-------- src/index.ts | 2 +- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/src/api/certificates/handler.ts b/src/api/certificates/handler.ts index 4a6d7e644..ded6d8917 100644 --- a/src/api/certificates/handler.ts +++ b/src/api/certificates/handler.ts @@ -37,11 +37,9 @@ export interface ICertificateConfigData { } export async function certificateHandler(request: Request, h: ResponseToolkit) { - if (request.params.event) { - const res = readFileSync( - `./src/api/certificates/source/${request.params.event}.svg` - ).toString() - return h.response(res).code(200) + if (request.params.id) { + const filePath = `${__dirname}/source/${request.params.id}.svg` + return h.file(filePath) } const certificateConfigs: ICertificateConfigData[] = [ { @@ -69,7 +67,7 @@ export async function certificateHandler(request: Request, h: ResponseToolkit) { } }, { - id: 'certified-birth-certificate', + id: 'birth-certificate-certified-copy', event: 'birth', label: { id: 'certificates.birth.certificate.copy', @@ -118,7 +116,7 @@ export async function certificateHandler(request: Request, h: ResponseToolkit) { } }, { - id: 'certified-death-certificate', + id: 'death-certificate-certified-copy', event: 'death', label: { id: 'certificates.death.certificate.copy', @@ -167,7 +165,7 @@ export async function certificateHandler(request: Request, h: ResponseToolkit) { } }, { - id: 'certified-marriage-certificate', + id: 'marriage-certificate-certified-copy', event: 'marriage', label: { id: 'certificates.marriage.certificate.copy', diff --git a/src/index.ts b/src/index.ts index 92462f081..35e6c6373 100644 --- a/src/index.ts +++ b/src/index.ts @@ -240,7 +240,7 @@ export async function createServer() { server.route({ method: 'GET', - path: '/certificates/{event}.svg', + path: '/certificates/{id}', handler: certificateHandler, options: { tags: ['api', 'certificates'], From 125f5348f200b2c21b97354991129d8d97172a9b Mon Sep 17 00:00:00 2001 From: tareq89 Date: Mon, 18 Nov 2024 20:41:57 +0600 Subject: [PATCH 21/37] marriage certificate witness relation added --- .../birth-certificate-certified-copy.svg | 1 + .../death-certificate-certified-copy.svg | 2 +- .../marriage-certificate-certified-copy.svg | 4 +-- src/form/marriage/index.ts | 8 +++--- src/form/marriage/required-fields.ts | 28 +++++++++++++++---- 5 files changed, 30 insertions(+), 13 deletions(-) diff --git a/src/api/certificates/source/birth-certificate-certified-copy.svg b/src/api/certificates/source/birth-certificate-certified-copy.svg index cb2d03656..53edd739a 100644 --- a/src/api/certificates/source/birth-certificate-certified-copy.svg +++ b/src/api/certificates/source/birth-certificate-certified-copy.svg @@ -273,6 +273,7 @@ {{informantFirstName}} {{informantFamilyName}} + {{informantType}} diff --git a/src/api/certificates/source/death-certificate-certified-copy.svg b/src/api/certificates/source/death-certificate-certified-copy.svg index efa829b93..2b92a1d6d 100644 --- a/src/api/certificates/source/death-certificate-certified-copy.svg +++ b/src/api/certificates/source/death-certificate-certified-copy.svg @@ -180,7 +180,7 @@ {{informantFirstName}} {{informantFamilyName}} - {{informantRelation}} + {{informantType}} diff --git a/src/api/certificates/source/marriage-certificate-certified-copy.svg b/src/api/certificates/source/marriage-certificate-certified-copy.svg index 4a4b815d4..69cb3619a 100644 --- a/src/api/certificates/source/marriage-certificate-certified-copy.svg +++ b/src/api/certificates/source/marriage-certificate-certified-copy.svg @@ -221,7 +221,7 @@ {{witnessOneFirstName}} {{witnessOneFamilyName}} - Head of Groom’s Family + {{witnessOneRelationship}}{{witnessOneRelationshipForOther}} @@ -234,7 +234,7 @@ {{witnessTwoFirstName}} {{witnessTwoFamilyName}} - Head of Bride’s Family + {{witnessTwoRelationship}}{{witnessTwoRelationshipForOther}} diff --git a/src/form/marriage/index.ts b/src/form/marriage/index.ts index 37bb7f1f5..4e53befd2 100644 --- a/src/form/marriage/index.ts +++ b/src/form/marriage/index.ts @@ -292,8 +292,8 @@ export const marriageForm: ISerializedForm = { [], certificateHandlebars.witnessOneFamilyName ), // Required field - getRelationshipToSpousesForWitness, // Required field - witnessRelationshipForOthers // Required field + getRelationshipToSpousesForWitness('witnessOneRelationship'), // Required field + witnessRelationshipForOthers('witnessOneRelationshipForOther') // Required field ], previewGroups: [witnessOneNameInEnglish] } @@ -319,8 +319,8 @@ export const marriageForm: ISerializedForm = { [], certificateHandlebars.witnessTwoFamilyName ), // Required field - getRelationshipToSpousesForWitness, // Required field - witnessRelationshipForOthers // Required field + getRelationshipToSpousesForWitness('witnessTwoRelationship'), // Required field + witnessRelationshipForOthers('witnessTwoRelationshipForOther') // Required field ], previewGroups: [witnessTwoNameInEnglish] } diff --git a/src/form/marriage/required-fields.ts b/src/form/marriage/required-fields.ts index 9f2238435..0585920fb 100644 --- a/src/form/marriage/required-fields.ts +++ b/src/form/marriage/required-fields.ts @@ -52,7 +52,9 @@ export const getMarriageDate: SerializedFormField = { mapping: getFieldMapping('marriageDate', certificateHandlebars.eventDate) } -export const getRelationshipToSpousesForWitness: SerializedFormField = { +export const getRelationshipToSpousesForWitness = ( + fieldName: string +): SerializedFormField => ({ name: 'relationship', type: 'SELECT_WITH_OPTIONS', label: formMessageDescriptors.relationshipToSpouses, @@ -60,10 +62,18 @@ export const getRelationshipToSpousesForWitness: SerializedFormField = { initialValue: '', validator: [], placeholder: formMessageDescriptors.formSelectPlaceholder, - options: witnessRelationshipOptions -} + options: witnessRelationshipOptions, + mapping: { + template: { + operation: 'selectTransformer', + fieldName + } + } +}) -export const witnessRelationshipForOthers: SerializedFormField = { +export const witnessRelationshipForOthers = ( + fieldName: string +): SerializedFormField => ({ name: 'otherRelationship', type: 'TEXT', label: formMessageDescriptors.other, @@ -76,8 +86,14 @@ export const witnessRelationshipForOthers: SerializedFormField = { action: 'hide', expression: '(values.relationship!=="OTHER")' } - ] -} + ], + mapping: { + template: { + operation: 'selectTransformer', + fieldName + } + } +}) const marriageDocumentExtraValue = { GROOM: 'GROOM', From a4b1b25391ee3ace4b9b3d86bbd279e4afaa145e Mon Sep 17 00:00:00 2001 From: tareq89 Date: Tue, 19 Nov 2024 15:51:04 +0600 Subject: [PATCH 22/37] added formattedAddress helper --- .../birth-certificate-certified-copy.svg | 4 +-- .../death-certificate-certified-copy.svg | 35 ++++++------------- .../common/certificate/handlebars/helpers.ts | 13 +++++++ 3 files changed, 26 insertions(+), 26 deletions(-) diff --git a/src/api/certificates/source/birth-certificate-certified-copy.svg b/src/api/certificates/source/birth-certificate-certified-copy.svg index 53edd739a..5d367d269 100644 --- a/src/api/certificates/source/birth-certificate-certified-copy.svg +++ b/src/api/certificates/source/birth-certificate-certified-copy.svg @@ -166,7 +166,7 @@ - {{districtPrimaryMother}}, {{statePrimaryMother}}, {{countryPrimaryMother}} + {{formattedAddress districtPrimaryMother statePrimaryMother countryPrimaryMother}} @@ -233,7 +233,7 @@ - {{districtPrimaryFather}}, {{statePrimaryFather}}, {{countryPrimaryFather}} + {{formattedAddress districtPrimaryFather statePrimaryFather countryPrimaryFather}} diff --git a/src/api/certificates/source/death-certificate-certified-copy.svg b/src/api/certificates/source/death-certificate-certified-copy.svg index 2b92a1d6d..63eb07010 100644 --- a/src/api/certificates/source/death-certificate-certified-copy.svg +++ b/src/api/certificates/source/death-certificate-certified-copy.svg @@ -68,34 +68,21 @@ {{/ifCond}} - - - 3. - - - Place of birth / Lieu de naissance - - - - Kabwe State Hospital
 - Chiwala, Kabwe, Farajaland - - - 4. + 3. Resident at / Domicilié à - {{districtPrimaryDeceased}}, {{statePrimaryDeceased}}, {{countryPrimaryDeceased}} + {{formattedAddress districtPrimaryDeceased statePrimaryDeceased countryPrimaryDeceased}} - 5. + 4. Marital status / Marital status @@ -108,7 +95,7 @@ - 6. + 5. Nationality / Nationalité @@ -123,7 +110,7 @@ Event details / Event details - 7. + 6. Date of death / Date de death @@ -139,7 +126,7 @@ - 8. + 7. Place of death / Place of death @@ -157,7 +144,7 @@ - 9. + 8. Manner of death @@ -172,7 +159,7 @@ Registration details / Détails d'inscription - 10. + 9. Informant full name / Informant full name @@ -186,7 +173,7 @@ - 12. + 10. Place of registration / Inscrit à @@ -199,7 +186,7 @@ - 13. + 11. Date of registration / Date d'enregistrement @@ -211,7 +198,7 @@ - 14. + 12. Registered by / Enregistré par diff --git a/src/form/common/certificate/handlebars/helpers.ts b/src/form/common/certificate/handlebars/helpers.ts index 6fd4f6acb..abe0cd231 100644 --- a/src/form/common/certificate/handlebars/helpers.ts +++ b/src/form/common/certificate/handlebars/helpers.ts @@ -24,6 +24,19 @@ export function debug(): Handlebars.HelperDelegate { } } +export function formattedAddress(): Handlebars.HelperDelegate { + return function ( + this: any, + address1: string, + address2: string, + address3: string + ) { + let address = address1 ? `${address1}, ` : '' + address += address2 ? `${address2}, ` : '' + address += address3 ? address2 : '' + return address + } +} export function ordinalFormatDate(): Handlebars.HelperDelegate { return function (dateString: string) { const date = new Date(dateString.trim()) From 79f37bfdc771f09613038e08abd54154740aa8ad Mon Sep 17 00:00:00 2001 From: tareq89 Date: Tue, 19 Nov 2024 20:05:21 +0600 Subject: [PATCH 23/37] always using birth date in certificates, not years of age --- .../birth-certificate-certified-copy.svg | 8 - .../death-certificate-certified-copy.svg | 160 ++++++++---------- .../certificates/source/death-certificate.svg | 6 - 3 files changed, 75 insertions(+), 99 deletions(-) diff --git a/src/api/certificates/source/birth-certificate-certified-copy.svg b/src/api/certificates/source/birth-certificate-certified-copy.svg index 5d367d269..1405ff040 100644 --- a/src/api/certificates/source/birth-certificate-certified-copy.svg +++ b/src/api/certificates/source/birth-certificate-certified-copy.svg @@ -150,11 +150,7 @@ - {{#ifCond ageOfMotherInYears '===' undefined }} {{motherBirthDate}} - {{else}} - {{ageOfMotherInYears}} years old - {{/ifCond}} @@ -217,11 +213,7 @@ - {{#ifCond ageOfFatherInYears '===' undefined }} {{fatherBirthDate}} - {{else}} - {{ageOfFatherInYears}} years old - {{/ifCond}} diff --git a/src/api/certificates/source/death-certificate-certified-copy.svg b/src/api/certificates/source/death-certificate-certified-copy.svg index 63eb07010..496c31117 100644 --- a/src/api/certificates/source/death-certificate-certified-copy.svg +++ b/src/api/certificates/source/death-certificate-certified-copy.svg @@ -20,7 +20,6 @@ MOSIP Application ID / MOSIP Application ID - Registrar {{registrar.name}} @@ -61,154 +60,148 @@ - {{#ifCond ageOfDeceasedInYears '===' undefined }} {{deceasedBirthDate}} - {{else}} - {{ageOfDeceasedInYears}} years old - {{/ifCond}} - + - 3. + 3. - Resident at / Domicilié à + Resident at / Domicilié à - + - {{formattedAddress districtPrimaryDeceased statePrimaryDeceased countryPrimaryDeceased}} + {{formattedAddress districtPrimaryDeceased statePrimaryDeceased countryPrimaryDeceased}} - + - 4. + 4. - Marital status / Marital status + Marital status / Marital status - + - {{deceasedMaritalStatus}} + {{deceasedMaritalStatus}} - - + + - 5. + 5. - Nationality / Nationalité + Nationality / Nationalité - + - {{intl 'nationality' deceasedNationality}} + {{intl 'nationality' deceasedNationality}} - + - Event details / Event details + Event details / Dtails de l'événement - 6. + 6. - Date of death / Date de death + Date of death / Date de décès - + - {{#ifCond ageOfDeceasedInYears '===' undefined }} - {{deceasedBirthDate}} - {{else}} - {{ageOfDeceasedInYears}} years old - {{/ifCond}} + + {{eventDate}} + - + - 7. + 7. - Place of death / Place of death + Place of death / Lieu de décès - + - {{#ifCond placeOfDeathFacility '===' undefined }} - {{location districtPlaceofdeathId 'name'}}{{internationalDistrictPlaceofdeath}}, - {{location statePlaceofdeathId 'name'}}{{internationalStatePlaceofdeath}}, {{countryPlaceofdeath}} + {{#ifCond placeOfDeathFacility '===' undefined }} + {{location districtPlaceofdeathId 'name'}}{{internationalDistrictPlaceofdeath}}, + {{location statePlaceofdeathId 'name'}}{{internationalStatePlaceofdeath}}, {{countryPlaceofdeath}} {{else}} - {{placeOfDeathFacility}} - {{placeOfDeathDistrict}}, {{placeOfDeathState}}, {{placeOfDeathCountry}} + {{placeOfDeathFacility}} + {{placeOfDeathDistrict}}, {{placeOfDeathState}}, {{placeOfDeathCountry}} {{/ifCond}} - + - 8. + 8. - Manner of death + Manner of death / Mode de décès - + - {{mannerOfDeath}} + {{mannerOfDeath}} - + - Registration details / Détails d'inscription + Registration details / Détails d'inscription - 9. + 9. - Informant full name / Informant full name + Informant full name / Nom complet de l’informateur - + - {{informantFirstName}} {{informantFamilyName}} - {{informantType}} + {{informantFirstName}} {{informantFamilyName}} + {{informantType}} - - + + - 10. + 10. - Place of registration / Inscrit à + Place of registration / Inscrit à - + - {{registrar.district.name}}, {{registrar.state.name}}, {{registrar.country}} + {{registrar.district.name}}, {{registrar.state.name}}, {{registrar.country}} - - + + - 11. + 11. - Date of registration / Date d'enregistrement + Date of registration / Date d'enregistrement - + - {{ ordinalFormatDate registrar.date }} + {{ ordinalFormatDate registrar.date }} - + - 12. + 12. - Registered by / Enregistré par + Registered by / Enregistré par - + - {{ registrar.name }} + {{ registrar.name }} - + @@ -233,7 +226,7 @@ CERTIFIED COPY OF DEATH RECORD / COPIE CERTIFIÉE DE L'ACTE DE DÉCÈS - + CAUTION : THERE ARE OFFENCES RELATING TO FALSIFYING OR ALTERING A CERTIFICATE AND USING OR POSSESSING A FALSE CERTIFICATE. A CERTIFICATE IS NOT PROOF OF IDENTITY / ATTENTION : IL EXISTE DES INFRACTIONS RELATIVES À LA FALSIFIATION OU À LA MODIFICATION @@ -249,42 +242,39 @@ - + - + - + - + - + - + - + - + - + - + - - - - + diff --git a/src/api/certificates/source/death-certificate.svg b/src/api/certificates/source/death-certificate.svg index e5ae1b5d0..c489f10db 100644 --- a/src/api/certificates/source/death-certificate.svg +++ b/src/api/certificates/source/death-certificate.svg @@ -76,16 +76,10 @@ Date de naissance - {{#ifCond ageOfDeceasedInYears '===' undefined }} {{deceasedBirthDate}} - {{else}} - - {{ageOfDeceasedInYears}} years old - - {{/ifCond}} From 58633160bd6a82e9a2be2235de2fd296f16d6f42 Mon Sep 17 00:00:00 2001 From: tareq89 Date: Tue, 19 Nov 2024 20:44:04 +0600 Subject: [PATCH 24/37] informant helper added in certificates --- .../birth-certificate-certified-copy.svg | 2 +- .../death-certificate-certified-copy.svg | 2 +- .../common/certificate/handlebars/helpers.ts | 20 +++++++++++++++++++ 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/api/certificates/source/birth-certificate-certified-copy.svg b/src/api/certificates/source/birth-certificate-certified-copy.svg index 1405ff040..dc1efdf4a 100644 --- a/src/api/certificates/source/birth-certificate-certified-copy.svg +++ b/src/api/certificates/source/birth-certificate-certified-copy.svg @@ -265,7 +265,7 @@ {{informantFirstName}} {{informantFamilyName}} - {{informantType}} + {{getCamelCasedInformantType informantType}} diff --git a/src/api/certificates/source/death-certificate-certified-copy.svg b/src/api/certificates/source/death-certificate-certified-copy.svg index 496c31117..5579e17d5 100644 --- a/src/api/certificates/source/death-certificate-certified-copy.svg +++ b/src/api/certificates/source/death-certificate-certified-copy.svg @@ -160,7 +160,7 @@ {{informantFirstName}} {{informantFamilyName}} - {{informantType}} + {{getCamelCasedInformantType informantType}} diff --git a/src/form/common/certificate/handlebars/helpers.ts b/src/form/common/certificate/handlebars/helpers.ts index abe0cd231..e02620bd3 100644 --- a/src/form/common/certificate/handlebars/helpers.ts +++ b/src/form/common/certificate/handlebars/helpers.ts @@ -63,3 +63,23 @@ export function ordinalFormatDate(): Handlebars.HelperDelegate { return formattedDate } } + +export function getCamelCasedInformantType( + props: FactoryProps +): Handlebars.HelperDelegate { + return function (informantType: string) { + const camelCased = informantType + .toLowerCase() + .split('_') + .map((word, index) => + index === 0 ? word : word.charAt(0).toUpperCase() + word.slice(1) + ) + .join('') + + return props.intl.formatMessage({ + id: `form.field.label.informantRelation.${camelCased}`, + description: 'Label for informant type', + defaultMessage: '' + }) + } +} From 1c597ef9f709e57f9ec9fe5b8f2904954deea610 Mon Sep 17 00:00:00 2001 From: tareq89 Date: Wed, 20 Nov 2024 12:38:57 +0600 Subject: [PATCH 25/37] different certificate fees changed --- src/api/certificates/handler.ts | 35 ++++++++++++++++----------------- 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/src/api/certificates/handler.ts b/src/api/certificates/handler.ts index ded6d8917..371249c43 100644 --- a/src/api/certificates/handler.ts +++ b/src/api/certificates/handler.ts @@ -10,7 +10,6 @@ */ import { Request, ResponseToolkit } from '@hapi/hapi' -import { readFileSync } from 'fs' type FontFamilyTypes = { normal: string @@ -52,8 +51,8 @@ export async function certificateHandler(request: Request, h: ResponseToolkit) { }, isDefault: true, fee: { - onTime: 0, - late: 5.5, + onTime: 5, + late: 7, delayed: 15 }, svgUrl: '/api/countryconfig/certificates/birth-certificate.svg', @@ -76,9 +75,9 @@ export async function certificateHandler(request: Request, h: ResponseToolkit) { }, isDefault: false, fee: { - onTime: 0, - late: 5.5, - delayed: 15 + onTime: 8, + late: 11.5, + delayed: 17 }, svgUrl: '/api/countryconfig/certificates/birth-certificate-certified-copy.svg', @@ -101,9 +100,9 @@ export async function certificateHandler(request: Request, h: ResponseToolkit) { }, isDefault: true, fee: { - onTime: 0, - late: 5.5, - delayed: 15 + onTime: 3, + late: 5.7, + delayed: 12 }, svgUrl: '/api/countryconfig/certificates/death-certificate.svg', fonts: { @@ -125,9 +124,9 @@ export async function certificateHandler(request: Request, h: ResponseToolkit) { }, isDefault: false, fee: { - onTime: 0, - late: 5.5, - delayed: 15 + onTime: 6, + late: 9, + delayed: 14.5 }, svgUrl: '/api/countryconfig/certificates/death-certificate-certified-copy.svg', @@ -150,9 +149,9 @@ export async function certificateHandler(request: Request, h: ResponseToolkit) { }, isDefault: true, fee: { - onTime: 0, - late: 5.5, - delayed: 15 + onTime: 4.4, + late: 6, + delayed: 13.5 }, svgUrl: '/api/countryconfig/certificates/marriage-certificate.svg', fonts: { @@ -174,9 +173,9 @@ export async function certificateHandler(request: Request, h: ResponseToolkit) { }, isDefault: false, fee: { - onTime: 0, - late: 5.5, - delayed: 15 + onTime: 7, + late: 10.6, + delayed: 18 }, svgUrl: '/api/countryconfig/certificates/marriage-certificate-certified-copy.svg', From 15130828906467150b45ce406142251516fb8e50 Mon Sep 17 00:00:00 2001 From: tareq89 Date: Wed, 20 Nov 2024 18:02:41 +0600 Subject: [PATCH 26/37] added secondary font Libre Baskerville in birth certificate --- src/api/certificates/handler.ts | 10 +- .../certificates/source/birth-certificate.svg | 108 +++++++++--------- src/api/fonts/LibreBaskerville-Bold.ttf | Bin 0 -> 155428 bytes src/api/fonts/LibreBaskerville-Italic.ttf | Bin 0 -> 172212 bytes src/api/fonts/LibreBaskerville-Regular.ttf | Bin 0 -> 154676 bytes 5 files changed, 59 insertions(+), 59 deletions(-) create mode 100644 src/api/fonts/LibreBaskerville-Bold.ttf create mode 100644 src/api/fonts/LibreBaskerville-Italic.ttf create mode 100644 src/api/fonts/LibreBaskerville-Regular.ttf diff --git a/src/api/certificates/handler.ts b/src/api/certificates/handler.ts index 371249c43..dcb17eba0 100644 --- a/src/api/certificates/handler.ts +++ b/src/api/certificates/handler.ts @@ -57,11 +57,11 @@ export async function certificateHandler(request: Request, h: ResponseToolkit) { }, svgUrl: '/api/countryconfig/certificates/birth-certificate.svg', fonts: { - 'Noto Sans': { - normal: '/api/countryconfig/fonts/NotoSans-Regular.ttf', - bold: '/api/countryconfig/fonts/NotoSans-Bold.ttf', - italics: '/api/countryconfig/fonts/NotoSans-Regular.ttf', - bolditalics: '/api/countryconfig/fonts/NotoSans-Regular.ttf' + 'Libre Baskerville': { + normal: '/api/countryconfig/fonts/LibreBaskerville-Regular.ttf', + bold: '/api/countryconfig/fonts/LibreBaskerville-Bold.ttf', + italics: '/api/countryconfig/fonts/LibreBaskerville-Italic.ttf', + bolditalics: '/api/countryconfig/fonts/LibreBaskerville-Regular.ttf' } } }, diff --git a/src/api/certificates/source/birth-certificate.svg b/src/api/certificates/source/birth-certificate.svg index e4284dbc7..506461702 100644 --- a/src/api/certificates/source/birth-certificate.svg +++ b/src/api/certificates/source/birth-certificate.svg @@ -1,7 +1,7 @@ - + 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 @@ -23,35 +23,35 @@ - + FARAJALAND - + - + {{certificateDate}} - + Date of certification / Date de délivrance - + {{location loggedInUser.officeId 'name'}}
 {{location loggedInUser.districtId 'name'}}, {{location loggedInUser.stateId 'name'}}, Farajaland - + - + Place of certification / Lieu de délivrance - + {{mosipAid}} - + {{#ifCond mosipAid '===' undefined }} {{else}} @@ -63,84 +63,84 @@ - + 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 birth Date de naissance - + {{eventDate}} - + 4. - + /
 - + Place of birth Lieu de naissance - + {{#ifCond placeOfBirthFacility '===' undefined }} {{location districtPlaceofbirthId 'name'}}{{internationalDistrictPlaceofbirth}}, {{location statePlaceofbirthId 'name'}}{{internationalStatePlaceofbirth}}, {{countryPlaceofbirth}} @@ -151,96 +151,96 @@ - + 5. - + /
 - + Mother’s full name Nom 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}} diff --git a/src/api/fonts/LibreBaskerville-Bold.ttf b/src/api/fonts/LibreBaskerville-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..f415f3e9f42229c42e73c81cad5e9ce26368757a GIT binary patch literal 155428 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 O>6;!X%%kZM_x}U7F-*Du literal 0 HcmV?d00001 diff --git a/src/api/fonts/LibreBaskerville-Italic.ttf b/src/api/fonts/LibreBaskerville-Italic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..152c1e37c551c46d4f6efc2766f2ed3faae14e9b GIT binary patch literal 172212 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
  • Sb&f&iuwh4wY7N@{ilzmQ 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 literal 0 HcmV?d00001 diff --git a/src/api/fonts/LibreBaskerville-Regular.ttf b/src/api/fonts/LibreBaskerville-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..8b871395ecbdefeb91eb1e5267bd7f14c62fa249 GIT binary patch literal 154676 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 literal 0 HcmV?d00001 From 18ca15b4e7877385cc2e0e0d4b734b091452eaae Mon Sep 17 00:00:00 2001 From: tareq89 Date: Fri, 22 Nov 2024 13:06:12 +0600 Subject: [PATCH 27/37] marriage otherRelationship template operation changed to fieldValueTransformer --- src/form/marriage/required-fields.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/form/marriage/required-fields.ts b/src/form/marriage/required-fields.ts index 0585920fb..cd759e703 100644 --- a/src/form/marriage/required-fields.ts +++ b/src/form/marriage/required-fields.ts @@ -89,7 +89,7 @@ export const witnessRelationshipForOthers = ( ], mapping: { template: { - operation: 'selectTransformer', + operation: 'fieldValueTransformer', fieldName } } From cc54d0bfcb71ee6c65539330cb0341b552078c4d Mon Sep 17 00:00:00 2001 From: tareq89 Date: Mon, 25 Nov 2024 17:50:04 +0600 Subject: [PATCH 28/37] ageOf**InYears variable implementation fixed --- .../source/birth-certificate-certified-copy.svg | 12 ++++++++++-- .../source/death-certificate-certified-copy.svg | 2 +- .../source/marriage-certificate-certified-copy.svg | 2 +- src/form/common/certificate/handlebars/helpers.ts | 13 ------------- 4 files changed, 12 insertions(+), 17 deletions(-) diff --git a/src/api/certificates/source/birth-certificate-certified-copy.svg b/src/api/certificates/source/birth-certificate-certified-copy.svg index dc1efdf4a..a5de61c60 100644 --- a/src/api/certificates/source/birth-certificate-certified-copy.svg +++ b/src/api/certificates/source/birth-certificate-certified-copy.svg @@ -150,7 +150,11 @@ + {{#ifCond ageOfMotherInYears '===' undefined }} {{motherBirthDate}} + {{else}} + {{ageOfMotherInYears}} years old + {{/ifCond}} @@ -162,7 +166,7 @@ - {{formattedAddress districtPrimaryMother statePrimaryMother countryPrimaryMother}} + {{ districtPrimaryMother }}{{ internationalDistrictPrimaryMother }}, {{ statePrimaryMother }}{{ internationalStatePrimaryMother }}, {{ countryPrimaryMother }} @@ -213,7 +217,11 @@ + {{#ifCond ageOfFatherInYears '===' undefined }} {{fatherBirthDate}} + {{else}} + {{ageOfFatherInYears}} years old + {{/ifCond}} @@ -225,7 +233,7 @@ - {{formattedAddress districtPrimaryFather statePrimaryFather countryPrimaryFather}} + {{ districtPrimaryFather }}{{ internationalDistrictPrimaryFather }}, {{ statePrimaryFather }}{{ internationalStatePrimaryFather }}, {{ countryPrimaryFather }} diff --git a/src/api/certificates/source/death-certificate-certified-copy.svg b/src/api/certificates/source/death-certificate-certified-copy.svg index 5579e17d5..c7021e010 100644 --- a/src/api/certificates/source/death-certificate-certified-copy.svg +++ b/src/api/certificates/source/death-certificate-certified-copy.svg @@ -72,7 +72,7 @@ - {{formattedAddress districtPrimaryDeceased statePrimaryDeceased countryPrimaryDeceased}} + {{ districtPrimaryDeceased }}{{ internationalDistrictPrimaryDeceased }}, {{ statePrimaryDeceased }}{{ internationalStatePrimaryDeceased }}, {{ countryPrimaryDeceased }} diff --git a/src/api/certificates/source/marriage-certificate-certified-copy.svg b/src/api/certificates/source/marriage-certificate-certified-copy.svg index 69cb3619a..174336193 100644 --- a/src/api/certificates/source/marriage-certificate-certified-copy.svg +++ b/src/api/certificates/source/marriage-certificate-certified-copy.svg @@ -137,7 +137,7 @@ - {{#ifCond ageOfGroomInYears '===' undefined }} + {{#ifCond ageOfBrideInYears '===' undefined }} {{brideBirthDate}} {{else}} {{ageOfBrideInYears}} years old diff --git a/src/form/common/certificate/handlebars/helpers.ts b/src/form/common/certificate/handlebars/helpers.ts index e02620bd3..58a7352d4 100644 --- a/src/form/common/certificate/handlebars/helpers.ts +++ b/src/form/common/certificate/handlebars/helpers.ts @@ -24,19 +24,6 @@ export function debug(): Handlebars.HelperDelegate { } } -export function formattedAddress(): Handlebars.HelperDelegate { - return function ( - this: any, - address1: string, - address2: string, - address3: string - ) { - let address = address1 ? `${address1}, ` : '' - address += address2 ? `${address2}, ` : '' - address += address3 ? address2 : '' - return address - } -} export function ordinalFormatDate(): Handlebars.HelperDelegate { return function (dateString: string) { const date = new Date(dateString.trim()) From b114adfb202b9adf1e0014287e35bdcb0c985cc5 Mon Sep 17 00:00:00 2001 From: tareq89 Date: Wed, 27 Nov 2024 16:21:57 +0600 Subject: [PATCH 29/37] hide parent address if not available in birth certificate --- .../certificates/source/birth-certificate-certified-copy.svg | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/api/certificates/source/birth-certificate-certified-copy.svg b/src/api/certificates/source/birth-certificate-certified-copy.svg index a5de61c60..0b2c7319d 100644 --- a/src/api/certificates/source/birth-certificate-certified-copy.svg +++ b/src/api/certificates/source/birth-certificate-certified-copy.svg @@ -166,7 +166,9 @@ + {{#ifCond motherFirstName '!==' undefined }} {{ districtPrimaryMother }}{{ internationalDistrictPrimaryMother }}, {{ statePrimaryMother }}{{ internationalStatePrimaryMother }}, {{ countryPrimaryMother }} + {{/ifCond}} @@ -233,7 +235,9 @@ + {{#ifCond fatherFirstName '!==' undefined }} {{ districtPrimaryFather }}{{ internationalDistrictPrimaryFather }}, {{ statePrimaryFather }}{{ internationalStatePrimaryFather }}, {{ countryPrimaryFather }} + {{/ifCond}} From 3379e8b56745304bcfc89a2212d3bcc7070bb993 Mon Sep 17 00:00:00 2001 From: tareq89 Date: Fri, 29 Nov 2024 21:25:28 +0600 Subject: [PATCH 30/37] certificateTemplateId validation message added --- src/translations/client.csv | 1 + 1 file changed, 1 insertion(+) diff --git a/src/translations/client.csv b/src/translations/client.csv index f35d65496..11ed76b37 100644 --- a/src/translations/client.csv +++ b/src/translations/client.csv @@ -1792,6 +1792,7 @@ print.certificate.certificatePreview,The title for certificate preview form,Cert print.certificate.collectPayment,The label for collect payment paragraph,"Please collect the payment, print the receipt and hand it over to the payee.","Veuillez encaisser le paiement, imprimer le reçu et le remettre au bénéficiaire." print.certificate.collector.father,The label for select value when father is the collector of certificate,Father is collecting,Père print.certificate.collector.form.error,Form level error for collector form,Please select who is collecting the certificate,Veuillez sélectionner la personne qui collecte le certificat +print.certificate.collector.form.error.template,Form level error for collector form template type,Please select certificate type,Veuillez sélectionner le type de certificat print.certificate.collector.idCheck.title,The title for id check component,Verify their identity,Vérifier leur identité print.certificate.collector.idCheckDialog.title,The title for the dialog when details of the collector not verified,Print without proof of ID?,Continuer sans preuve d'identité ? print.certificate.collector.informant,The label for select value when informant is the collector of certificate,Informant is collecting,Informateur From 74d669b41d5b3c5e964b7e7f0adf6241d859b43f Mon Sep 17 00:00:00 2001 From: tareq89 Date: Tue, 3 Dec 2024 18:56:35 +0600 Subject: [PATCH 31/37] otherInformantType added in birth and death certificate --- .../source/birth-certificate-certified-copy.svg | 2 +- .../source/death-certificate-certified-copy.svg | 2 +- src/form/common/certificate/handlebars/helpers.ts | 15 +++++++++------ src/translations/client.csv | 2 +- 4 files changed, 12 insertions(+), 9 deletions(-) diff --git a/src/api/certificates/source/birth-certificate-certified-copy.svg b/src/api/certificates/source/birth-certificate-certified-copy.svg index 0b2c7319d..a279fbb87 100644 --- a/src/api/certificates/source/birth-certificate-certified-copy.svg +++ b/src/api/certificates/source/birth-certificate-certified-copy.svg @@ -277,7 +277,7 @@ {{informantFirstName}} {{informantFamilyName}} - {{getCamelCasedInformantType informantType}} + {{getCamelCasedInformantType informantType otherInformantType}} diff --git a/src/api/certificates/source/death-certificate-certified-copy.svg b/src/api/certificates/source/death-certificate-certified-copy.svg index c7021e010..804ee925e 100644 --- a/src/api/certificates/source/death-certificate-certified-copy.svg +++ b/src/api/certificates/source/death-certificate-certified-copy.svg @@ -160,7 +160,7 @@ {{informantFirstName}} {{informantFamilyName}} - {{getCamelCasedInformantType informantType}} + {{getCamelCasedInformantType informantType otherInformantType}} diff --git a/src/form/common/certificate/handlebars/helpers.ts b/src/form/common/certificate/handlebars/helpers.ts index 58a7352d4..373ee12de 100644 --- a/src/form/common/certificate/handlebars/helpers.ts +++ b/src/form/common/certificate/handlebars/helpers.ts @@ -54,7 +54,7 @@ export function ordinalFormatDate(): Handlebars.HelperDelegate { export function getCamelCasedInformantType( props: FactoryProps ): Handlebars.HelperDelegate { - return function (informantType: string) { + return function (informantType: string, otherInformantType?: string) { const camelCased = informantType .toLowerCase() .split('_') @@ -63,10 +63,13 @@ export function getCamelCasedInformantType( ) .join('') - return props.intl.formatMessage({ - id: `form.field.label.informantRelation.${camelCased}`, - description: 'Label for informant type', - defaultMessage: '' - }) + return props.intl.formatMessage( + { + id: `form.field.label.informantRelation.${camelCased}`, + description: 'Label for informant type', + defaultMessage: '' + }, + { otherInformantType } + ) } } diff --git a/src/translations/client.csv b/src/translations/client.csv index 11ed76b37..2c1bb1803 100644 --- a/src/translations/client.csv +++ b/src/translations/client.csv @@ -1021,7 +1021,7 @@ form.field.label.informantRelation.headInst,,Head of the institution where the d form.field.label.informantRelation.legalGuardian,Label for option Legal Guardian,Legal guardian,Tuteur légal form.field.label.informantRelation.mother,Label for option mother,Mother,Mère form.field.label.informantRelation.officer,,Officer-in-charge of the road or public space where the death occurred,Officier responsable d'une route ou d'un espace public où le décès a eu lieu. -form.field.label.informantRelation.other,,Other(Specify),Autre(Précisez) +form.field.label.informantRelation.other,,Other ({otherInformantType}),Autre ({otherInformantType}) form.field.label.informantRelation.others,Label for option someone else,Someone else,Autre form.field.label.informantRelation.owner,,Owner of the house or building where the death occurred,Propriétaire de la maison ou du bâtiment où le décès a eu lieu. form.field.label.informantRelation.sister,Label for option Sister,Sister,Soeur From 5db618f87a78e3f93830be61a8d2b3a6691ab23f Mon Sep 17 00:00:00 2001 From: tareq89 Date: Tue, 10 Dec 2024 17:26:44 +0600 Subject: [PATCH 32/37] modified certificate/{id} --- src/api/certificates/handler.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/api/certificates/handler.ts b/src/api/certificates/handler.ts index dcb17eba0..8929c55c7 100644 --- a/src/api/certificates/handler.ts +++ b/src/api/certificates/handler.ts @@ -37,7 +37,7 @@ export interface ICertificateConfigData { export async function certificateHandler(request: Request, h: ResponseToolkit) { if (request.params.id) { - const filePath = `${__dirname}/source/${request.params.id}.svg` + const filePath = `${__dirname}/source/${request.params.id}` return h.file(filePath) } const certificateConfigs: ICertificateConfigData[] = [ From 12ce3bab14d62ebf0a43886ed1e48b00f7caaeb5 Mon Sep 17 00:00:00 2001 From: "Al hel md. shahriar zaman" Date: Fri, 20 Dec 2024 18:27:39 +0600 Subject: [PATCH 33/37] cd / && portion is removed --- infrastructure/server-setup/tasks/backups/crontab.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/infrastructure/server-setup/tasks/backups/crontab.yml b/infrastructure/server-setup/tasks/backups/crontab.yml index 8abd21d67..bc20f8093 100644 --- a/infrastructure/server-setup/tasks/backups/crontab.yml +++ b/infrastructure/server-setup/tasks/backups/crontab.yml @@ -44,7 +44,7 @@ name: 'download opencrvs backup' minute: '30' hour: '0' - job: 'cd / && bash /opt/opencrvs/infrastructure/backups/download.sh --passphrase={{ backup_restore_encryption_passphrase }} --ssh_user={{ backup_server_user }} --ssh_host={{ backup_hostname }} --ssh_port={{ backup_port }} --remote_dir={{ backup_server_remote_source_directory }} >> /var/log/opencrvs-restore.log 2>&1' + job: 'bash /opt/opencrvs/infrastructure/backups/download.sh --passphrase={{ backup_restore_encryption_passphrase }} --ssh_user={{ backup_server_user }} --ssh_host={{ backup_hostname }} --ssh_port={{ backup_port }} --remote_dir={{ backup_server_remote_source_directory }} >> /var/log/opencrvs-restore.log 2>&1' state: "{{ 'present' if (backup_hostname is defined and backup_restore_encryption_passphrase and periodic_restore_from_backup) else 'absent' }}" - name: 'Setup crontab to restore the opencrvs data' @@ -54,5 +54,5 @@ name: 'restore opencrvs' minute: '0' hour: '1' - job: 'cd / && bash /opt/opencrvs/infrastructure/backups/restore.sh --replicas=1 >> /var/log/opencrvs-restore.log 2>&1' + job: 'bash /opt/opencrvs/infrastructure/backups/restore.sh --replicas=1 >> /var/log/opencrvs-restore.log 2>&1' state: "{{ 'present' if (backup_hostname is defined and backup_restore_encryption_passphrase and periodic_restore_from_backup) else 'absent' }}" From 6e3a238d59ec0c65dfc4ebf4772cebc926feef54 Mon Sep 17 00:00:00 2001 From: "Al hel md. shahriar zaman" Date: Mon, 23 Dec 2024 15:53:06 +0600 Subject: [PATCH 34/37] new elastsalert rule has been created --- .../elastalert/rules/log-error-alert.yaml | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 infrastructure/monitoring/elastalert/rules/log-error-alert.yaml diff --git a/infrastructure/monitoring/elastalert/rules/log-error-alert.yaml b/infrastructure/monitoring/elastalert/rules/log-error-alert.yaml new file mode 100644 index 000000000..2b90c5e0a --- /dev/null +++ b/infrastructure/monitoring/elastalert/rules/log-error-alert.yaml @@ -0,0 +1,38 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# OpenCRVS is also distributed under the terms of the Civil Registration +# & Healthcare Disclaimer located at http://opencrvs.org/license. +# +# Copyright (C) The OpenCRVS Authors located at https://github.com/opencrvs/opencrvs-core/blob/master/AUTHORS. +name: 'log-alert' +type: 'frequency' +index: 'kibana-alert-history-default' +is_enabled: true +num_events: 1 +realert: + minutes: 5 +terms_size: 50 +timeframe: + minutes: 5 +timestamp_field: '@timestamp' +timestamp_type: 'iso' +use_strftime_index: false +# https://github.com/Yelp/elastalert/issues/1260 +raw_count_keys: false +filter: + - bool: + should: + - term: + rule.name.keyword: + value: 'Error while backup' + minimum_should_match: 1 + +alert: post2 +http_post2_url: 'http://countryconfig:3040/email' +http_post2_payload: + subject: '{% raw %}{{DOMAIN}}{% endraw %}: {{rule.name}} 🚨' + html: 'Reason: {{kibana.alert.context.logs__alert__document__count.conditions}}. Login to https://kibana.{% raw %}{{DOMAIN}}{% endraw %} to view the alert.' + from: '{% raw %}{{SENDER_EMAIL_ADDRESS}}{% endraw %}' + to: '{% raw %}{{ALERT_EMAIL}}{% endraw %}' From 8d04f81a703c00385cef40b97ba432f77a9c0ce0 Mon Sep 17 00:00:00 2001 From: "Al hel md. shahriar zaman" Date: Mon, 23 Dec 2024 16:27:00 +0600 Subject: [PATCH 35/37] new json line added in the ndjason file --- infrastructure/monitoring/kibana/config.ndjson | 1 + 1 file changed, 1 insertion(+) diff --git a/infrastructure/monitoring/kibana/config.ndjson b/infrastructure/monitoring/kibana/config.ndjson index f79787241..859588a23 100644 --- a/infrastructure/monitoring/kibana/config.ndjson +++ b/infrastructure/monitoring/kibana/config.ndjson @@ -1,6 +1,7 @@ {"attributes":{"actions":[{"actionRef":"preconfigured:preconfigured-alert-history-es-index","actionTypeId":".index","group":"metrics.inventory_threshold.fired","params":{"documents":["{\"@timestamp\":\"2024-08-06T07:57:35.644Z\",\"tags\":\"{{rule.tags}}\",\"rule\":{\"id\":\"{{rule.id}}\",\"name\":\"{{rule.name}}\",\"params\":{\"{{rule__type}}\":\"{{params}}\"},\"space\":\"{{rule.spaceId}}\",\"type\":\"{{rule.type}}\"},\"kibana\":{\"alert\":{\"id\":\"{{alert.id}}\",\"context\":{\"{{rule__type}}\":\"{{context}}\"},\"actionGroup\":\"{{alert.actionGroup}}\",\"actionGroupName\":\"{{alert.actionGroupName}}\"}},\"event\":{\"kind\":\"alert\"}}"]}}],"alertTypeId":"metrics.alert.inventory.threshold","apiKey":null,"apiKeyOwner":null,"consumer":"alerts","createdAt":"2023-11-17T12:01:46.420Z","createdBy":"elastic","enabled":false,"executionStatus":{"error":null,"lastExecutionDate":"2024-08-06T08:02:44.568Z","status":"pending"},"legacyId":null,"meta":{"versionApiKeyLastmodified":"7.17.18"},"muteAll":false,"mutedInstanceIds":[],"name":"Available disk space in root file system","notifyWhen":"onActionGroupChange","params":{"alertOnNoData":true,"criteria":[{"comparator":">=","customMetric":{"aggregation":"max","field":"system.filesystem.used.pct","id":"alert-custom-metric","type":"custom"},"metric":"custom","threshold":[0.7],"timeSize":1,"timeUnit":"h","warningComparator":">=","warningThreshold":[0.5]}],"filterQuery":"{\"bool\":{\"should\":[{\"match_phrase\":{\"system.filesystem.mount_point\":\"/hostfs\"}}],\"minimum_should_match\":1}}","filterQueryText":"system.filesystem.mount_point : \"/hostfs\"","nodeType":"host","sourceId":"default"},"schedule":{"interval":"1h"},"scheduledTaskId":null,"tags":["infra","opencrvs-builtin"],"throttle":null,"updatedAt":"2024-08-06T08:01:56.542Z","updatedBy":"elastic"},"coreMigrationVersion":"7.17.18","id":"14778650-8541-11ee-9002-2f37fdc4e5d5","migrationVersion":{"alert":"7.16.0"},"references":[],"sort":[1722931316554,643],"type":"alert","updated_at":"2024-08-06T08:01:56.554Z","version":"WzM5MywxXQ=="} {"attributes":{"actions":[{"actionRef":"preconfigured:preconfigured-alert-history-es-index","actionTypeId":".index","group":"threshold_met","params":{"documents":["{\"@timestamp\":\"2022-04-18T07:05:33.819Z\",\"tags\":\"{{rule.tags}}\",\"rule\":{\"id\":\"{{rule.id}}\",\"name\":\"{{rule.name}}\",\"params\":{\"{{rule__type}}\":\"{{params}}\"},\"space\":\"{{rule.spaceId}}\",\"type\":\"{{rule.type}}\"},\"kibana\":{\"alert\":{\"id\":\"{{alert.id}}\",\"context\":{\"{{rule__type}}\":\"{{context}}\"},\"actionGroup\":\"{{alert.actionGroup}}\",\"actionGroupName\":\"{{alert.actionGroupName}}\"}},\"event\":{\"kind\":\"alert\"}}"]}}],"alertTypeId":"apm.error_rate","apiKey":null,"apiKeyOwner":null,"consumer":"alerts","createdAt":"2022-06-01T11:30:27.033Z","createdBy":"opencrvs-admin","enabled":false,"executionStatus":{"error":null,"lastExecutionDate":"2024-02-07T08:28:08.400Z","status":"pending"},"legacyId":null,"meta":{"versionApiKeyLastmodified":"7.17.0"},"muteAll":false,"mutedInstanceIds":[],"name":"Error in service","notifyWhen":"onActionGroupChange","params":{"environment":"ENVIRONMENT_ALL","threshold":1,"windowSize":1,"windowUnit":"m"},"schedule":{"interval":"1m"},"scheduledTaskId":null,"tags":[],"throttle":null,"updatedAt":"2024-02-05T03:00:20.633Z","updatedBy":"opencrvs-admin"},"coreMigrationVersion":"7.17.0","id":"3b6722e0-e19e-11ec-ba8e-51649755648d","migrationVersion":{"alert":"7.16.0"},"references":[],"sort":[1707273006619,214975],"type":"alert","updated_at":"2024-02-07T02:30:06.619Z","version":"WzQ5MjAzNCwxOV0="} {"attributes":{"buildNum":46534,"defaultIndex":"metricbeat-*"},"coreMigrationVersion":"7.17.0","id":"7.17.0","migrationVersion":{"config":"7.13.0"},"references":[],"sort":[1707273006619,216009],"type":"config","updated_at":"2024-02-07T02:30:06.619Z","version":"WzQ5MjQyOCwxOV0="} +{"attributes":{"actions":[{"actionRef":"preconfigured:preconfigured-alert-history-es-index","actionTypeId":".index","frequency":{"notifyWhen":"onActionGroupChange","summary":false,"throttle":null},"group":"logs.threshold.fired","params":{"documents":["{\"@timestamp\":\"2024-12-23T09:50:26.528Z\",\"tags\":\"{{rule.tags}}\",\"rule\":{\"id\":\"{{rule.id}}\",\"name\":\"{{rule.name}}\",\"params\":{\"{{rule__type}}\":\"{{rule.params}}\"},\"space\":\"{{rule.spaceId}}\",\"type\":\"{{rule.type}}\"},\"kibana\":{\"alert\":{\"id\":\"{{alert.id}}\",\"context\":{\"{{rule__type}}\":\"{{context}}\"},\"actionGroup\":\"{{alert.actionGroup}}\",\"actionGroupName\":\"{{alert.actionGroupName}}\"}},\"event\":{\"kind\":\"alert\"}}"]},"uuid":"1504b514-82e5-47de-a6ef-60795788f7e6"}],"alertTypeId":"logs.alert.document.count","apiKey":null,"apiKeyCreatedByUser":null,"apiKeyOwner":null,"consumer":"alerts","createdAt":"2024-12-23T10:16:28.758Z","createdBy":"opencrvs-admin","enabled":false,"executionStatus":{"error":null,"lastExecutionDate":"2024-12-23T10:20:10.118Z","status":"pending","warning":null},"lastRun":{"alertsCount":{"active":1,"ignored":0,"new":1,"recovered":0},"outcome":"succeeded","outcomeMsg":null,"outcomeOrder":0,"warning":null},"legacyId":null,"meta":{"versionApiKeyLastmodified":"8.14.3"},"monitoring":{"run":{"calculated_metrics":{"p50":529,"p95":565,"p99":565,"success_ratio":1},"history":[{"duration":493,"success":true,"timestamp":1734948992101},{"duration":565,"success":true,"timestamp":1734949097318}],"last_run":{"metrics":{"duration":565,"gap_duration_s":null,"total_alerts_created":null,"total_alerts_detected":null,"total_indexing_duration_ms":null,"total_search_duration_ms":null},"timestamp":"2024-12-23T10:18:17.318Z"}}},"muteAll":false,"mutedInstanceIds":[],"name":"Error while backup ","nextRun":"2024-12-23T11:18:17.247Z","notifyWhen":null,"params":{"count":{"comparator":"more than or equals","value":1},"criteria":[{"comparator":"equals","field":"log.file.path","value":"/var/log/opencrvs-backup.error.log"}],"logView":{"logViewId":"log-view-reference-0","type":"log-view-reference"},"timeSize":1,"timeUnit":"h"},"revision":1,"running":false,"schedule":{"interval":"1h"},"scheduledTaskId":null,"snoozeSchedule":[],"tags":[],"throttle":null,"updatedAt":"2024-12-23T10:17:24.571Z","updatedBy":"opencrvs-admin"},"coreMigrationVersion":"8.8.0","created_at":"2024-12-23T10:17:24.572Z","id":"8caf3676-e78a-4e7c-ba85-c150df55901b","managed":false,"references":[{"id":"default","name":"param:log-view-reference-0","type":"infrastructure-monitoring-log-view"}],"sort":[1734949097887,115],"type":"alert","typeMigrationVersion":"10.1.0","updated_at":"2024-12-23T10:18:17.887Z","version":"WzgyNDExMyw0MDRd"} {"attributes":{"actions":[{"actionRef":"preconfigured:preconfigured-alert-history-es-index","actionTypeId":".index","group":"logs.threshold.fired","params":{"documents":["{\"@timestamp\":\"2023-11-22T08:25:47.329Z\",\"tags\":\"{{rule.tags}}\",\"rule\":{\"id\":\"{{rule.id}}\",\"name\":\"{{rule.name}}\",\"params\":{\"{{rule__type}}\":\"{{params}}\"},\"space\":\"{{rule.spaceId}}\",\"type\":\"{{rule.type}}\"},\"kibana\":{\"alert\":{\"id\":\"{{alert.id}}\",\"context\":{\"{{rule__type}}\":\"{{context}}\"},\"actionGroup\":\"{{alert.actionGroup}}\",\"actionGroupName\":\"{{alert.actionGroupName}}\"}},\"event\":{\"kind\":\"alert\"}}"]}}],"alertTypeId":"logs.alert.document.count","apiKey":null,"apiKeyOwner":null,"consumer":"alerts","createdAt":"2023-11-22T08:32:38.272Z","createdBy":"elastic","enabled":false,"executionStatus":{"error":null,"lastExecutionDate":"2024-02-07T08:28:08.400Z","status":"pending"},"legacyId":null,"meta":{"versionApiKeyLastmodified":"7.17.0"},"muteAll":false,"mutedInstanceIds":[],"name":"Error in backup logs","notifyWhen":"onActionGroupChange","params":{"count":{"comparator":"more than or equals","value":1},"criteria":[{"comparator":"matches","field":"message","value":"error"},{"comparator":"equals","field":"log.file.path","value":"/var/log/opencrvs-backup.log"}],"timeSize":1,"timeUnit":"h"},"schedule":{"interval":"1h"},"scheduledTaskId":null,"tags":[],"throttle":null,"updatedAt":"2024-02-07T02:27:22.558Z","updatedBy":"elastic"},"coreMigrationVersion":"7.17.0","id":"b166fcb0-8911-11ee-8111-2f3be9e93efc","migrationVersion":{"alert":"7.16.0"},"references":[],"sort":[1707294436464,232766],"type":"alert","updated_at":"2024-02-07T08:27:16.464Z","version":"WzQ5NTQzNCwxOV0="} {"attributes":{"anomalyThreshold":50,"description":"","fields":{"container":"container.id","host":"host.name","message":["message","@message"],"pod":"kubernetes.pod.uid","tiebreaker":"_doc","timestamp":"@timestamp"},"inventoryDefaultView":"0","logColumns":[{"timestampColumn":{"id":"5e7f964a-be8a-40d8-88d2-fbcfbdca0e2f"}},{"fieldColumn":{"field":"event.dataset","id":" eb9777a8-fcd3-420e-ba7d-172fff6da7a2"}},{"messageColumn":{"id":"b645d6da-824b-4723-9a2a-e8cece1645c0"}}],"logIndices":{"indexName":"logs-*,filebeat-*,kibana_sample_data_logs*,logstash*,ecs-logstash*","type":"index_name"},"metricAlias":"metrics-*,metricbeat-*","metricsExplorerDefaultView":"0","name":"Default"},"coreMigrationVersion":"7.17.0","id":"default","migrationVersion":{"infrastructure-ui-source":"7.16.2"},"references":[],"sort":[1707273006619,217714],"type":"infrastructure-ui-source","updated_at":"2024-02-07T02:30:06.619Z","version":"WzQ5MzAyNywxOV0="} {"attributes":{"actions":[{"actionRef":"preconfigured:preconfigured-alert-history-es-index","actionTypeId":".index","group":"query matched","params":{"documents":["{\"@timestamp\":\"2023-11-20T10:19:30.521Z\",\"tags\":\"{{rule.tags}}\",\"rule\":{\"id\":\"{{rule.id}}\",\"name\":\"{{rule.name}}\",\"params\":{\"{{rule__type}}\":\"{{params}}\"},\"space\":\"{{rule.spaceId}}\",\"type\":\"{{rule.type}}\"},\"kibana\":{\"alert\":{\"id\":\"{{alert.id}}\",\"context\":{\"{{rule__type}}\":\"{{context}}\"},\"actionGroup\":\"{{alert.actionGroup}}\",\"actionGroupName\":\"{{alert.actionGroupName}}\"}},\"event\":{\"kind\":\"alert\"}}"]}}],"alertTypeId":".es-query","apiKey":null,"apiKeyOwner":null,"consumer":"alerts","createdAt":"2023-11-20T09:12:19.237Z","createdBy":"elastic","enabled":false,"executionStatus":{"error":null,"lastExecutionDate":"2024-02-07T08:28:08.400Z","status":"pending"},"legacyId":null,"meta":{"versionApiKeyLastmodified":"7.17.0"},"muteAll":false,"mutedInstanceIds":[],"name":"Successful SSH login","notifyWhen":"onActionGroupChange","params":{"esQuery":"{ \"query\": { \"bool\": { \"must\": [ \n { \"term\": { \"log.file.path\": \"/var/log/auth.log\" } },\n { \"term\": { \"event.outcome\": \"success\" }}\n ] } } }","index":["filebeat-*"],"size":100,"threshold":[1],"thresholdComparator":">=","timeField":"@timestamp","timeWindowSize":1,"timeWindowUnit":"m"},"schedule":{"interval":"1m"},"scheduledTaskId":null,"tags":[],"throttle":null,"updatedAt":"2024-02-07T02:27:19.537Z","updatedBy":"elastic"},"coreMigrationVersion":"7.17.0","id":"e79aaa90-8784-11ee-b9ba-89bbe73df7ff","migrationVersion":{"alert":"7.16.0"},"references":[],"sort":[1707294457367,232778],"type":"alert","updated_at":"2024-02-07T08:27:37.367Z","version":"WzQ5NTQ0MCwxOV0="} From 30740a60e6920d577d0b70e486482b99cac3779a Mon Sep 17 00:00:00 2001 From: "Al hel md. shahriar zaman" Date: Tue, 24 Dec 2024 14:10:10 +0600 Subject: [PATCH 36/37] refactored the alert error rule --- .../monitoring/elastalert/rules/log-error-alert.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/infrastructure/monitoring/elastalert/rules/log-error-alert.yaml b/infrastructure/monitoring/elastalert/rules/log-error-alert.yaml index 2b90c5e0a..fe10b84c8 100644 --- a/infrastructure/monitoring/elastalert/rules/log-error-alert.yaml +++ b/infrastructure/monitoring/elastalert/rules/log-error-alert.yaml @@ -6,7 +6,7 @@ # & Healthcare Disclaimer located at http://opencrvs.org/license. # # Copyright (C) The OpenCRVS Authors located at https://github.com/opencrvs/opencrvs-core/blob/master/AUTHORS. -name: 'log-alert' +name: 'log-error-alert' type: 'frequency' index: 'kibana-alert-history-default' is_enabled: true @@ -26,8 +26,8 @@ filter: should: - term: rule.name.keyword: - value: 'Error while backup' - minimum_should_match: 1 + value: 'Error while backup ' + alert: post2 http_post2_url: 'http://countryconfig:3040/email' From b07cb578fe6b43242b661527ed2a9d5869f8655c Mon Sep 17 00:00:00 2001 From: tareq89 Date: Thu, 26 Dec 2024 13:48:15 +0600 Subject: [PATCH 37/37] unused ccertificate template svgs removed --- .../Farajaland-birth-certificate-v2.svg | 166 ------------------ .../Farajaland-death-certificate-v2.svg | 154 ---------------- .../Farajaland-marriage-certificate-v2.svg | 165 ----------------- 3 files changed, 485 deletions(-) delete mode 100644 src/api/certificates/source/Farajaland-birth-certificate-v2.svg delete mode 100644 src/api/certificates/source/Farajaland-death-certificate-v2.svg delete mode 100644 src/api/certificates/source/Farajaland-marriage-certificate-v2.svg diff --git a/src/api/certificates/source/Farajaland-birth-certificate-v2.svg b/src/api/certificates/source/Farajaland-birth-certificate-v2.svg deleted file mode 100644 index b4dae9a0b..000000000 --- a/src/api/certificates/source/Farajaland-birth-certificate-v2.svg +++ /dev/null @@ -1,166 +0,0 @@ - - - -{{#ifCond printInAdvance '!==' true}}{{/ifCond}} - -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 loggedInUser.officeId 'name'}}
{{location loggedInUser.districtId 'name'}}, {{location loggedInUser.stateId 'name'}}, Farajaland - -Place of certification / Lieu de délivrance - - - - - - -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}} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/api/certificates/source/Farajaland-death-certificate-v2.svg b/src/api/certificates/source/Farajaland-death-certificate-v2.svg deleted file mode 100644 index 83a49e588..000000000 --- a/src/api/certificates/source/Farajaland-death-certificate-v2.svg +++ /dev/null @@ -1,154 +0,0 @@ - - - -{{#ifCond printInAdvance '!==' true}}{{/ifCond}} - -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 loggedInUser.officeId 'name'}}{{location loggedInUser.districtId 'name'}}, {{location loggedInUser.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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/api/certificates/source/Farajaland-marriage-certificate-v2.svg b/src/api/certificates/source/Farajaland-marriage-certificate-v2.svg deleted file mode 100644 index 7bd68e87b..000000000 --- a/src/api/certificates/source/Farajaland-marriage-certificate-v2.svg +++ /dev/null @@ -1,165 +0,0 @@ - - - - - -{{#ifCond printInAdvance '!==' true}}{{/ifCond}} - -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 loggedInUser.officeId 'name'}}{{location loggedInUser.districtId 'name'}}, {{location loggedInUser.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}} - - - -