Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Vis telefonnummer selv om prioritet 1 mangler #329

Merged
merged 6 commits into from
Oct 24, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
4 changes: 1 addition & 3 deletions src/api/veilarbpersonflatefs.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,10 @@ import { AxiosPromise } from 'axios';
import { axiosInstance } from './utils';

export const PILOT_TOGGLE = 'pto.vedtaksstotte.pilot';
export const VEILARBDETALJERFS_ENABLED = 'veilarbpersonflatefs.veilarbdetaljerfs-enabled';
export const ALL_TOGGLES = [PILOT_TOGGLE, VEILARBDETALJERFS_ENABLED];
export const ALL_TOGGLES = [PILOT_TOGGLE];

export interface FeatureToggles {
[PILOT_TOGGLE]: boolean;
[VEILARBDETALJERFS_ENABLED]: boolean;
}

export function fetchFeaturesToggles(): AxiosPromise<FeatureToggles> {
Expand Down
22 changes: 12 additions & 10 deletions src/component/personinfo/personinfo.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,22 @@ import ArbeidslisteKnapp from '../arbeidsliste/arbeidsliste-knapp';
import { KopierKnappTekst } from '../components/kopier-knapp/kopier-knapp';
import { useAppStore } from '../../store/app-store';
import { useDataStore } from '../../store/data-store';
import { selectKanLeggeIArbeidsListe, selectKanRedigereArbeidsliste, selectSammensattNavn } from '../../util/selectors';
import {
selectKanLeggeIArbeidsListe,
selectKanRedigereArbeidsliste,
selectSammensattNavn,
selectTelefonnummer
} from '../../util/selectors';
import { useModalStore } from '../../store/modal-store';
import './personinfo.less';
import { logMetrikk } from '../../util/logger';
import { formaterTelefonnummer } from '../../util/utils';
import { StringOrNothing } from '../../util/type/utility-types';
import { VEILARBDETALJERFS_ENABLED } from '../../api/veilarbpersonflatefs';
import { Label } from '@navikt/ds-react';

function PersonInfo() {
const { brukerFnr } = useAppStore();
const { personalia, arbeidsliste, oppfolgingsstatus, innloggetVeileder, features } = useDataStore();
const { personalia, arbeidsliste, oppfolgingsstatus, innloggetVeileder } = useDataStore();
const { showArbeidslisteModal } = useModalStore();

const arbeidslisteikon = arbeidsliste?.kategori;
Expand All @@ -29,7 +33,7 @@ function PersonInfo() {
logMetrikk('veilarbvisittkortfs.metrikker.visittkort.arbeidsliste-ikon', { kategori: arbeidslisteikon });
showArbeidslisteModal();
};
const uformattertTelefon: StringOrNothing = personalia?.telefon?.find(entry => entry.prioritet === '1')?.telefonNr;
const uformattertTelefon: StringOrNothing = selectTelefonnummer(personalia);
const telefon: string = formaterTelefonnummer(uformattertTelefon);

return (
Expand All @@ -43,13 +47,11 @@ function PersonInfo() {
kanRedigereArbeidsliste={kanRedigereArbeidsliste}
/>
<KopierKnappTekst kopierTekst={brukerFnr} visTekst={`F.nr.: ${brukerFnr}`} />
{features[VEILARBDETALJERFS_ENABLED] && <Label>/</Label>}
{uformattertTelefon && features[VEILARBDETALJERFS_ENABLED] && (
<KopierKnappTekst kopierTekst={uformattertTelefon} visTekst={`Tlf.: ${telefon}`} />
)}
{!uformattertTelefon && features[VEILARBDETALJERFS_ENABLED] && (
<Label className="uten-telefon">Tlf.: -</Label>
{<Label>/</Label>}
{uformattertTelefon && (
<KopierKnappTekst kopierTekst={telefon.replace(/\s/g, '')} visTekst={`Tlf.: ${telefon}`} />
)}
{!uformattertTelefon && <Label className="uten-telefon">Tlf.: -</Label>}
</div>
</div>
);
Expand Down
44 changes: 21 additions & 23 deletions src/mock/api/veilarbperson.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,35 +7,33 @@ import {
RegistreringData,
SpraakTolk,
VergeOgFullmakt
} from "../../api/veilarbperson";
} from '../../api/veilarbperson';
import { defaultNetworkResponseDelay } from '../config';

const mockHarBruktNivaa4: HarBruktNivaa4Type = {
harbruktnivaa4: false
};

const mockTelefon: PersonaliaTelefon[] =
[
{
prioritet: '1',
telefonNr: '+4746333333',
registrertDato: '10.07.2008',
master: 'FREG'

},
{
prioritet: '2',
telefonNr: '80022222',
registrertDato: '10.04.2010',
master: 'KRR'
},
{
prioritet: '3',
telefonNr: '44222444',
registrertDato: null,
master: 'PDL'
}
]
const mockTelefon: PersonaliaTelefon[] = [
{
prioritet: '2',
telefonNr: '0047 463 33 333',
registrertDato: '10.07.2008',
master: 'FREG'
},
{
prioritet: '3',
telefonNr: '+47 80 02 22 22',
registrertDato: '10.04.2010',
master: 'KRR'
},
{
prioritet: '1',
telefonNr: '+213 207 860 11 29',
registrertDato: null,
master: 'PDL'
}
];

const mockPersonaliaV2: Personalia = {
fornavn: 'GRØNN',
Expand Down
5 changes: 2 additions & 3 deletions src/mock/api/veilarbpersonflatefs.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
import { rest } from 'msw';
import { RequestHandlersList } from 'msw/lib/types/setupWorker/glossary';
import { FeatureToggles, PILOT_TOGGLE, VEILARBDETALJERFS_ENABLED } from '../../api/veilarbpersonflatefs';
import { FeatureToggles, PILOT_TOGGLE } from '../../api/veilarbpersonflatefs';
import { defaultNetworkResponseDelay } from '../config';

const mockFeatures: FeatureToggles = {
[PILOT_TOGGLE]: true,
[VEILARBDETALJERFS_ENABLED]: true
[PILOT_TOGGLE]: true
};

export const veilarbpersonflatefsHandlers: RequestHandlersList = [
Expand Down
10 changes: 9 additions & 1 deletion src/util/selectors.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { Oppfolging, OppfolgingStatus, TilgangTilBrukersKontor } from '../api/ve
import { Personalia } from '../api/veilarbperson';
import { Arbeidsliste } from '../api/veilarbportefolje';
import { VeilederData } from '../api/veilarbveileder';
import { OrNothing } from './type/utility-types';
import { OrNothing, StringOrNothing } from './type/utility-types';

export function selectSammensattNavn(personalia: Personalia | undefined): string {
if (!personalia) return '';
Expand Down Expand Up @@ -129,3 +129,11 @@ export function selectKanTildeleVeileder(
if (!oppfolging || !tilgangTilBrukersKontor) return false;
return oppfolging.underOppfolging && tilgangTilBrukersKontor.tilgangTilBrukersKontor;
}

export function selectTelefonnummer(personalia: Personalia | undefined): StringOrNothing {
const telefonEntries = personalia?.telefon ?? [];
// Filtrer bort tomme telefonnumre og sorter på prioritet, velger det med lavest prioritet
return telefonEntries
.filter(tlfEntry => tlfEntry.telefonNr)
.sort((a, b) => Number(a.prioritet) - Number(b.prioritet))[0]?.telefonNr;
}
14 changes: 9 additions & 5 deletions src/util/utils.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import { AxiosResponse } from 'axios';
import { PersonaliaTelefon } from '../api/veilarbperson';
import { StringOrNothing } from './type/utility-types';

const emdashCharacterCode = 8212;
Expand Down Expand Up @@ -68,19 +67,23 @@ export function isDefined(subject: any): boolean {
return subject !== undefined && subject !== null;
}

export function formaterTelefonnummer(telefon: PersonaliaTelefon | undefined | string) {
export function formaterTelefonnummer(telefon: StringOrNothing) {
let norskTelefonnummer = false;

if (!telefon) {
return EMDASH;
}
let telefonNr = telefon?.toString();
let telefonNr = telefon?.toString().replace(/\s/g, '');
let landkode = '';

if (telefonNr?.startsWith('0047')) {
landkode = '+47';
telefonNr = telefonNr.slice(4);
norskTelefonnummer = true;
} else if (telefonNr?.startsWith('+47')) {
landkode = telefonNr.slice(0, 3);
telefonNr = telefonNr.slice(3);
norskTelefonnummer = true;
}

const tall = telefonNr?.split('');
Expand All @@ -89,8 +92,9 @@ export function formaterTelefonnummer(telefon: PersonaliaTelefon | undefined | s
while (tall?.length) {
splittTall.push(tall.splice(0, 2).join(''));
}

return `${landkode} ${splittTall.join(' ')}`;
if (norskTelefonnummer) {
return splittTall.join(' ');
} else return `${landkode} ${splittTall.join(' ')}`;
}

export type DeploymentEnvironment = 'local' | 'development' | 'production';