Skip to content

Commit

Permalink
feat(j-s): Civil Claimants Info Card (#16113)
Browse files Browse the repository at this point in the history
* Displays claimants on info cards

* Fixes typo

---------

Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
  • Loading branch information
gudjong and kodiakhq[bot] authored Sep 25, 2024
1 parent 737d9b3 commit 1ea2e20
Show file tree
Hide file tree
Showing 11 changed files with 139 additions and 32 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -337,10 +337,10 @@ export const include: Includeable[] = [

export const order: OrderItem[] = [
[{ model: Defendant, as: 'defendants' }, 'created', 'ASC'],
[{ model: CivilClaimant, as: 'civilClaimants' }, 'created', 'ASC'],
[{ model: IndictmentCount, as: 'indictmentCounts' }, 'created', 'ASC'],
[{ model: DateLog, as: 'dateLogs' }, 'created', 'DESC'],
[{ model: Notification, as: 'notifications' }, 'created', 'DESC'],
[{ model: CivilClaimant, as: 'civilClaimants' }, 'created', 'ASC'],
]

export const caseListInclude: Includeable[] = [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ import {

import { nowFactory, uuidFactory } from '../../factories'
import { AwsS3Service } from '../aws-s3'
import { Defendant, DefendantService } from '../defendant'
import { CivilClaimant, Defendant, DefendantService } from '../defendant'
import { EventLog } from '../event-log'
import {
CaseFile,
Expand Down Expand Up @@ -102,6 +102,7 @@ export const attributes: (keyof Case)[] = [
'courtSessionType',
'indictmentReviewDecision',
'indictmentReviewerId',
'hasCivilClaims',
]

export interface LimitedAccessUpdateCase
Expand Down Expand Up @@ -169,6 +170,7 @@ export const include: Includeable[] = [
{ model: Case, as: 'parentCase', attributes },
{ model: Case, as: 'childCase', attributes },
{ model: Defendant, as: 'defendants' },
{ model: CivilClaimant, as: 'civilClaimants' },
{
model: CaseFile,
as: 'caseFiles',
Expand Down Expand Up @@ -222,6 +224,7 @@ export const include: Includeable[] = [

export const order: OrderItem[] = [
[{ model: Defendant, as: 'defendants' }, 'created', 'ASC'],
[{ model: CivilClaimant, as: 'civilClaimants' }, 'created', 'ASC'],
[{ model: DateLog, as: 'dateLogs' }, 'created', 'DESC'],
]

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -165,5 +165,20 @@ query LimitedAccessCase($input: CaseQueryInput!) {
id
courtCaseNumber
}
hasCivilClaims
civilClaimants {
id
caseId
name
nationalId
noNationalId
hasSpokesperson
spokespersonIsLawyer
spokespersonNationalId
spokespersonName
spokespersonEmail
spokespersonPhoneNumber
caseFilesSharedWithSpokesperson
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import { defineMessages } from 'react-intl'

export const strings = defineMessages({
lawyer: {
id: 'judicial.system.core:info_card.civil_claimant_info.lawyer',
defaultMessage: 'Lögmaður',
description: 'Notaður sem titill á lögmanni kröfuhafa.',
},
noLawyer: {
id: 'judicial.system.core:info_card.civil_claimant_info.no_lawyer',
defaultMessage: 'Hefur ekki verið skráður',
description: 'Notaður sem texti þegar lögmaður kröfuhafa er ekki skráður.',
},
spokesperson: {
id: 'judicial.system.core:info_card.civil_claimant_info.spokesperson',
defaultMessage: 'Réttargæslumaður',
description:
'Notaður sem titill á lögmanni kröfuhafa ef hann er réttargæslumanður.',
},
})
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
import { FC } from 'react'
import { useIntl } from 'react-intl'

import { Box, Text } from '@island.is/island-ui/core'
import { formatDOB } from '@island.is/judicial-system/formatters'
import { CivilClaimant } from '@island.is/judicial-system-web/src/graphql/schema'

import RenderPersonalData from '../RenderPersonalInfo/RenderPersonalInfo'
import { strings } from './CivilClaimantInfo.strings'

interface CivilClaimantInfoProps {
civilClaimant: CivilClaimant
}

export const CivilClaimantInfo: FC<CivilClaimantInfoProps> = (props) => {
const { civilClaimant } = props
const { formatMessage } = useIntl()

return (
<Box>
<Text as="span" fontWeight="semiBold">
{civilClaimant.name}
{civilClaimant.nationalId &&
`, ${formatDOB(
civilClaimant.nationalId,
civilClaimant.noNationalId,
)}`}
</Text>
{civilClaimant.hasSpokesperson ? (
<Box display={['block', 'block', 'block', 'flex']}>
<Text as="span" whiteSpace="pre">
{civilClaimant.spokespersonIsLawyer
? `${formatMessage(strings.lawyer)}: `
: `${formatMessage(strings.spokesperson)}: `}
</Text>
{RenderPersonalData(
civilClaimant.spokespersonName,
civilClaimant.spokespersonEmail,
civilClaimant.spokespersonPhoneNumber,
false,
)}
</Box>
) : (
<Text>{`${formatMessage(strings.lawyer)}: ${formatMessage(
strings.noLawyer,
)}`}</Text>
)}
</Box>
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -33,12 +33,6 @@ export const strings = defineMessages({
defaultMessage: 'Dómur birtur {date}',
description: 'Notað til að birta dagsetningu þegar dómur var birtur.',
},
noDefenderAssigned: {
id: 'judicial.system.core:info_card.defendant_info.no_defender_assigned',
defaultMessage: 'Ekki skráður',
description:
'Notað til að láta vita að enginn verjandi er skráður í ákæru.',
},
spokesperson: {
id: 'judicial.system.core:info_card.spokesperson',
defaultMessage: 'Talsmaður',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,18 +18,18 @@ const InfoCardActiveIndictment = () => {
mergedCaseProsecutor,
mergedCaseJudge,
mergedCaseCourt,
civilClaimants,
} = useInfoCardItems()

return (
<InfoCard
sections={[
...(workingCase.defendants
? [
{
id: 'defendant-section',
items: [defendants(workingCase.type)],
},
]
{
id: 'defendant-section',
items: [defendants(workingCase.type)],
},
...(workingCase.hasCivilClaims
? [{ id: 'civil-claimant-section', items: [civilClaimants] }]
: []),
{
id: 'case-info-section',
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import { FC, useContext } from 'react'

import { EventType } from '../../../graphql/schema'
import { FormContext } from '../../FormProvider/FormProvider'
import { DefendantInfoActionButton } from '../DefendantInfo/DefendantInfo'
import InfoCard from '../InfoCard'
import useInfoCardItems from '../useInfoCardItems'
import { EventType } from '../../graphql/schema'
import { FormContext } from '../FormProvider/FormProvider'
import { DefendantInfoActionButton } from './DefendantInfo/DefendantInfo'
import InfoCard from './InfoCard'
import useInfoCardItems from './useInfoCardItems'

export interface Props {
defendantInfoActionButton?: DefendantInfoActionButton
Expand All @@ -28,6 +28,7 @@ const InfoCardClosedIndictment: FC<Props> = (props) => {
indictmentReviewer,
indictmentReviewDecision,
indictmentReviewedDate,
civilClaimants,
} = useInfoCardItems()

const {
Expand All @@ -54,6 +55,9 @@ const InfoCardClosedIndictment: FC<Props> = (props) => {
),
],
},
...(workingCase.hasCivilClaims
? [{ id: 'civil-claimant-section', items: [civilClaimants] }]
: []),
{
id: 'case-info-section',
items: [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,16 +27,6 @@ export const strings = defineMessages({
defaultMessage: 'Ákvörðun',
description: 'Notaður sem titill á "ákvörðun" hluta af yfirliti ákæru.',
},
indictmentDefendant: {
id: 'judicial.system.core:info_card_indictment.indictment_defendant',
defaultMessage: 'Dómfelldi',
description: 'Notaður sem titill á "dómfelldi" hluta af yfirliti ákæru.',
},
indictmentDefendants: {
id: 'judicial.system.core:info_card_indictment.indictment_defendants',
defaultMessage: 'Dómfelldu',
description: 'Notaður sem titill á "dómfelldu" hluta af yfirliti ákæru.',
},
reviewTagAppealed: {
id: 'judicial.system.core:info_card_indictment.review_tag_appealed_v1',
defaultMessage: 'Áfrýja dómi',
Expand All @@ -63,4 +53,16 @@ export const strings = defineMessages({
defaultMessage: 'Sameinað úr',
description: 'Notaður sem titill á "Sameinað úr" hluta af yfirliti ákæru.',
},
civilClaimant: {
id: 'judicial.system.core:info_card_indictment.civil_claimant',
defaultMessage: 'Kröfuhafi',
description:
'Notaður sem titill á "kröfuhafa" hluta í yfirliti ákæru þegar kröfuhafi er einn.',
},
civilClaimants: {
id: 'judicial.system.core:info_card_indictment.civil_claimants',
defaultMessage: 'Kröfuhafar',
description:
'Notaður sem titill á "kröfuhafar" hluta í yfirliti ákæru þegar kröfuhafar eru fleiri en einn.',
},
})
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,14 @@ import {

import { sortByIcelandicAlphabet } from '../../utils/sortHelper'
import { FormContext } from '../FormProvider/FormProvider'
import { CivilClaimantInfo } from './CivilClaimantInfo/CivilClaimantInfo'
import {
DefendantInfo,
DefendantInfoActionButton,
} from './DefendantInfo/DefendantInfo'
import RenderPersonalData from './RenderPersonalInfo/RenderPersonalInfo'
import { Item } from './InfoCard'
import { strings } from './InfoCardIndictment.strings'
import { strings } from './useInfoCardItems.strings'

const useInfoCardItems = () => {
const { formatMessage } = useIntl()
Expand Down Expand Up @@ -297,6 +298,23 @@ const useInfoCardItems = () => {
],
}

const civilClaimants: Item = {
id: 'civil-claimant-item',
title: capitalize(
workingCase.civilClaimants && workingCase.civilClaimants.length > 1
? formatMessage(strings.civilClaimants)
: formatMessage(strings.civilClaimant),
),
values: workingCase.civilClaimants
? workingCase.civilClaimants.map((civilClaimant) => (
<CivilClaimantInfo
key={civilClaimant.id}
civilClaimant={civilClaimant}
/>
))
: [],
}

return {
defendants,
indictmentCreated,
Expand Down Expand Up @@ -324,6 +342,7 @@ const useInfoCardItems = () => {
indictmentReviewDecision,
indictmentReviewedDate,
parentCaseValidToDate,
civilClaimants,
}
}

Expand Down
2 changes: 1 addition & 1 deletion apps/judicial-system/web/src/components/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ export { default as InfoBox } from './InfoBox/InfoBox'
export { default as BlueBoxWithIcon } from './BlueBoxWithIcon/BlueBoxWithIcon'
export { default as InfoCard } from './InfoCard/InfoCard'
export { default as InfoCardActiveIndictment } from './InfoCard/InfoCardActiveIndictment'
export { default as InfoCardClosedIndictment } from './InfoCard/InfoCardClosedIndictment/InfoCardClosedIndictment'
export { default as InfoCardClosedIndictment } from './InfoCard/InfoCardClosedIndictment'
export { default as CaseScheduledCard } from './BlueBoxWithIcon/CaseScheduledCard'
export { default as IndictmentCaseScheduledCard } from './BlueBoxWithIcon/IndictmentCaseScheduledCard'
export { default as Loading } from './Loading/Loading'
Expand Down

0 comments on commit 1ea2e20

Please sign in to comment.