Passed
Push — feature/experience-form-modals ( 7402c2...37703b )
by Tristan
03:49
created

resources/assets/js/models/localizedConstants.tsx   A

Complexity

Total Complexity 7
Complexity/F 0

Size

Lines of Code 1136
Function Count 0

Duplication

Duplicated Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
wmc 7
eloc 925
mnd 7
bc 7
fnc 0
dl 0
loc 1136
bpm 0
cpm 0
noi 0
c 0
b 0
f 0
rs 9.675
1
/* eslint camelcase: "off", @typescript-eslint/camelcase: "off" */
2
import { defineMessages, MessageDescriptor } from "react-intl";
3
import {
4
  AssessmentTypeId,
5
  AssessmentTypeIdValues,
6
  CriteriaTypeId,
7
  CriteriaTypeIdValues,
8
  SkillLevelId,
9
  SkillLevelIdValues,
10
  SkillTypeId,
11
  SkillTypeIdValues,
12
  ProvinceId,
13
  SecurityClearanceId,
14
  LanguageRequirementId,
15
  FrequencyId,
16
  OvertimeRequirementId,
17
  TravelRequirementId,
18
  ClassificationId,
19
  LocationId,
20
  ResponseScreeningBuckets as ResponseBuckets,
21
} from "./lookupConstants";
22
import { getOrThrowError } from "../helpers/queries";
23
24
const skillLevelDescriptions = defineMessages({
25
  hardBasic: {
26
    id: "skillLevel.hard.basic.description",
27
    defaultMessage:
28
      "You have the ability to accomplish basic tasks with steady supervision and clear direction. The tasks you’re assigned are clear and don’t involve significant complexity. Their impact is usually locally felt. As you advance in this category, you should be developing the ability to accomplish tasks of moderate complexity with steady supervision. You will also need to be able to accomplish basic tasks with little or no supervision. This level is usually associated with tasks that form the bulk of the work for lower level positions, such as junior analysts or entry level developers.",
29
    description: "Description of basic hard skill level.",
30
  },
31
  hardIntermediate: {
32
    id: "skillLevel.hard.intermediate.description",
33
    defaultMessage:
34
      "You have the ability to accomplish tasks of moderate complexity or moderate impact with supervision. The approach to the tasks, and how they are delivered, is determined by the supervisor. You contribute input and advice. You are able to advance the task, even in the face of small to moderate hurdles and complications. As you advance in this category, you should be developing the ability to accomplish tasks of significant complexity or larger impact with steady supervision. You will also need to be able to accomplish tasks of moderate complexity or impact with little or no supervision. This level is usually associated with tasks that form the bulk of the work for mid-level positions, such as analysts or developers.",
35
    description: "Description of intermediate skill level.",
36
  },
37
  hardAdvanced: {
38
    id: "skillLevel.hard.advanced.description",
39
    defaultMessage:
40
      "You have the ability to accomplish tasks of significant complexity or impact with supervision. You provide advice and input on the approach to the tasks, and how they are delivered, for the supervisor’s consideration. You are able to advance the task, even in the face of moderate to large hurdles and complications. As you advance in this category, you should be developing the ability to accomplish tasks of significant complexity or larger impact with only light levels of supervision, where you are effectively the lead on the initiative. You may also take on a role of training others in this skills set or take on a light supervisory role for those at lower levels. This level is usually associated with tasks that form the bulk of the work for higher level positions, such as senior analysts or senior developers.",
41
    description: "Description of advanced hard skill level.",
42
  },
43
  hardExpert: {
44
    id: "skillLevel.hard.expert.description",
45
    defaultMessage:
46
      "You have the ability to accomplish tasks of significant complexity or impact, where you call the shots and answer to the organization’s senior management for your decisions. You bring forward the tasks, the approach and the delivery plan for senior management consideration. You often supervise others (individuals or teams) in delivering tasks of high complexity or system wide impact. You are able to advance these tasks, even in the face of significant unforeseen hurdles and complications. As you advance in this category, you should be developing the ability to assess others at more junior levels, becoming able to clearly identify the difference between beginner, intermediate and advanced tasks. You should be able to build teams, set direction and provide supervision. This level is usually associated with tasks that form the bulk of the work for management and executive level positions.",
47
    description: "Description of expert hard skill level.",
48
  },
49
  softBasic: {
50
    id: "skillLevel.soft.basic.description",
51
    defaultMessage:
52
      "You’re working on acquiring this skill or attribute. You are able to demonstrate it under favourable conditions (low stress, minimal difficulty) and can apply it in a work context intermittently.",
53
    description: "Description of soft basic skill level.",
54
  },
55
  softIntermediate: {
56
    id: "skillLevel.soft.intermediate.description",
57
    defaultMessage:
58
      "You’re able to consistently demonstrate this skill or attribute in the workplace, including under conditions of low-to-moderate stress or difficulty. Your peers and supervisors are able to attest to the fact that you have been able to demonstrate this skill or attribute on a regular basis.",
59
    description: "Description of soft intermediate skill level.",
60
  },
61
  softAdvanced: {
62
    id: "skillLevel.soft.advanced.description",
63
    defaultMessage:
64
      "You’re able to consistently demonstrate this skill or attribute in the workplace, including under conditions of high stress or difficulty. Your peers and supervisors recognize this as a strength you demonstrate in the workplace.",
65
    description: "Description of soft advanced skill level.",
66
  },
67
  softExpert: {
68
    id: "skillLevel.soft.expert.description",
69
    defaultMessage:
70
      "This is a foundational part of who you are. You consistently demonstrate this skill or attribute, even under conditions of extreme stress or difficulty. Your peers and supervisors recognize this as a significant strength you demonstrate in the workplace, providing an example to others.",
71
    description: "Description of expert soft skill level.",
72
  },
73
  asset: {
74
    id: "skillLevel.asset.description",
75
    defaultMessage:
76
      "This skill isn't required for the employee to do the job, but it provides an added benefit to their skillset and will improve the speed or effectiveness of their work.",
77
    description: "Description of what it means to be an 'Asset' skill.",
78
  },
79
});
80
81
const skillLevelNames = defineMessages({
82
  hardBasic: {
83
    id: "skillLevel.hard.basic.name",
84
    defaultMessage: "Beginner",
85
    description: "Single-word descriptor of basic hard skill level.",
86
  },
87
  hardIntermediate: {
88
    id: "skillLevel.hard.intermediate.name",
89
    defaultMessage: "Intermediate",
90
    description: "Single-word descriptor of intermediate hard skill level.",
91
  },
92
  hardAdvanced: {
93
    id: "skillLevel.hard.advanced.name",
94
    defaultMessage: "Advanced",
95
    description: "Single-word descriptor of advanced hard skill level.",
96
  },
97
  hardExpert: {
98
    id: "skillLevel.hard.expert.name",
99
    defaultMessage: "Expert",
100
    description: "Single-word descriptor of expert hard skill level.",
101
  },
102
  softBasic: {
103
    id: "skillLevel.soft.basic.name",
104
    defaultMessage: "In Early Development",
105
    description: "Single-word descriptor of soft basic skill level.",
106
  },
107
  softIntermediate: {
108
    id: "skillLevel.soft.intermediate.name",
109
    defaultMessage: "Moderately in Evidence",
110
    description: "Single-word descriptor of soft intermediate skill level.",
111
  },
112
  softAdvanced: {
113
    id: "skillLevel.soft.advanced.name",
114
    defaultMessage: "Strongly in Evidence",
115
    description: "Single-word descriptor of soft advanced skill level.",
116
  },
117
  softExpert: {
118
    id: "skillLevel.soft.expert.name",
119
    defaultMessage: "Deep Level Demonstration",
120
    description: "Single-word descriptor of soft expert skill level.",
121
  },
122
  asset: {
123
    id: "skillLevel.asset.name",
124
    defaultMessage: "Asset / No Level Required",
125
    description: "Name for 'Asset' skills.",
126
  },
127
});
128
129
const skillLevelL10n = (
130
  skillLevelId: number,
131
  skillTypeId: number,
132
  l10nObj: Record<
133
    string,
134
    {
135
      id: string;
136
      defaultMessage: string;
137
      description: string;
138
    }
139
  >,
140
): MessageDescriptor => {
141
  if (!SkillLevelIdValues.includes(skillLevelId)) {
142
    throw new Error("invalid SkillLevelIdValue");
143
  }
144
  if (!SkillTypeIdValues.includes(skillTypeId)) {
145
    throw new Error("invalid SkillTypeIdValue");
146
  }
147
  const basicKey = SkillLevelId.Basic.toString();
148
  const intermediateKey = SkillLevelId.Intermediate.toString();
149
  const advancedKey = SkillLevelId.Advanced.toString();
150
  const expertKey = SkillLevelId.Expert.toString();
151
  return {
152
    [SkillTypeId.Hard.toString()]: {
153
      [basicKey]: l10nObj.hardBasic,
154
      [intermediateKey]: l10nObj.hardIntermediate,
155
      [advancedKey]: l10nObj.hardAdvanced,
156
      [expertKey]: l10nObj.hardExpert,
157
    },
158
    [SkillTypeId.Soft.toString()]: {
159
      [basicKey]: l10nObj.softBasic,
160
      [intermediateKey]: l10nObj.softIntermediate,
161
      [advancedKey]: l10nObj.softAdvanced,
162
      [expertKey]: l10nObj.softExpert,
163
    },
164
  }[skillTypeId.toString()][skillLevelId.toString()];
165
};
166
167
export const skillLevelDescription = (
168
  skillLevelId: number,
169
  skillTypeId: number,
170
): MessageDescriptor =>
171
  skillLevelL10n(skillLevelId, skillTypeId, skillLevelDescriptions);
