Skip to content

Commit 34ce21d

Browse files
changed data source for supporting document types on name of SIN and review screens
1 parent e221ddf commit 34ce21d

File tree

7 files changed

+31
-75
lines changed

7 files changed

+31
-75
lines changed

frontend/app/.server/locales/protected-en.json

+1-22
Original file line numberDiff line numberDiff line change
@@ -58,17 +58,7 @@
5858
"current-status-in-canada": {
5959
"title": "Current status in Canada",
6060
"required": "Current status in Canada is required.",
61-
"invalid": "Please select Canadian Citizen born outside Canada.",
62-
"options": {
63-
"select-option": "Select option",
64-
"canadian-citizen-born-in-canada": "Canadian citizen born in Canada",
65-
"canadian-citizen-born-outside-canada": "Canadian citizen born outside Canada",
66-
"registered-indian-born-in-canada": "Registered Indian born in Canada",
67-
"registered-indian-born-outside-canada": "Registered Indian born outside Canada",
68-
"permanent-resident": "Permanent Resident",
69-
"temporary-resident": "Temporary Resident",
70-
"no-legal-status-in-canada": "No Legal Status in Canada"
71-
}
61+
"invalid": "Please select Canadian Citizen born outside Canada."
7262
},
7363
"document-type": {
7464
"title": "Document type",
@@ -208,17 +198,6 @@
208198
"description": "A supporting document containing the applicant's preferred name(s) is required if the primary identity document does not contain the applicant's preferred name(s), and the change does not comply with naming rules.",
209199
"docs-required": "Supporting document(s) required?",
210200
"doc-type": "Supporting document type"
211-
},
212-
"doc-types": {
213-
"marriage-document": "Marriage Certificate or Marriage Registration",
214-
"divorce-decree": "Divorce Decree",
215-
"name-change": "Certificate of legal change of name or Court Order",
216-
"adoption-order": "Adoption Order",
217-
"notarial-certificate": "Notarial Certificate (also called Notarial Adoption Certificate)",
218-
"resident-record": "Request to Amend Record of Landing or Confirmation of Permanent Resident",
219-
"replace-imm1442": "Replacement IMM1442 (WP, SP, or VR) with modification to name indicated in \"Remarks\"",
220-
"birth-certificate": "Birth certificate contains family name to be registered",
221-
"citizenship-certificate": "Certificate of Canadian Citizenship contains family name to be registered"
222201
}
223202
},
224203
"personal-information": {

frontend/app/.server/locales/protected-fr.json

+1-22
Original file line numberDiff line numberDiff line change
@@ -58,17 +58,7 @@
5858
"current-status-in-canada": {
5959
"title": "Statut actuel au Canadaa",
6060
"required": "Statut actuel au Canada est requis.",
61-
"invalid": "Veuillez sélectionner un citoyen canadien né en dehors du Canada.",
62-
"options": {
63-
"select-option": "Sélectionner une option",
64-
"canadian-citizen-born-in-canada": "Citoyen canadien né au Canada",
65-
"canadian-citizen-born-outside-canada": "Citoyen canadien né à l'extérieur du Canada",
66-
"registered-indian-born-in-canada": "Indien enregistré né au Canada",
67-
"registered-indian-born-outside-canada": "Indien enregistré né en dehors du Canada",
68-
"permanent-resident": "Résident permanent",
69-
"temporary-resident": "Résident temporaire",
70-
"no-legal-status-in-canada": "Aucun statut légal au Canada"
71-
}
61+
"invalid": "Veuillez sélectionner un citoyen canadien né en dehors du Canada."
7262
},
7363
"document-type": {
7464
"title": "Type de document",
@@ -209,17 +199,6 @@
209199
"description": "Un document justificatif contenant le(s) nom(s) préféré(s) du demandeur est requis si le document d'identité principal ne contient pas le(s) nom(s) préféré(s) du demandeur et que le changement n'est pas conforme aux règles de dénomination.",
210200
"docs-required": "Document(s) de support requis?",
211201
"doc-type": "Type de document de support"
212-
},
213-
"doc-types": {
214-
"marriage-document": "Certificat de mariage ou enregistrement de mariage",
215-
"divorce-decree": "Décret de divorce",
216-
"name-change": "Certificat de changement légal de nom ou ordonnance du tribunal",
217-
"adoption-order": "Ordonnance d'adoption",
218-
"notarial-certificate": "Certificat notarié (également appelé certificat notarié d'adoption)",
219-
"resident-record": "Demande de modification du dossier d'atterrissage ou confirmation de résident permanent",
220-
"replace-imm1442": "IMM1442 de remplacement (WP, SP, ou VR) avec modification du nom indiqué dans les «\u00a0Remarques\u00a0»",
221-
"birth-certificate": "Acte de naissance contenant le nom de famille à enregistrer",
222-
"citizenship-certificate": "Certificat de citoyenneté canadienne contenant le nom de famille à enregistrer"
223202
}
224203
},
225204
"personal-information": {

frontend/app/.server/resources/fsir_applicantsupportingdocumenttypes.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,12 @@
77
{
88
"value": 9900000000,
99
"labelEn": "Marriage Certificate or Marriage Registration",
10-
"labelFr": "Jugement de divorce"
10+
"labelFr": "Certificat de mariage ou enregistrement de mariage"
1111
},
1212
{
1313
"value": 9900000001,
1414
"labelEn": "Divorce Decree",
15-
"labelFr": "Citoyen canadien né à l'extérieur du Canada"
15+
"labelFr": "Jugement de divorce"
1616
},
1717
{
1818
"value": 9900000002,

frontend/app/routes/protected/person-case/current-name.tsx

+8-8
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@ import { useId, useState } from 'react';
33
import type { RouteHandle } from 'react-router';
44
import { data, redirect, useFetcher } from 'react-router';
55

6-
import type { ResourceKey } from 'i18next';
76
import { useTranslation } from 'react-i18next';
87
import * as v from 'valibot';
98

109
import type { Info, Route } from './+types/current-name';
1110

11+
import { applicantSupportingDocumentService } from '~/.server/domain/person-case/services';
1212
import { LogFactory } from '~/.server/logging';
1313
import { requireAuth } from '~/.server/utils/auth-utils';
1414
import { i18nRedirect } from '~/.server/utils/route-utils';
@@ -25,7 +25,7 @@ import { HttpStatusCodes } from '~/errors/http-status-codes';
2525
import { getTranslation } from '~/i18n-config.server';
2626
import { handle as parentHandle } from '~/routes/protected/person-case/layout';
2727
import { getStateRoute, loadMachineActor } from '~/routes/protected/person-case/state-machine.server';
28-
import { currentNameSchema, validCurrentNameDocTypes } from '~/routes/protected/person-case/validation.server';
28+
import { currentNameSchema } from '~/routes/protected/person-case/validation.server';
2929
import { getSingleKey } from '~/utils/i18n-utils';
3030
import { trimToUndefined } from '~/utils/string-utils';
3131

@@ -101,13 +101,13 @@ export async function action({ context, params, request }: Route.ActionArgs) {
101101
export async function loader({ context, request }: Route.LoaderArgs) {
102102
requireAuth(context.session, new URL(request.url), ['user']);
103103

104-
const { t } = await getTranslation(request, handle.i18nNamespace);
104+
const { lang, t } = await getTranslation(request, handle.i18nNamespace);
105105
const machineActor = loadMachineActor(context.session, request, 'name-info');
106106

107107
return {
108108
documentTitle: t('protected:primary-identity-document.page-title'),
109109
defaultFormValues: machineActor?.getSnapshot().context.currentNameInfo,
110-
validCurrentNameDocTypes: validCurrentNameDocTypes,
110+
localizedSupportingDocTypes: applicantSupportingDocumentService.getLocalizedApplicantSupportingDocumentType(lang),
111111
primaryDocName: {
112112
firstName: machineActor?.getSnapshot().context.primaryDocuments?.givenName,
113113
lastName: machineActor?.getSnapshot().context.primaryDocuments?.lastName,
@@ -162,14 +162,14 @@ export default function CurrentName({ loaderData, actionData, params }: Route.Co
162162
},
163163
];
164164

165-
const docTypes = loaderData.validCurrentNameDocTypes.map((value) => ({
166-
value: value,
167-
children: t(`protected:current-name.doc-types.${value}` as ResourceKey),
165+
const docTypes = loaderData.localizedSupportingDocTypes.map((doc) => ({
166+
value: doc.id,
167+
children: doc.name,
168168
defaultChecked:
169169
loaderData.defaultFormValues &&
170170
loaderData.defaultFormValues.preferredSameAsDocumentName === false &&
171171
loaderData.defaultFormValues.supportingDocuments.required === true
172-
? loaderData.defaultFormValues.supportingDocuments.documentTypes.includes(value)
172+
? loaderData.defaultFormValues.supportingDocuments.documentTypes.includes(doc.id)
173173
: false,
174174
}));
175175

frontend/app/routes/protected/person-case/review.tsx

+8
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import {
1414
languageCorrespondenceService,
1515
sinApplicationService,
1616
applicantStatusInCanadaService,
17+
applicantSupportingDocumentService,
1718
} from '~/.server/domain/person-case/services';
1819
import { serverEnvironment } from '~/.server/environment';
1920
import { LogFactory } from '~/.server/logging';
@@ -187,6 +188,13 @@ export async function loader({ context, request }: Route.LoaderArgs) {
187188
inPersonSinApplication.currentNameInfo.preferredSameAsDocumentName === true
188189
? inPersonSinApplication.primaryDocuments.lastName
189190
: inPersonSinApplication.currentNameInfo.lastName,
191+
supportingDocumentsNames:
192+
inPersonSinApplication.currentNameInfo.preferredSameAsDocumentName === false &&
193+
inPersonSinApplication.currentNameInfo.supportingDocuments.required === true
194+
? inPersonSinApplication.currentNameInfo.supportingDocuments.documentTypes.map(
195+
(doc) => applicantSupportingDocumentService.getLocalizedApplicantSupportingDocumentTypeById(doc, lang).name,
196+
)
197+
: undefined,
190198
},
191199
},
192200
};

frontend/app/routes/protected/person-case/validation.server.ts

+4-13
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import * as v from 'valibot';
44
import { applicantGenderService, languageCorrespondenceService } from '~/.server/domain/person-case/services';
55
import { getApplicantSecondaryDocumentChoices } from '~/.server/domain/person-case/services/applicant-secondary-document-service';
66
import { getApplicantHadSinOptions } from '~/.server/domain/person-case/services/applicant-sin-service';
7+
import { getApplicantSupportingDocumentTypes } from '~/.server/domain/person-case/services/applicant-supporting-document-service';
78
import { getApplicationSubmissionScenarios } from '~/.server/domain/person-case/services/application-submission-scenario';
89
import { getTypesOfApplicationToSubmit } from '~/.server/domain/person-case/services/application-type-service';
910
import { serverEnvironment } from '~/.server/environment';
@@ -130,18 +131,6 @@ export const contactInformationSchema = v.intersect([
130131
),
131132
]);
132133

133-
export const validCurrentNameDocTypes = [
134-
'marriage-document',
135-
'divorce-decree',
136-
'name-change',
137-
'adoption-order',
138-
'notarial-certificate',
139-
'resident-record',
140-
'replace-imm1442',
141-
'birth-certificate',
142-
'citizenship-certificate',
143-
] as const;
144-
145134
export const currentNameSchema = v.variant(
146135
'preferredSameAsDocumentName',
147136
[
@@ -182,7 +171,9 @@ export const currentNameSchema = v.variant(
182171
v.checkItems(
183172
(item, index, array) =>
184173
array.indexOf(item) === index &&
185-
validCurrentNameDocTypes.includes(item as (typeof validCurrentNameDocTypes)[number]),
174+
getApplicantSupportingDocumentTypes()
175+
.map((doc) => doc.id)
176+
.includes(item),
186177
'protected:current-name.supporting-error.invalid-error',
187178
),
188179
),

frontend/app/routes/protected/sin-application.tsx

+7-8
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,7 @@ interface PreferredNameDataProps {
131131
middleName?: string;
132132
lastName: string;
133133
supportingDocuments?: { required: boolean; documentTypes?: string[] };
134+
supportingDocumentsNames?: string[];
134135
};
135136
tabId?: string;
136137
}
@@ -163,15 +164,13 @@ function PreferredNameData({ data, tabId }: PreferredNameDataProps) {
163164
: t('protected:review.no')}
164165
</p>
165166
</DescriptionListItem>
166-
{data.preferredSameAsDocumentName === false && data.supportingDocuments?.required && (
167+
{data.supportingDocumentsNames && data.supportingDocumentsNames.length > 0 && (
167168
<DescriptionListItem className="py-3" term={t('protected:current-name.supporting-docs.title')}>
168-
{data.supportingDocuments.documentTypes && data.supportingDocuments.documentTypes.length > 0 && (
169-
<ul className="ml-6 list-disc">
170-
{data.supportingDocuments.documentTypes.map((value) => (
171-
<li key={value}>{t(`protected:current-name.doc-types.${value}` as ResourceKey)}</li>
172-
))}
173-
</ul>
174-
)}
169+
<ul className="ml-6 list-disc">
170+
{data.supportingDocumentsNames.map((name) => (
171+
<li key={name}>{name}</li>
172+
))}
173+
</ul>
175174
</DescriptionListItem>
176175
)}
177176
</div>

0 commit comments

Comments
 (0)