Skip to content

Commit

Permalink
Merge branch 'main' into sc_lastfix
Browse files Browse the repository at this point in the history
  • Loading branch information
kodiakhq[bot] authored Oct 16, 2024
2 parents fe11508 + 695edee commit efe3a71
Show file tree
Hide file tree
Showing 35 changed files with 987 additions and 406 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
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,10 @@ import {
PdfButton,
ProsecutorCaseInfo,
} from '@island.is/judicial-system-web/src/components'
import { CaseFileCategory } from '@island.is/judicial-system-web/src/graphql/schema'
import {
CaseFile as TCaseFile,
CaseFileCategory,
} from '@island.is/judicial-system-web/src/graphql/schema'

import { caseFile as m } from './CaseFile.strings'

Expand All @@ -25,12 +28,17 @@ const CaseFile = () => {
useContext(FormContext)

const caseFiles = useMemo(() => {
return (
workingCase.caseFiles?.filter(
(caseFile) => caseFile.category === CaseFileCategory.CASE_FILE_RECORD,
) ?? []
return new Map<string, TCaseFile[]>(
workingCase.policeCaseNumbers?.map((policeCaseNumber) => [
policeCaseNumber,
workingCase.caseFiles?.filter(
(caseFile) =>
caseFile.policeCaseNumber === policeCaseNumber &&
caseFile.category === CaseFileCategory.CASE_FILE_RECORD,
) ?? [],
]),
)
}, [workingCase.caseFiles])
}, [workingCase.caseFiles, workingCase.policeCaseNumbers])

const { formatMessage } = useIntl()
const [editCount, setEditCount] = useState<number>(0)
Expand Down Expand Up @@ -73,7 +81,7 @@ const CaseFile = () => {
caseId={workingCase.id}
policeCaseNumber={policeCaseNumber}
shouldStartExpanded={index === 0}
caseFiles={caseFiles}
caseFiles={caseFiles.get(policeCaseNumber) ?? []}
subtypes={workingCase.indictmentSubtypes}
crimeScenes={workingCase.crimeScenes}
setEditCount={setEditCount}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,7 @@ import {
SignatureCollectionListIdInput,
SignatureCollectionUploadPaperSignatureInput,
} from './dto'
import {
AllowDelegation,
AllowManager,
CurrentSignee,
IsOwner,
} from './decorators'
import { AllowManager, CurrentSignee, IsOwner } from './decorators'
import {
SignatureCollection,
SignatureCollectionCollector,
Expand Down Expand Up @@ -185,6 +180,7 @@ export class SignatureCollectionResolver {

@Scopes(ApiScope.signatureCollection)
@IsOwner()
@AllowManager()
@Mutation(() => SignatureCollectionSuccess)
@Audit()
async signatureCollectionUploadPaperSignature(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,4 @@
import {
Injectable,
NotFoundException,
UnauthorizedException,
} from '@nestjs/common'
import { Injectable, NotFoundException } from '@nestjs/common'
import { SignatureCollectionSuccess } from './models/success.model'
import { SignatureCollection } from './models/collection.model'
import {
Expand All @@ -19,11 +15,8 @@ import { User } from '@island.is/auth-nest-tools'
import { SignatureCollectionCancelListsInput } from './dto/cencelLists.input'
import { SignatureCollectionIdInput } from './dto/collectionId.input'
import { SignatureCollectionAddListsInput } from './dto/addLists.input'
import { SignatureCollectionOwnerInput } from './dto/owner.input'
import { SignatureCollectionListBulkUploadInput } from './dto/bulkUpload.input'
import { SignatureCollectionUploadPaperSignatureInput } from './dto/uploadPaperSignature.input'
import { SignatureCollectionCanSignFromPaperInput } from './dto/canSignFromPaper.input'
import { SignatureCollectionCandidateIdInput } from './dto/candidateId.input'
import { SignatureCollectionCollector } from './models/collector.model'

@Injectable()
Expand Down
1 change: 1 addition & 0 deletions libs/application/core/src/lib/fieldBuilders.ts
Original file line number Diff line number Diff line change
Expand Up @@ -524,6 +524,7 @@ export const buildMessageWithLinkButtonField = (
): MessageWithLinkButtonField => {
const { id, title, url, message, buttonTitle, marginBottom, marginTop } = data
return {
...extractCommonFields(data),
children: undefined,
id,
title,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -251,24 +251,6 @@ export class SharedTemplateApiService {
return new Blob([file.Body as ArrayBuffer], { type: file.ContentType })
}

async getAttachmentUrl(key: string, expiration: number): Promise<string> {
if (expiration <= 0) {
return Promise.reject('expiration must be positive')
}

const bucket = this.config.templateApi.attachmentBucket

if (bucket == undefined) {
return Promise.reject('could not find s3 bucket')
}

return this.s3.getSignedUrlPromise('getObject', {
Bucket: bucket,
Key: key,
Expires: expiration,
})
}

async saveAttachmentToApplicaton(
application: ApplicationWithAttachments,
fileName: string,
Expand Down Expand Up @@ -333,4 +315,26 @@ export class SharedTemplateApiService {
)
return token
}

async getAttachmentUrl(
application: ApplicationWithAttachments,
attachmentKey: string,
expiration: number,
): Promise<string> {
if (expiration <= 0) {
return Promise.reject('expiration must be positive')
}
const fileName = (
application.attachments as {
[key: string]: string
}
)[attachmentKey]
const { bucket, key } = AmazonS3URI(fileName)

return this.s3.getSignedUrlPromise('getObject', {
Bucket: bucket,
Key: key,
Expires: expiration,
})
}
}
Loading

0 comments on commit efe3a71

Please sign in to comment.