172
173
export const skillLevelName = (
174
  skillLevelId: number,
175
  skillTypeId: number,
176
): MessageDescriptor =>
177
  skillLevelL10n(skillLevelId, skillTypeId, skillLevelNames);
178
179
const assessmentTypes = defineMessages({
180
  narrativeAssessment: {
181
    id: "assessmentType.narrativeAssessment",
182
    defaultMessage: "Narrative Review",
183
    description: "Title of an assessment type.",
184
  },
185
  applicationScreeningQuestion: {
186
    id: "assessmentType.applicationScreeningQuestion",
187
    defaultMessage: "Application Screening Question",
188
    description: "Title of an assessment type.",
189
  },
190
  groupTest: {
191
    id: "assessmentType.groupTest",
192
    defaultMessage: "Group Test",
193
    description: "Title of an assessment type.",
194
  },
195
  informalPhoneConversation: {
196
    id: "assessmentType.informalPhoneConversation",
197
    defaultMessage: "Informal Phone Conversation",
198
    description: "Title of an assessment type.",
199
  },
200
  interview: {
201
    id: "assessmentType.interview",
202
    defaultMessage: "Interview",
203
    description: "Title of an assessment type.",
204
  },
205
  onlineExam: {
206
    id: "assessmentType.onlineExam",
207
    defaultMessage: "Online Exam",
208
    description: "Title of an assessment type.",
209
  },
210
  onSiteExam: {
211
    id: "assessmentType.onSiteExam",
212
    defaultMessage: "On-Site Exam",
213
    description: "Title of an assessment type.",
214
  },
215
  takeHomeExam: {
216
    id: "assessmentType.takeHomeExam",
217
    defaultMessage: "Take Home Exam",
218
    description: "Title of an assessment type.",
219
  },
220
  portfolioReview: {
221
    id: "assessmentType.portfolioReview",
222
    defaultMessage: "Portfolio Review",
223
    description: "Title of an assessment type.",
224
  },
225
  referenceCheck: {
226
    id: "assessmentType.referenceCheck",
227
    defaultMessage: "Reference Check",
228
    description: "Title of an assessment type.",
229
  },
230
  seriousGames: {
231
    id: "assessmentType.seriousGames",
232
    defaultMessage: "Serious Games",
233
    description: "Title of an assessment type.",
234
  },
235
});
236
237
export const assetSkillName = (): MessageDescriptor => skillLevelNames.asset;
238
export const assetSkillDescription = (): MessageDescriptor =>
239
  skillLevelDescriptions.asset;
