Skip to content
This repository has been archived by the owner on Apr 21, 2023. It is now read-only.

Commit

Permalink
refaktorering
Browse files Browse the repository at this point in the history
  • Loading branch information
grutkowska committed Mar 17, 2023
1 parent 21d4ff7 commit e3f4a36
Show file tree
Hide file tree
Showing 3 changed files with 116 additions and 115 deletions.
116 changes: 5 additions & 111 deletions src/app/components/har-saker/HarSaker.tsx
@@ -1,15 +1,14 @@
import { BodyShort, Heading } from '@navikt/ds-react';
import { bemUtils, formatDate, guid, intlUtils } from '@navikt/fp-common';
import { bemUtils, guid } from '@navikt/fp-common';
import { useSetBackgroundColor } from 'app/hooks/useBackgroundColor';
import { GruppertSak } from 'app/types/GruppertSak';
import { Situasjon } from 'app/types/Situasjon';
import { ISOStringToDate } from 'app/utils/dateUtils';
import { getSakTittel, getSakUndertittel } from 'app/utils/sakerUtils';
import EtBarn from 'assets/EtBarn';
import ToBarn from 'assets/ToBarn';
import TreBarn from 'assets/TreBarn';
import dayjs from 'dayjs';
import React from 'react';
import { IntlShape, useIntl } from 'react-intl';
import { useIntl } from 'react-intl';
import SakLink from '../sak-link/SakLink';

import './har-saker.css';
Expand All @@ -18,111 +17,6 @@ interface Props {
grupperteSaker: GruppertSak[];
}

export const getBarnTittel = (
fornavn: string[] | undefined,
fødselsdatoer: Date[] | undefined,
familiehendelsesdato: Date,
alleBarnaLever: boolean,
antallBarn: number,
intl: IntlShape,
type: Situasjon
): string => {
if (fornavn === undefined || fornavn.length === 0 || !alleBarnaLever) {
return getTittelBarnNårNavnSkalIkkeVises(familiehendelsesdato, fødselsdatoer, antallBarn, intl, type);
}

if (fornavn.length > 1) {
const fornavnene = fornavn
.map((n) => n.trim())
.slice(0, -1)
.join(', ');
const sisteFornavn = fornavn[fornavn.length - 1];
return `${fornavnene} og ${sisteFornavn}`;
}
return `${fornavn[0]}`;
};

export const getBarnUndertittel = (
fornavn: string[] | undefined,
fødselsdatoer: Date[] | undefined,
type: Situasjon,
familiehendelsedato: Date,
allebarnaLever: boolean
) => {
const viserNavnPåBarn = fornavn !== undefined && fornavn.length > 0 && allebarnaLever;
if (type === 'fødsel' && viserNavnPåBarn) {
const fødtDatoTekst = formaterFødselsdatoerPåBarn(fødselsdatoer);
return `Født ${fødtDatoTekst}`;
}
if (type === 'adopsjon' && viserNavnPåBarn) {
return `Adoptert ${formatDate(familiehendelsedato)}`;
}
return undefined;
};

export const getTekstForAntallBarn = (antallBarn: number, intl: IntlShape): string => {
if (antallBarn === 1) {
return intlUtils(intl, 'barn');
} else if (antallBarn === 2) {
return intlUtils(intl, 'tvillinger');
} else if (antallBarn === 3) {
return intlUtils(intl, 'trillinger');
}
return intlUtils(intl, 'flerlinger');
};

export const formaterFødselsdatoerPåBarn = (fødselsdatoer: Date[] | undefined): string | undefined => {
if (fødselsdatoer === undefined) {
return undefined;
}
const unikeFødselsdatoer = [] as Date[];
fødselsdatoer.forEach((f) => {
const finnesIUnikeFødselsdatoer = unikeFødselsdatoer.find((dato) => dayjs(dato).isSame(f, 'day'));
if (finnesIUnikeFødselsdatoer === undefined) {
unikeFødselsdatoer.push(f);
}
});

if (unikeFødselsdatoer.length > 1) {
const fødselsdatoerTekst = unikeFødselsdatoer.map((fd) => formatDate(fd));
const førsteFødselsdaoer = fødselsdatoerTekst.slice(0, -1).join(', ');
const sisteFødselsdato = fødselsdatoerTekst[fødselsdatoerTekst.length - 1];
return `${førsteFødselsdaoer} og ${sisteFødselsdato}`;
}
return formatDate(unikeFødselsdatoer[0]);
};

