Skip to content

Commit

Permalink
chore(j-s): Make a gendered version of the subpoena pdf (#16413)
Browse files Browse the repository at this point in the history
* Make a gendered version of the subpoena pdf

* Refactor

* Add types

* Refactor

---------

Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
  • Loading branch information
oddsson and kodiakhq[bot] authored Oct 16, 2024
1 parent f7773d8 commit 775afb3
Show file tree
Hide file tree
Showing 4 changed files with 101 additions and 10 deletions.
50 changes: 45 additions & 5 deletions apps/judicial-system/backend/src/app/formatters/subpoenaPdf.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,17 @@
import PDFDocument from 'pdfkit'
import { MessageDescriptor } from 'react-intl'

import { FormatMessage } from '@island.is/cms-translations'

import {
capitalize,
formatDate,
formatDOB,
getWordByGender,
lowercase,
Word,
} from '@island.is/judicial-system/formatters'
import { SubpoenaType } from '@island.is/judicial-system/types'
import { Gender, SubpoenaType } from '@island.is/judicial-system/types'

import { nowFactory } from '../factories/date.factory'
import { subpoena as strings } from '../messages'
Expand All @@ -26,6 +30,36 @@ import {
setTitle,
} from './pdfHelpers'

const getIntro = (
gender?: Gender,
): {
intro: MessageDescriptor
absenceIntro: MessageDescriptor
arrestIntro: MessageDescriptor
} => {
switch (gender) {
case Gender.MALE:
return {
intro: strings.intro,
absenceIntro: strings.absenceIntro,
arrestIntro: strings.arrestIntro,
}

case Gender.FEMALE:
return {
intro: strings.intro_female,
absenceIntro: strings.absenceIntroFemale,
arrestIntro: strings.arrestIntroFemale,
}
default:
return {
intro: strings.intro_non_binary,
absenceIntro: strings.absenceIntroNonBinary,
arrestIntro: strings.arrestIntroNonBinary,
}
}
}

export const createSubpoena = (
theCase: Case,
defendant: Defendant,
Expand All @@ -48,6 +82,7 @@ export const createSubpoena = (
})

const sinc: Buffer[] = []
const intro = getIntro(defendant.gender)

doc.on('data', (chunk) => sinc.push(chunk))

Expand Down Expand Up @@ -111,7 +146,12 @@ export const createSubpoena = (
'Times-Roman',
)
addEmptyLines(doc)
addNormalText(doc, 'Ákærði: ', 'Times-Bold', true)
addNormalText(
doc,
`${capitalize(getWordByGender(Word.AKAERDI, defendant.gender))}: `,
'Times-Bold',
true,
)
addNormalText(doc, defendant.name || 'Nafn ekki skráð', 'Times-Roman')
addEmptyLines(doc, 2)

Expand All @@ -137,15 +177,15 @@ export const createSubpoena = (

addNormalText(doc, formatMessage(strings.type), 'Times-Roman')
addEmptyLines(doc)
addNormalText(doc, formatMessage(strings.intro), 'Times-Bold')
addNormalText(doc, formatMessage(intro.intro), 'Times-Bold')

if (subpoenaType) {
addNormalText(
doc,
formatMessage(
subpoenaType === SubpoenaType.ABSENCE
? strings.absenceIntro
: strings.arrestIntro,
? intro.absenceIntro
: intro.arrestIntro,
),
'Times-Bold',
)
Expand Down
5 changes: 0 additions & 5 deletions apps/judicial-system/backend/src/app/messages/pdfCore.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,6 @@ export const core = {
defaultMessage: 'og',
description: 'Notað fyrir orðið og.',
}),
accused: defineMessage({
id: 'judicial.system.backend:pdf.core.accused',
defaultMessage: 'kærð{suffix}',
description: 'Notað fyrir orðið kærði/a.',
}),
defendant: defineMessage({
id: 'judicial.system.backend:pdf.core.defendant',
defaultMessage: 'varnaraðil{suffix}',
Expand Down
40 changes: 40 additions & 0 deletions apps/judicial-system/backend/src/app/messages/pdfSubpoena.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,18 +27,58 @@ export const subpoena = {
'Ákærði er kvaddur til að koma fyrir dóm, hlýða á ákæru, halda uppi vörnum og sæta dómi.',
description: 'Notaður sem inngangur.',
}),
intro_female: defineMessage({
id: 'judicial.system.backend:pdf.subpoena.female',
defaultMessage:
'Ákærða er kvödd til að koma fyrir dóm, hlýða á ákæru, halda uppi vörnum og sæta dómi.',
description: 'Notaður sem inngangur þegar ákærða er kona.',
}),
intro_non_binary: defineMessage({
id: 'judicial.system.backend:pdf.subpoena.intro_non_binary',
defaultMessage:
'Ákært er kvatt til að koma fyrir dóm, hlýða á ákæru, halda uppi vörnum og sæta dómi.',
description: 'Notaður sem inngangur þegar ákært er kynsegin/annað.',
}),
arrestIntro: defineMessage({
id: 'judicial.system.backend:pdf.subpoena.type_intro',
defaultMessage:
'Sæki ákærði ekki þing má hann búast við því að verða handtekinn og færður fyrir dóm.',
description: 'Notaður sem inngangur fyrir handtökufyrirkall.',
}),
arrestIntroFemale: defineMessage({
id: 'judicial.system.backend:pdf.subpoena.arrest_intro_female',
defaultMessage:
'Sæki ákærða ekki þing má hún búast við því að verða handtekin og færð fyrir dóm.',
description:
'Notaður sem inngangur fyrir handtökufyrirkall þegar ákærða er kona.',
}),
arrestIntroNonBinary: defineMessage({
id: 'judicial.system.backend:pdf.subpoena.arrest_intro_non_binary',
defaultMessage:
'Sæki ákært ekki þing má hán búast við því að verða handtekið og fært fyrir dóm.',
description:
'Notaður sem inngangur fyrir handtökufyrirkall þegar ákærða er kynsegin/annað.',
}),
absenceIntro: defineMessage({
id: 'judicial.system.backend:pdf.subpoena.absence_intro',
defaultMessage:
'Sæki ákærði ekki þing má hann búast við því að fjarvist hans verði metin til jafns við það að hann viðurkenni að hafa framið brot það sem hann er ákærður fyrir og dómur verði lagður á málið að honum fjarstöddum.',
description: 'Notaður sem inngangur fyrir útivistarfyrirkall.',
}),
absenceIntroFemale: defineMessage({
id: 'judicial.system.backend:pdf.subpoena.absence_intro_female',
defaultMessage:
'Sæki ákærða ekki þing má hún búast við því að fjarvist hennar verði metin til jafns við það að hún viðurkenni að hafa framið brot það sem hún er ákærð fyrir og dómur verði lagður á málið að henni fjarstaddri.',
description:
'Notaður sem inngangur fyrir útivistarfyrirkall þegar ákærða er kona.',
}),
absenceIntroNonBinary: defineMessage({
id: 'judicial.system.backend:pdf.subpoena.absence_intro_non_binary',
defaultMessage:
'Sæki ákært ekki þing má hán búast við því að fjarvist háns verði metin til jafns við það að hán viðurkenni að hafa framið brot það sem hán er ákært fyrir og dómur verði lagður á málið að háni fjarstöddu.',
description:
'Notaður sem inngangur fyrir útivistarfyrirkall þegar ákærða er kynsegin/annað.',
}),
deadline: defineMessage({
id: 'judicial.system.backend:pdf.subpoena.deadline',
defaultMessage: 'Birtingarfrestur er þrír sólarhringar.',
Expand Down
16 changes: 16 additions & 0 deletions libs/judicial-system/formatters/src/lib/formatters.ts
Original file line number Diff line number Diff line change
Expand Up @@ -423,3 +423,19 @@ export const readableIndictmentSubtypes = (
export const sanitize = (str: string) => {
return str.replace(/"/g, '')
}

export enum Word {
AKAERDI = 'AKAERDI',
}
export const getWordByGender = (word: Word, gender?: Gender): string | null => {
switch (word) {
case Word.AKAERDI:
return gender === Gender.MALE
? 'ákærði'
: gender === Gender.FEMALE
? 'ákærða'
: 'ákært'
default:
return null
}
}

0 comments on commit 775afb3

Please sign in to comment.