240
241
export const assessmentType = (assessmentTypeId: number): MessageDescriptor => {
242
  if (!AssessmentTypeIdValues.includes(assessmentTypeId)) {
243
    throw new Error("invalid AssessmentTypeValue");
244
  }
245
  return {
246
    [AssessmentTypeId.ApplicationScreeningQuestion]:
247
      assessmentTypes.applicationScreeningQuestion,
248
    [AssessmentTypeId.GroupTest]: assessmentTypes.groupTest,
249
    [AssessmentTypeId.InformalPhoneConversation]:
250
      assessmentTypes.informalPhoneConversation,
251
    [AssessmentTypeId.Interview]: assessmentTypes.interview,
252
    [AssessmentTypeId.NarrativeAssessment]: assessmentTypes.narrativeAssessment,
253
    [AssessmentTypeId.OnSiteExam]: assessmentTypes.onSiteExam,
254
    [AssessmentTypeId.OnlineExam]: assessmentTypes.onlineExam,
255
    [AssessmentTypeId.PortfolioReview]: assessmentTypes.portfolioReview,
256
    [AssessmentTypeId.ReferenceCheck]: assessmentTypes.referenceCheck,
257
    [AssessmentTypeId.SeriousGames]: assessmentTypes.seriousGames,
258
    [AssessmentTypeId.TakeHomeExam]: assessmentTypes.takeHomeExam,
259
  }[assessmentTypeId.toString()];
260
};
261
262
const criteriaTypes = defineMessages({
263
  asset: {
264
    id: "criteriaType.asset",
265
    defaultMessage: "Asset",
266
    description: "Title of an asset criteria type.",
267
  },
268
  essential: {
269
    id: "criteriaType.essential",
270
    defaultMessage: "Essential",
271
    description: "Title of an essential criteria type.",
272
  },
273
});
274
275
export const criteriaType = (criteriaTypeId: number): MessageDescriptor => {
276
  if (!CriteriaTypeIdValues.includes(criteriaTypeId)) {
277
    throw new Error("invalid CriteriaTypeValue");
278
  }
279
  return {
280
    [CriteriaTypeId.Asset]: criteriaTypes.asset,
281
    [CriteriaTypeId.Essential]: criteriaTypes.essential,
282
  }[criteriaTypeId.toString()];
283
};
284
285
const assessmentTypeDescriptions = defineMessages({
286
  narrativeAssessment: {
287
    id: "assessmentType.narrativeAssessment.description",
288
    defaultMessage:
289
      "This is a description requested during the application process, in which applicants to self-identify and describe their experience and level of expertise with a skill.",
290
    description:
291
      "Description of an assessment type, to help a manager understand when to use it.",
292
  },
293
  applicationScreeningQuestion: {
294
    id: "assessmentType.applicationScreeningQuestion.description",
295
    defaultMessage:
296
      "These questions appear in the application form, and are submitted through Talent Cloud, they allow a first glance at the applicant’s understanding, process, knowledge, or cultural fit for the position.",
297
    description:
298
      "Description of an assessment type, to help a manager understand when to use it.",
299
  },
300
  groupTest: {
301
    id: "assessmentType.groupTest.description",
302
    defaultMessage:
303
      "Applicants perform this test in real-time in conjunction with other applicants, team members, or facilitators, to determine their skill prowess, team communication, and performance in a collaborative environment.",
304
    description:
305
      "Description of an assessment type, to help a manager understand when to use it.",
306
  },
307
  informalPhoneConversation: {
308
    id: "assessmentType.informalPhoneConversation.description",
309
    defaultMessage:
310
      "A loose structure chat between a member of the hiring board and an applicant, aimed at discovering the applicant’s knowledge, aptitudes, or personality traits, conversations may vary between applicants.",
311
    description:
312
      "Description of an assessment type, to help a manager understand when to use it.",
313
  },
314
  interview: {
315
    id: "assessmentType.interview.description",
316
    defaultMessage:
317
      "A formal question-and-answer examination performed in real-time between the hiring-board and an applicant. Questions are aimed at assessing skill expertise, level, and approach. Each question is crafted beforehand and follows the same structure between all interviewed applicants.",
318
    description:
319
      "Description of an assessment type, to help a manager understand when to use it.",
320
  },
321
  onlineExam: {
322
    id: "assessmentType.onlineExam.description",
323
    defaultMessage:
324
      "Prepared examination that does not require supervision, and can be performed from any location through internet access, with a defined time-frame for completion.",
325
    description:
326
      "Description of an assessment type, to help a manager understand when to use it.",
327
  },
328
  onSiteExam: {
329
    id: "assessmentType.onSiteExam.description",
330
    defaultMessage:
331
      "Prepared examination that requires the applicant to perform a test at a specific location under supervision, aimed at assessing skill expertise and technique.",
332
    description:
333
      "Description of an assessment type, to help a manager understand when to use it.",
334
  },
335
  takeHomeExam: {
336
    id: "assessmentType.takeHomeExam.description",
337
    defaultMessage:
338
      "Applicants receive a physical package containing the assessment tools, they complete the assessment at their own leisure and at their preferred location without supervision, and must return the materials before a specific deadline.",
339
    description:
340
      "Description of an assessment type, to help a manager understand when to use it.",
341
  },
342
  portfolioReview: {
343
    id: "assessmentType.portfolioReview.description",
344
    defaultMessage:
345
      "During the application process, applicants provide access to samples of their work to exhibit their skill level, and back-up their skill claims. ",
346
    description:
347
      "Description of an assessment type, to help a manager understand when to use it.",
348
  },
349
  referenceCheck: {
350
    id: "assessmentType.referenceCheck.description",
351
    defaultMessage:
352
      "During the application process, applicants provide contact information to an acquaintance who can validate and confirm their skill expertise, knowledge or aptitude.",
353
    description:
354
      "Description of an assessment type, to help a manager understand when to use it.",
355
  },
356
  seriousGames: {
357
    id: "assessmentType.seriousGames.description",
358
    defaultMessage:
359
      "Test involving the use of games to explore a candidate’s communication skills, resilience, emotional intelligence, among many other soft skills.",
360
    description:
361
      "Description of an assessment type, to help a manager understand when to use it.",
362
  },
363
});
364
365
export const assessmentTypeDescription = (
366
  assessmentTypeId: number,
367
): MessageDescriptor => {
368
  if (!AssessmentTypeIdValues.includes(assessmentTypeId)) {
369
    throw new Error("invalid AssessmentTypeValue");
370
  }
371
  return {
372
    [AssessmentTypeId.ApplicationScreeningQuestion]:
373
      assessmentTypeDescriptions.applicationScreeningQuestion,
374
    [AssessmentTypeId.GroupTest]: assessmentTypeDescriptions.groupTest,
375
    [AssessmentTypeId.InformalPhoneConversation]:
376
      assessmentTypeDescriptions.informalPhoneConversation,
377
    [AssessmentTypeId.Interview]: assessmentTypeDescriptions.interview,
378
    [AssessmentTypeId.NarrativeAssessment]:
379
      assessmentTypeDescriptions.narrativeAssessment,
380
    [AssessmentTypeId.OnSiteExam]: assessmentTypeDescriptions.onSiteExam,
381
    [AssessmentTypeId.OnlineExam]: assessmentTypeDescriptions.onlineExam,
382
    [AssessmentTypeId.PortfolioReview]:
383
      assessmentTypeDescriptions.portfolioReview,
384
    [AssessmentTypeId.ReferenceCheck]:
385
      assessmentTypeDescriptions.referenceCheck,
386
    [AssessmentTypeId.SeriousGames]: assessmentTypeDescriptions.seriousGames,
387
    [AssessmentTypeId.TakeHomeExam]: assessmentTypeDescriptions.takeHomeExam,
388
  }[assessmentTypeId];
389
};
390
391
const standardAssessmentText = defineMessages({
392
  narrativeReviewQuestion: {
393
    id: "assessmentType.narrativeReview.standardQuestion",
394
    defaultMessage:
395
      "Narrative Review of skill includes all descriptions added by the applicant in their application.",
396
    description:
397
      "Description which replaces 'interview question' for the Narrative Review assessment type.",
398
  },
399
  narrativeReviewAnswer: {
400
    id: "assessmentType.narrativeReview.standardAnswer",
401
    defaultMessage:
402
      "The provided description contains sufficient evidence to advance this candidate to the next screening steps.",
403
    description:
404
      "Standard evalutation statement which replaces 'expected answer' for all skills under the Narrative Review assessment type.",
405
  },
406
});
407
408
const provinceNames = defineMessages({
409
  [ProvinceId.AB]: {
410
    id: "province.ab",
411
    defaultMessage: "Alberta",
412
  },
413
  [ProvinceId.BC]: {
414
    id: "province.bc",
415
    defaultMessage: "British Columbia",
416
  },
417
  [ProvinceId.MB]: {
418
    id: "province.mb",
419
    defaultMessage: "Manitoba",
420
  },
421
  [ProvinceId.NL]: {
422
    id: "province.nl",
423
    defaultMessage: "Newfoundland and Labrador",
424
  },
425
  [ProvinceId.NB]: {
426
    id: "province.nb",
427
    defaultMessage: "New Brunswick",
428
  },
429
  [ProvinceId.NS]: {
430
    id: "province.ns",
431
    defaultMessage: "Nova Scotia",
432
  },
433
  [ProvinceId.NU]: {
434
    id: "province.nu",
435
    defaultMessage: "Nunavut",
436
  },
437
  [ProvinceId.NT]: {
438
    id: "province.nt",
439
    defaultMessage: "Northwest Territories",
440
  },
441
  [ProvinceId.ON]: {
442
    id: "province.on",
443
    defaultMessage: "Ontario",
444
  },
445
  [ProvinceId.PE]: {
446
    id: "province.pe",
447
    defaultMessage: "Prince Edward Island",
448
  },
449
  [ProvinceId.QC]: {
450
    id: "province.qc",
451
    defaultMessage: "Quebec",
452
  },
453
  [ProvinceId.SK]: {
454
    id: "province.sk",
455
    defaultMessage: "Saskatchewan",
456
  },
457
  [ProvinceId.YT]: {
458
    id: "province.yk",
459
    defaultMessage: "Yukon",
460
  },
461
});
462
463
export const provinceName = (provinceId: number): MessageDescriptor =>
464
  getOrThrowError(provinceNames, provinceId, "invalid ProvinceId");