export const getTittelBarnNårNavnSkalIkkeVises = (
familiehendelsedato: Date,
fødselsdatoer: Date[] | undefined,
antallBarn: number,
intl: IntlShape,
type: Situasjon
): string => {
const barnTekst = getTekstForAntallBarn(antallBarn, intl);
if (antallBarn === 0 || type === 'termin') {
return intlUtils(intl, 'barnHeader.terminBarn', {
barnTekst,
termindato: formatDate(familiehendelsedato),
});
}

if (type === 'adopsjon') {
return intlUtils(intl, 'barnHeader.adoptertBarn', {
barnTekst,
adopsjonsdato: formatDate(familiehendelsedato),
});
} else {
const fødselsdatoTekst = formaterFødselsdatoerPåBarn(fødselsdatoer);
return fødselsdatoer !== undefined && fødselsdatoer.length > 0
? intlUtils(intl, 'barnHeader.fødtBarn', {
barnTekst,
fødselsdatoTekst,
})
: '';
}
};

const getIkonForAntallBarn = (antallBarn: number) => {
switch (antallBarn) {
case 1:
Expand All @@ -142,7 +36,7 @@ const HarSaker: React.FunctionComponent<Props> = ({ grupperteSaker }) => {
return (
<>
{grupperteSaker.map((gruppering) => {
const tittel = getBarnTittel(
const tittel = getSakTittel(
gruppering.barn?.fornavn,
gruppering.barn?.fødselsdatoer,
ISOStringToDate(gruppering.familiehendelsedato)!,
Expand All @@ -151,7 +45,7 @@ const HarSaker: React.FunctionComponent<Props> = ({ grupperteSaker }) => {
intl,
gruppering.type
);
const undertittel = getBarnUndertittel(
const undertittel = getSakUndertittel(
gruppering.barn?.fornavn,
gruppering.barn?.fødselsdatoer,
gruppering.type,
Expand Down
7 changes: 3 additions & 4 deletions src/app/components/header/Header.tsx
Expand Up @@ -8,12 +8,11 @@ import { GruppertSak } from 'app/types/GruppertSak';
import { Sak } from 'app/types/Sak';
import { Ytelse } from 'app/types/Ytelse';
import { ISOStringToDate } from 'app/utils/dateUtils';
import { getFamiliehendelseDato, utledFamiliesituasjon } from 'app/utils/sakerUtils';
import { getFamiliehendelseDato, getSakTittel, getSakUndertittel, utledFamiliesituasjon } from 'app/utils/sakerUtils';
import TåteflaskeBaby from 'assets/TåteflaskeBaby';
import classNames from 'classnames';
import React from 'react';
import { IntlShape, useIntl } from 'react-intl';
import { getBarnTittel, getBarnUndertittel } from '../har-saker/HarSaker';
import PreviousLink from '../previous-link/PreviousLink';
import StatusTag from '../status-tag/StatusTag';

Expand Down Expand Up @@ -110,7 +109,7 @@ const renderHeaderContent = (
if (selectedRoute === OversiktRoutes.SAKSOVERSIKT && sak) {
const situasjon = utledFamiliesituasjon(sak.familiehendelse, sak.gjelderAdopsjon);
const familiehendelsedato = ISOStringToDate(getFamiliehendelseDato(sak.familiehendelse));
const barnTittel = getBarnTittel(
const barnTittel = getSakTittel(
barn?.fornavn,
barn?.fødselsdatoer,
familiehendelsedato!,
Expand All @@ -119,7 +118,7 @@ const renderHeaderContent = (
intl,
situasjon
);
const barnUndertittel = getBarnUndertittel(
const barnUndertittel = getSakUndertittel(
barn?.fornavn,
barn?.fødselsdatoer,
situasjon,
Expand Down
108 changes: 108 additions & 0 deletions src/app/utils/sakerUtils.ts
Expand Up @@ -12,6 +12,9 @@ import { Person } from 'app/types/Person';
import { getErDatoInnenEnDagFraAnnenDato, ISOStringToDate } from './dateUtils';
import { getLeverPerson } from './personUtils';
import { BarnGruppering } from 'app/types/BarnGruppering';
import { IntlShape } from 'react-intl';
import { formatDate, intlUtils } from '@navikt/fp-common';
import { Situasjon } from 'app/types/Situasjon';

export const getAlleYtelser = (saker: SakOppslag): Sak[] => {
return [...saker.engangsstønad, ...saker.foreldrepenger, ...saker.svangerskapspenger];
Expand Down Expand Up @@ -197,3 +200,108 @@ export const getNavnAnnenForelder = (
const annenForelderNavn = barn && barn.annenForelder ? barn.annenForelder.fornavn : undefined;
return annenForelderNavn !== undefined && annenForelderNavn.trim() !== '' ? annenForelderNavn : 'Annen forelder';
};

export const getTekstForAntallBarn = (antallBarn: number, intl: IntlShape): string => {
if (antallBarn === 1) {
return intlUtils(intl, 'barn');
} else if (antallBarn === 2) {
return intlUtils(intl, 'tvillinger');
} else if (antallBarn === 3) {
return intlUtils(intl, 'trillinger');
}
return intlUtils(intl, 'flerlinger');
};

export const formaterFødselsdatoerPåBarn = (fødselsdatoer: Date[] | undefined): string | undefined => {
if (fødselsdatoer === undefined) {
return undefined;
}
const unikeFødselsdatoer = [] as Date[];
fødselsdatoer.forEach((f) => {
const finnesIUnikeFødselsdatoer = unikeFødselsdatoer.find((dato) => dayjs(dato).isSame(f, 'day'));
if (finnesIUnikeFødselsdatoer === undefined) {
unikeFødselsdatoer.push(f);
}
});

if (unikeFødselsdatoer.length > 1) {
const fødselsdatoerTekst = unikeFødselsdatoer.map((fd) => formatDate(fd));
const førsteFødselsdaoer = fødselsdatoerTekst.slice(0, -1).join(', ');
const sisteFødselsdato = fødselsdatoerTekst[fødselsdatoerTekst.length - 1];
return `${førsteFødselsdaoer} og ${sisteFødselsdato}`;
}
return formatDate(unikeFødselsdatoer[0]);
};

export const getTittelBarnNårNavnSkalIkkeVises = (
familiehendelsedato: Date,
fødselsdatoer: Date[] | undefined,
antallBarn: number,
intl: IntlShape,
type: Situasjon
): string => {
const barnTekst = getTekstForAntallBarn(antallBarn, intl);
if (antallBarn === 0 || type === 'termin') {
return intlUtils(intl, 'barnHeader.terminBarn', {
barnTekst,
termindato: formatDate(familiehendelsedato),
});
}

if (type === 'adopsjon') {
return intlUtils(intl, 'barnHeader.adoptertBarn', {
barnTekst,
adopsjonsdato: formatDate(familiehendelsedato),
});
} else {
const fødselsdatoTekst = formaterFødselsdatoerPåBarn(fødselsdatoer);
return fødselsdatoer !== undefined && fødselsdatoer.length > 0
? intlUtils(intl, 'barnHeader.fødtBarn', {
barnTekst,
fødselsdatoTekst,
})
: '';
}
};

export const getSakTittel = (
fornavn: string[] | undefined,
fødselsdatoer: Date[] | undefined,
familiehendelsesdato: Date,
alleBarnaLever: boolean,
antallBarn: number,
intl: IntlShape,
type: Situasjon
): string => {
if (fornavn === undefined || fornavn.length === 0 || !alleBarnaLever) {
return getTittelBarnNårNavnSkalIkkeVises(familiehendelsesdato, fødselsdatoer, antallBarn, intl, type);
}

if (fornavn.length > 1) {
const fornavnene = fornavn
.map((n) => n.trim())
.slice(0, -1)
.join(', ');
const sisteFornavn = fornavn[fornavn.length - 1];
return `${fornavnene} og ${sisteFornavn}`;
}
return `${fornavn[0]}`;
};

export const getSakUndertittel = (
fornavn: string[] | undefined,
fødselsdatoer: Date[] | undefined,
type: Situasjon,
familiehendelsedato: Date,
allebarnaLever: boolean
) => {
const viserNavnPåBarn = fornavn !== undefined && fornavn.length > 0 && allebarnaLever;
if (type === 'fødsel' && viserNavnPåBarn) {
const fødtDatoTekst = formaterFødselsdatoerPåBarn(fødselsdatoer);
return `Født ${fødtDatoTekst}`;
}
if (type === 'adopsjon' && viserNavnPåBarn) {
return `Adoptert ${formatDate(familiehendelsedato)}`;
}
return undefined;
};

0 comments on commit e3f4a36

Please sign in to comment.