465
466
const provinceAbreviations = defineMessages({
467
  [ProvinceId.AB]: {
468
    id: "province.ab.abreviation",
469
    defaultMessage: "Alb.",
470
  },
471
  [ProvinceId.BC]: {
472
    id: "province.bc.abreviation",
473
    defaultMessage: "B.C.",
474
  },
475
  [ProvinceId.MB]: {
476
    id: "province.mb.abreviation",
477
    defaultMessage: "Man.",
478
  },
479
  [ProvinceId.NL]: {
480
    id: "province.nl.abreviation",
481
    defaultMessage: "N.L.",
482
  },
483
  [ProvinceId.NB]: {
484
    id: "province.nb.abreviation",
485
    defaultMessage: "N.B.",
486
  },
487
  [ProvinceId.NS]: {
488
    id: "province.ns.abreviation",
489
    defaultMessage: "N.S.",
490
  },
491
  [ProvinceId.NU]: {
492
    id: "province.nu.abreviation",
493
    defaultMessage: "Nvt.",
494
  },
495
  [ProvinceId.NT]: {
496
    id: "province.nt.abreviation",
497
    defaultMessage: "N.W.T.",
498
  },
499
  [ProvinceId.ON]: {
500
    id: "province.on.abreviation",
501
    defaultMessage: "Ont.",
502
  },
503
  [ProvinceId.PE]: {
504
    id: "province.pe.abreviation",
505
    defaultMessage: "P.E.I.",
506
  },
507
  [ProvinceId.QC]: {
508
    id: "province.qc.abreviation",
509
    defaultMessage: "Que.",
510
  },
511
  [ProvinceId.SK]: {
512
    id: "province.sk.abreviation",
513
    defaultMessage: "Sask.",
514
  },
515
  [ProvinceId.YT]: {
516
    id: "province.yk.abreviation",
517
    defaultMessage: "Y.T.",
518
  },
519
});
520
521
export const provinceAbreviation = (provinceId: number): MessageDescriptor =>
522
  getOrThrowError(provinceAbreviations, provinceId, "invalid ProvinceId");
523
524
const securityClearances = defineMessages({
525
  [SecurityClearanceId.reliability]: {
526
    id: "securityClearance.reliability",
527
    defaultMessage: "Reliability",
528
  },
529
  [SecurityClearanceId.secret]: {
530
    id: "securityClearance.secret",
531
    defaultMessage: "Secret",
532
  },
533
  [SecurityClearanceId.topSecret]: {
534
    id: "securityClearance.topSecret",
535
    defaultMessage: "Top Secret",
536
  },
537
});
538
539
export const securityClearance = (
540
  securityClearanceId: number,
541
): MessageDescriptor =>
542
  getOrThrowError(
543
    securityClearances,
544
    securityClearanceId,
545
    "invalid security clearance id",
546
  );
547
548
const languageRequirements = defineMessages({
549
  [LanguageRequirementId.english]: {
550
    id: "languageRequirement.english",
551
    defaultMessage: "English Essential",
552
  },
553
  [LanguageRequirementId.french]: {
554
    id: "languageRequirement.french",
555
    defaultMessage: "French Essential",
556
  },
557
  [LanguageRequirementId.bilingualIntermediate]: {
558
    id: "languageRequirement.bilingualIntermediate",
559
    defaultMessage: "Bilingual - Intermediate",
560
  },
561
  [LanguageRequirementId.bilingualAdvanced]: {
562
    id: "languageRequirement.bilingualAdvanced",
563
    defaultMessage: "Bilingual - Advanced",
564
  },
565
  [LanguageRequirementId.englishOrFrench]: {
566
    id: "languageRequirement.englishOrFrench",
567
    defaultMessage: "English or French",
568
  },
569
});
570
571
export const languageRequirement = (
572
  languageRequirementId: number,
573
): MessageDescriptor =>
574
  getOrThrowError(
575
    languageRequirements,
576
    languageRequirementId,
577
    "invalid LanguageRequirementId",
578
  );
579
580
const languageRequirementDescriptions = defineMessages({
581
  [LanguageRequirementId.english]: {
582
    id: "languageRequirement.description.english",
583
    defaultMessage:
584
      "This position requires fluency in English in both written and verbal communication. As part of the assessment of your language abilities, the hiring manager may ask you to complete some assessment steps in English, such as interview questions or an exam.",
585
  },
586
  [LanguageRequirementId.french]: {
587
    id: "languageRequirement.description.french",
588
    defaultMessage:
589
      "This position requires fluency in French in both written and verbal communication. As part of the assessment of your language abilities, the hiring manager may ask you to complete some assessment steps in French, such as interview questions or an exam.",
590
  },
591
  [LanguageRequirementId.bilingualIntermediate]: {
592
    id: "languageRequirement.description.bilingualIntermediate",
593
    // TODO: turn "Public Service Commission of Canada" into a link to https://www.canada.ca/en/public-service-commission/jobs/services/gc-jobs/information-candidates/language-requirements-candidates.html
594
    defaultMessage:
595
      "This position requires working knowledge of both French and English. This means that you can take on job duties in either French or English, and you have intermediate reading, writing and verbal communication skills in both official languages. As part of this selection process, your language abilities will be tested by the Public Service Commission of Canada.",
596
  },
597
  [LanguageRequirementId.bilingualAdvanced]: {
598
    id: "languageRequirement.description.bilingualAdvanced",
599
    // TODO: turn "Public Service Commission of Canada" into a link to https://www.canada.ca/en/public-service-commission/jobs/services/gc-jobs/information-candidates/language-requirements-candidates.html
600
    defaultMessage:
601
      "This position requires advanced knowledge of both French and English. This means that you can take on job duties in either French or English, and you have strong reading, writing and verbal communication skills in both official languages. As part of this selection process, your language abilities will be tested by the Public Service Commission of Canada Public Service Commission of Canada.",
602
  },
603
  [LanguageRequirementId.englishOrFrench]: {
604
    id: "languageRequirement.description.englishOrFrench",
605
    defaultMessage:
606
      "For this position, you meet the language requirements if you have strong reading, writing and verbal communication skills in either English or French, or both (bilingual).",
607
  },
608
});
609
610
export const languageRequirementDescription = (
611
  languageRequirementId: number,
612
): MessageDescriptor =>
613
  getOrThrowError(
614
    languageRequirementDescriptions,
615
    languageRequirementId,
616
    "invalid LanguageRequirementId",
617
  );
618
619
const languageRequirementContexts = defineMessages({
620
  basic: {
621
    id: "languageRequirement.context.basic",
622
    defaultMessage:
623
      "You can submit this initial application in either official language of your choice (English or French).",
624
  },
625
  expanded: {
626
    id: "languageRequirement.context.expanded",
627
    defaultMessage:
628
      "You can complete all other steps of this assessment process in the official language of your choice, including the initial application, interview, exam and any other evaluation components.",
629
  },
630
});
631
632
export const languageRequirementContext = (
633
  languageRequirementId: number,
634
): MessageDescriptor => {
635
  switch (languageRequirementId) {
636
    case LanguageRequirementId.bilingualIntermediate:
637
    case LanguageRequirementId.bilingualAdvanced:
638
      return languageRequirementContexts.expanded;
639
640
    case LanguageRequirementId.englishOrFrench:
641
    case LanguageRequirementId.english:
642
    case LanguageRequirementId.french:
643
    default:
644
      return languageRequirementContexts.basic;
645
  }
646
};
647
648
export const narrativeReviewStandardQuestion = (): MessageDescriptor =>
649
  standardAssessmentText.narrativeReviewQuestion;
650
651
export const narrativeReviewStandardAnswer = (): MessageDescriptor =>
652
  standardAssessmentText.narrativeReviewAnswer;
653
654
const frequencyMessages = defineMessages({
655
  [FrequencyId.always]: {
656
    id: "jobBuilder.details.frequencyAlwaysLabel",
657
    defaultMessage: "Almost Always",
658
    description: "The form label displayed on 'always' frequency options.",
659
  },
660
  [FrequencyId.often]: {
661
    id: "jobBuilder.details.frequencyFrequentlyLabel",
662
    defaultMessage: "Frequently",
663
    description: "The form label displayed on 'frequently' frequency options.",
664
  },
665
  [FrequencyId.sometimes]: {
666
    id: "jobBuilder.details.frequencySometimesLabel",
667
    defaultMessage: "Sometimes",
668
    description: "The form label displayed on 'sometimes' frequency options.",
669
  },
670
  [FrequencyId.rarely]: {
671
    id: "jobBuilder.details.frequencyOccasionallyLabel",
672
    defaultMessage: "Occasionally",
673
    description:
674
      "The form label displayed on 'occasionally' frequency options.",
675
  },
676
  [FrequencyId.never]: {
677
    id: "jobBuilder.details.frequencyNeverLabel",
678
    defaultMessage: "Never",
679
    description: "The form label displayed on 'never' frequency options.",
680
  },
681
});
682
683
export const frequencyName = (frequencyId: number): MessageDescriptor =>
684
  getOrThrowError(frequencyMessages, frequencyId, "invalid FrequencyId");
685
686
const overtimeRequirmentDescriptions = defineMessages({
687
  [OvertimeRequirementId.frequently]: {
688
    id: "jobBuilder.details.overtimeFrequentlyLabel",
689
    defaultMessage: "Yes, overtime is frequently required for the position.",
690
    description: "The form label displayed on 'frequently' overtime options",
691
  },
692
  [OvertimeRequirementId.available]: {
693
    id: "jobBuilder.details.overtimeOpportunitiesAvailableLabel",
694
    defaultMessage:
695
      "Yes, overtime opportunities are available for those that are interested.",
696
    description:
697
      "The form label displayed on 'overtime opportunities available' overtime options",
698
  },
699
  [OvertimeRequirementId.none]: {
700
    id: "jobBuilder.details.overtimeNoneRequiredLabel",
701
    defaultMessage: "No, overtime is not required for the position.",
702
    description:
703
      "The form label displayed on 'no overtime required' overtime options",
704
  },
705
});
706
707
export const overtimeRequirementDescription = (
708
  overtimeRequirementId: number,
709
): MessageDescriptor =>
710
  getOrThrowError(
711
    overtimeRequirmentDescriptions,
712
    overtimeRequirementId,
713
    "invalid OvertimeRequirementId",
714
  );
715
716
const travelRequirementDescriptions = defineMessages({
717
  [TravelRequirementId.frequently]: {
718
    id: "jobBuilder.details.travelFrequentlyLabel",
719
    defaultMessage: "Yes, travel is frequently required for the position.",
720
    description: "The form label displayed on 'frequently' travel options",
721
  },
722
  [TravelRequirementId.available]: {
723
    id: "jobBuilder.details.travelOpportunitiesAvailableLabel",
724
    defaultMessage:
725
      "Yes, travel opportunities are available for those that are interested.",
726
    description:
727
      "The form label displayed on 'travel opportunities available' travel options",
728
  },
729
  [TravelRequirementId.none]: {
730
    id: "jobBuilder.details.travelNoneRequiredLabel",
731
    defaultMessage: "No, travel is not required for the position.",
732
    description:
733
      "The form label displayed on 'no travel required' travel options",
734
  },
735
});
736
737
export const travelRequirementDescription = (
738
  travelRequirementId: number,
739
): MessageDescriptor =>
740
  getOrThrowError(
741
    travelRequirementDescriptions,
742
    travelRequirementId,
743
    "invalid TravelRequirementId",
744
  );
745
746
export const classificationCodes = defineMessages({
747
  [ClassificationId.AS]: {
748
    id: "jobBuilder.details.classificationOptions.AS",
749
    defaultMessage: "AS - Administrative Services",
750
    description: "Job Classification from list of Classifications",
751
  },
752
  [ClassificationId.BI]: {
753
    id: "jobBuilder.details.classificationOptions.BI",
754
    defaultMessage: "BI - Biological Sciences",
755
    description: "Job Classification from list of Classifications",
756
  },
757
  [ClassificationId.CO]: {
758
    id: "jobBuilder.details.classificationOptions.CO",
759
    defaultMessage: "CO - Commerce",
760
    description: "Job Classification from list of Classifications",
761
  },
762
  [ClassificationId.CR]: {
763
    id: "jobBuilder.details.classificationOptions.CR",
764
    defaultMessage: "CR - Clerical and Regulatory",
765
    description: "Job Classification from list of Classifications",
766
  },
767
  [ClassificationId.CS]: {
768
    id: "jobBuilder.details.classificationOptions.CS",
769
    defaultMessage: "CS - Computer Systems",
770
    description: "Job Classification from list of Classifications",
771
  },
772
  [ClassificationId.EC]: {
773
    id: "jobBuilder.details.classificationOptions.EC",
774
    defaultMessage: "EC - Economics and Social Science Services",
775
    description: "Job Classification from list of Classifications",
776
  },
777
  [ClassificationId.EX]: {
778
    id: "jobBuilder.details.classificationOptions.EX",
779
    defaultMessage: "EX - Executive",
780
    description: "Job Classification from list of Classifications",
781
  },
782
  [ClassificationId.FO]: {
783
    id: "jobBuilder.details.classificationOptions.FO",
784
    defaultMessage: "FO - Forestry",
785
    description: "Job Classification from list of Classifications",
786
  },
787
  [ClassificationId.IS]: {
788
    id: "jobBuilder.details.classificationOptions.IS",
789
    defaultMessage: "IS - Information Services",
790
    description: "Job Classification from list of Classifications",
791
  },
792
  [ClassificationId.PC]: {
793
    id: "jobBuilder.details.classificationOptions.PC",
794
    defaultMessage: "PC - Physical Sciences",
795
    description: "Job Classification from list of Classifications",
796
  },
797
  [ClassificationId.PE]: {
798
    id: "jobBuilder.details.classificationOptions.PE",
799
    defaultMessage: "PE - Personnel Administration",
800
    description: "Job Classification from list of Classifications",
801
  },
802
  [ClassificationId.PM]: {
803
    id: "jobBuilder.details.classificationOptions.PM",
804
    defaultMessage: "PM - Programme Administration",
805
    description: "Job Classification from list of Classifications",
806
  },
807
  [ClassificationId.AD]: {
808
    id: "jobBuilder.details.classificationOptions.AD",
809
    defaultMessage: "AD - Administrative Services",
810
    description: "Job Classification from list of Classifications",
811
  },
812
});
813
814
export const classificationCodeOption = (
815
  classificationId: number,
816
): MessageDescriptor =>
817
  getOrThrowError(
818
    classificationCodes,
819
    classificationId,
820
    "invalid ClassificationId",
821
  );
822
823
export const generalLocations = defineMessages({
824
  [LocationId.jobGeneric]: {
825
    id: "activityfeed.locations.review",
826
    defaultMessage: "Job Poster Builder",
827
    description: "Location where the activity is located.",
828
  },
829
  [LocationId.summary]: {
830
    id: "activityfeed.locations.hr.summary",
831
    defaultMessage: "HR Summary Page",
832
    description: "Location where the activity is located.",
833
  },
834
  [LocationId.preview]: {
835
    id: "activityfeed.locations.hr.preview",
836
    defaultMessage: "HR Preview Page",
837
    description: "Location where the activity is located.",
838
  },
839
  [LocationId.applicantsGeneric]: {
840
    id: "activityfeed.locations.applications",
841
    defaultMessage: "Applicant Review Page",
842
    description: "Location where the activity is located.",
843
  },
844
  [LocationId.screeningPlan]: {
845
    id: "activityfeed.locations.screeningPlan",
846
    defaultMessage: "Assessment Plan",
847
    description: "Location where the activity is located.",
848
  },
849
  notFound: {
850
    id: "activityfeed.locations.notFound",
851
    defaultMessage: "Location not found",
852
    description: "Error message if location id is not recognized",
853
  },
854
});
855
856
export const generalLocationOption = (
857
  locationId: string,
858
): MessageDescriptor => {
859
  switch (locationId) {
860
    /* Job Poster Review Page */
861
    case LocationId.jobGeneric:
862
    case LocationId.heading:
863
    case LocationId.basicInfo:
864
    case LocationId.impact:
865
    case LocationId.tasks:
866
    case LocationId.skills:
867
    case LocationId.langRequirements:
868
    case LocationId.environment:
869
      return generalLocations[LocationId.jobGeneric];
870
    /* Applicant Review Page */
871
    case LocationId.applicantsGeneric:
872
    case LocationId.underConsideration:
873
    case LocationId.optionalConsideration:
874
    case LocationId.notUnderConsideration:
875
      return generalLocations[LocationId.applicantsGeneric];
876
    /* Assessment Plan */
877
    case LocationId.screeningPlan:
878
    case LocationId.screeningPlanBuilder:
879
    case LocationId.screeningPlanSummary:
880
    case LocationId.screeningPlanRatings:
881
      return generalLocations[LocationId.screeningPlan];
882
    /* Hr Portal */
883
    case LocationId.summary:
884
      return generalLocations[LocationId.summary];
885
    case LocationId.preview:
886
      return generalLocations[LocationId.preview];
887
888
    default:
889
      return generalLocations.notFound;
890
  }
891
};
892
893
export const jobReviewLocations = defineMessages({
894
  [LocationId.jobGeneric]: {
895
    id: "activityfeed.locations.review.general",
896
    defaultMessage: "General",
897
    description: "Location of the activity.",
898
  },
899
  [LocationId.heading]: {
900
    id: "activityfeed.locations.review.heading",
901
    defaultMessage: "Job Page Heading",
902
    description: "Location of the activity.",
903
  },
904
  [LocationId.basicInfo]: {
905
    id: "activityfeed.locations.review.basicInfo",
906
    defaultMessage: "Basic Information",
907
    description: "Location of the activity.",
908
  },
909
  [LocationId.impact]: {
910
    id: "activityfeed.locations.review.impact",
911
    defaultMessage: "Impact",
912
    description: "Location of the activity.",
913
  },
914
  [LocationId.tasks]: {
915
    id: "activityfeed.locations.review.tasks",
916
    defaultMessage: "Tasks",
917
    description: "Location of the activity.",
918
  },
919
  [LocationId.skills]: {
920
    id: "activityfeed.locations.review.skills",
921
    defaultMessage: "Skills",
922
    description: "Location of the activity.",
923
  },
924
  [LocationId.langRequirements]: {
925
    id: "activityfeed.locations.review.langRequirements",
926
    defaultMessage: "Language Requirements",
927
    description: "Location of the activity.",
928
  },
929
  [LocationId.environment]: {
930
    id: "activityfeed.locations.review.environment",
931
    defaultMessage: "Environment",
932
    description: "Location of the activity.",
933
  },
934
});
935
936
export const applicantReviewLocations = defineMessages({
937
  [LocationId.applicantsGeneric]: {
938
    id: "activityfeed.locations.applicantReview.general",
939
    defaultMessage: "General",
940
    description: "Location of the activity.",
941
  },
942
  [LocationId.underConsideration]: {
943
    id: "activityfeed.locations.applicantReview.underConsideration",
944
    defaultMessage: "Under Consideration",
945
    description: "Location of the activity.",
946
  },
947
  [LocationId.optionalConsideration]: {
948
    id: "activityfeed.locations.applicantReview.optionalConsideration",
949
    defaultMessage: "Optional Consideration",
950
    description: "Location of the activity.",
951
  },
952
  [LocationId.notUnderConsideration]: {
953
    id: "activityfeed.locations.applicantReview.notUnderConsideration",
954
    defaultMessage: "No Longer Under Consideration",
955
    description: "Location of the activity.",
956
  },
957
});
958
959
export const screeningPlanLocations = defineMessages({
960
  [LocationId.screeningPlan]: {
961
    id: "activityfeed.locations.screeningPlan.general",
962
    defaultMessage: "General",
963
    description: "Location of the activity.",
964
  },
965
  [LocationId.screeningPlanBuilder]: {
966
    id: "activityfeed.locations.screeningPlan.builder",
967
    defaultMessage: "Assessment Plan Builder",
968
    description: "Location of the activity.",
969
  },
970
  [LocationId.screeningPlanSummary]: {
971
    id: "activityfeed.locations.screeningPlan.summary",
972
    defaultMessage: "Assessment Plan Summary",
973
    description: "Location of the activity.",
974
  },
975
  [LocationId.screeningPlanRatings]: {
976
    id: "activityfeed.locations.screeningPlan.ratings",
977
    defaultMessage: "Ratings Guide Builder",
978
    description: "Location of the activity.",
979
  },
980
});
981
export const hrPortalLocations = {
982
  [LocationId.summary]: jobReviewLocations[LocationId.jobGeneric],
983
  [LocationId.preview]: jobReviewLocations[LocationId.jobGeneric],
984
};
985
986
export const specificLocationOption = (locationId: string): MessageDescriptor =>
987
  getOrThrowError(
988
    {
989
      ...jobReviewLocations,
990
      ...applicantReviewLocations,
991
      ...hrPortalLocations,
992
      ...screeningPlanLocations,
993
    },
994
    locationId,
995
    "Invalid LocationId",
996
  );
997
998
export const ResponseScreeningBuckets = {
999
  [ResponseBuckets.Consideration]: defineMessages({
1000
    title: {
1001
      id: "responseScreening.buckets.consideration.title",
1002
      defaultMessage: "Employees Under Consideration",
1003
      description:
1004
        "Label for the 'Under Consideration' response screening bucket.",
1005
    },
1006
    description: {
1007
      id: "responseScreening.buckets.consideration.description",
1008
      defaultMessage:
1009
        "Employees in this category have volunteered to be placed in a team with a critical needs shortage. Employees in this category are: Pending initial application review ({iconReceived}), indicating that a submission has been received, but it has not yet been assessed by a member of the review team; Ready for reference checks and home-department approval ({iconReady}), indicating that the employee is heading to the Ready to Allocate category if references and approval are in order; and Further Assessment Required ({iconAssessment}), indicating that the review team is unsure of their qualifications for this role and is undertaking further assessment.",
1010
      description:
1011
        "Descriptive text for the 'Under Consideration' response screening bucket. Takes three icons (iconReceived, iconReady, and iconAssessment) as input.",
1012
    },
1013
  }),
1014
  [ResponseBuckets.ReadyToAllocate]: defineMessages({
1015
    title: {
1016
      id: "responseScreening.buckets.readyToAllocate.title",
1017
      defaultMessage: "Ready to Allocate",
1018
      description:
1019
        "Label for the 'Ready to Allocate' response screening bucket.",
1020
    },
1021
    description: {
1022
      id: "responseScreening.buckets.readyToAllocate.description",
1023
      defaultMessage:
1024
        "Employees in this category have the necessary skills for this stream of work, have successfully completed reference checks and have been given preliminary authorization to participate by a member of their management team. They are currently working in their substantive position, awaiting a request from a department with a critical talent gap.",
1025
      description:
1026
        "Descriptive text for the 'Ready to Allocate' response screening bucket.",
1027
    },
1028
  }),
1029
  [ResponseBuckets.Allocated]: defineMessages({
1030
    title: {
1031
      id: "responseScreening.buckets.allocated.title",
1032
      defaultMessage: "Allocated",
1033
      description: "Label for the 'Allocated' response screening bucket.",
1034
    },
1035
    description: {
1036
      id: "responseScreening.buckets.allocated.description",
1037
      defaultMessage:
1038
        'Employees in this category have been allocated to a department. Their name has been removed from all other GC Reserve processes to which they have applied (and will appear in those processes under "Not Currently Available".) Following the completion of an allocation, employees may elect to be placed back in the Ready to Allocate category, should they be needed again.',
1039
      description:
1040
        "Descriptive text for the 'Allocated' response screening bucket.",
1041
    },
1042
  }),
1043
  [ResponseBuckets.Unavailable]: defineMessages({
1044
    title: {
1045
      id: "responseScreening.buckets.unavailable.title",
1046
      defaultMessage: "Currently Unavailable",
1047
      description: "Label for the 'Unavailable' response screening bucket.",
1048
    },
1049
    description: {
1050
      id: "responseScreening.buckets.unavailable.description",
1051
      defaultMessage:
1052
        "Employees in this stream have been allocated to a department in need or have temporarily removed their names from consideration for a specific period of time (e.g. illness, family care needs), and wish to be considered for allocation at a later date. Employees in this category have been qualified for this talent stream, and will be placed back into the Ready to Allocate when they become available again. (If an employee permanently withdraws their name, their submission will be removed from the GC Talent Reserve.)",
1053
      description:
1054
        "Descriptive text for the 'Currently Unavailable' response screening bucket.",
1055
    },
1056
  }),
1057
  [ResponseBuckets.DoesNotQualify]: defineMessages({
1058
    title: {
1059
      id: "responseScreening.buckets.doesNotQualify.title",
1060
      defaultMessage: "Does Not Qualify",
1061
      description:
1062
        "Label for the 'Does Not Qualify' response screening bucket.",
1063
    },
1064
    description: {
1065
      id: "responseScreening.buckets.doesNotQualify.description",
1066
      defaultMessage:
1067
        "Employees in this category have volunteered their names, but a review of their application and/or reference checks has led the review team to conclude that the employee would not be an asset to a department needing to fill a critical talent gap in this field of work. This determination is, in no way, reflected in the employee's performance status with their home department, and does not affect their evaluation for other GC Reserve talent streams to which they may have applied.",
1068
      description:
1069
        "Descriptive text for the 'Does Not Qualify' response screening bucket.",
1070
    },
1071
  }),
1072
};
1073
1074
export const ResponseReviewStatusMessages = defineMessages({
1075
  screened_out: {
1076
    id: "responseReviewStatus.screenedOut",
1077
    defaultMessage: "Does Not Qualify",
1078
    description: "Select option text for the 'Does Not Qualify' review status.",
1079
  },
1080
  ready_for_reference: {
1081
    id: "responseReviewStatus.readyForReference",
1082
    defaultMessage: "Ready for Reference Check",
1083
    description:
1084
      "Select option text for the 'Ready for Reference Check' review status.",
1085
  },
1086
  ready_to_allocate: {
1087
    id: "responseReviewStatus.readyToAllocate",
1088
    defaultMessage: "Ready to Allocate",
1089
    description:
1090
      "Select option text for the 'Ready to Allocate' review status.",
1091
  },
1092
  assessment_required: {
1093
    id: "responseReviewStatus.assessmentRequired",
1094
    defaultMessage: "Further Assessment Required",
1095
    description:
1096
      "Select option text for the 'Further Assessment Required' review status.",
1097
  },
1098
  allocated: {
1099
    id: "responseReviewStatus.allocated",
1100
    defaultMessage: "Allocated",
1101
    description: "Select option text for the 'Allocated' review status.",
1102
  },
1103
  not_available: {
1104
    id: "responseReviewStatus.notAvailable",
1105
    defaultMessage: "Not Available",
1106
    description: "Select option text for the 'Not Available' review status.",
1107
  },
1108
});
1109
1110
export const ResponseReviewStatuses = {
1111
  assessment_required: {
1112
    id: 6,
1113
    name: ResponseReviewStatusMessages.assessment_required,
1114
  },
1115
  ready_for_reference: {
1116
    id: 4,
1117
    name: ResponseReviewStatusMessages.ready_for_reference,
1118
  },
1119
  ready_to_allocate: {
1120
    id: 5,
1121
    name: ResponseReviewStatusMessages.ready_to_allocate,
1122
  },
1123
  allocated: {
1124
    id: 7,
1125
    name: ResponseReviewStatusMessages.allocated,
1126
  },
1127
  not_available: {
1128
    id: 8,
1129
    name: ResponseReviewStatusMessages.not_available,
1130
  },
1131
  screened_out: {
1132
    id: 1,
1133
    name: ResponseReviewStatusMessages.screened_out,
1134
  },
1135
};
1136