Skip to content

Commit

Permalink
Ikke vise huskelapp eller arbeidsliste dersom man ikke er tildelt ved…
Browse files Browse the repository at this point in the history
… nytt kontor
  • Loading branch information
JulieHillRoa committed Jun 17, 2024
1 parent 63dee49 commit 8c2bd95
Show file tree
Hide file tree
Showing 15 changed files with 130 additions and 57 deletions.
56 changes: 56 additions & 0 deletions src/api/utils.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
import axios, { AxiosError } from 'axios';
import { APP_NAME, isDefined } from '../util/utils';
import { useEffect, useState } from 'react';
import { useAxiosFetcher } from '../util/hook/use-axios-fetcher';
import { Arbeidsliste, fetchHarVeilederTilgangTilEnhet, Huskelapp } from './veilarbportefolje';
import { OppfolgingStatus, TilgangTilBrukersKontor } from './veilarboppfolging';

export const axiosInstance = axios.create({
withCredentials: true,
Expand All @@ -23,3 +27,55 @@ export function hasAnyFailed(...fetchers: Array<{ error?: AxiosError }>): boolea
export function hasAllData(...fetchers: Array<{ data?: object }>): boolean {
return fetchers.every(f => isDefined(f.data));
}

export const useHarVeilederTilgangTilHuskelappEllerArbeidsliste = (
enhetId?: string,
arbeidsliste?: Arbeidsliste,
huskelapp?: Huskelapp,
oppfolgingsstatus?: OppfolgingStatus,
tilgangTilBrukersKontor?: TilgangTilBrukersKontor
) => {
const harVeilederTilgangTilEnhetFetcher = useAxiosFetcher(fetchHarVeilederTilgangTilEnhet);
const [harVeilederTilgangTilEnhet, setHarVeilederTilgangTilEnhet] = useState<boolean>(false);

//kontorbyttelogikk
const innloggetVeilederHarTilgangTilBrukersKontor = tilgangTilBrukersKontor?.tilgangTilBrukersKontor;
const harVeileder = oppfolgingsstatus?.veilederId;

const veilederSkrevetHuskelapp = huskelapp?.huskelappId !== null ? huskelapp?.endretAv : null;
const veilederSkrevetArbeidsliste =
arbeidsliste?.sistEndretAv !== null ? arbeidsliste?.sistEndretAv?.veilederId : null;
const veilederSisteEndret = veilederSkrevetHuskelapp || veilederSkrevetArbeidsliste;

const enhetSistEndretHuskelapp = huskelapp?.huskelappId !== null ? huskelapp?.enhetId : null;
const enhetSisteEndretArbeidsliste =
arbeidsliste?.navkontorForArbeidsliste !== null ? arbeidsliste?.navkontorForArbeidsliste : null;
const enhetSisteEndret = enhetSistEndretHuskelapp || enhetSisteEndretArbeidsliste;

useEffect(() => {
if (
veilederSisteEndret &&
enhetId &&
enhetSisteEndret !== enhetId &&
harVeilederTilgangTilEnhetFetcher.data === undefined
) {
harVeilederTilgangTilEnhetFetcher.fetch(veilederSisteEndret, enhetId);
}
setHarVeilederTilgangTilEnhet(
harVeileder &&
innloggetVeilederHarTilgangTilBrukersKontor &&
harVeilederTilgangTilEnhetFetcher.data !== undefined
? harVeilederTilgangTilEnhetFetcher.data
: true
);
}, [
veilederSisteEndret,
enhetId,
enhetSisteEndret,
harVeileder,
innloggetVeilederHarTilgangTilBrukersKontor,
harVeilederTilgangTilEnhetFetcher
]);

return harVeilederTilgangTilEnhet;
};
6 changes: 6 additions & 0 deletions src/api/veilarbportefolje.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ export interface Arbeidsliste {
sistEndretAv: OrNothing<{ veilederId: string }>;
kategori: KategoriModell | null;
veilederId?: StringOrNothing;
navkontorForArbeidsliste: StringOrNothing;
}

export interface Huskelapp {
Expand All @@ -21,6 +22,7 @@ export interface Huskelapp {
kommentar: StringOrNothing;
endretDato: OrNothing<Date>;
endretAv: StringOrNothing;
enhetId: string;
}

export enum KategoriModell {
Expand Down Expand Up @@ -133,3 +135,7 @@ export function endreFargekategori(fargekategoriVerdi: string, fnr: string): Axi
export function fetchFargekategori(fnr: string): AxiosPromise<Fargekategori> {
return axiosInstance.post('/veilarbportefolje/api/v1/hent-fargekategori', { fnr });
}

export function fetchHarVeilederTilgangTilEnhet(veilederId: string, enhetId: string): AxiosPromise<boolean> {
return axiosInstance.post(`/veilarbportefolje/api/v1/hent-har-veileder-tilgang-til-enhet`, { veilederId, enhetId });
}
5 changes: 2 additions & 3 deletions src/component/components/hidden-if/hidden-if.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,9 @@ export interface HiddenProps {
hidden?: boolean;
}

export default function hiddenIf<PROPS>(
Component: ComponentType<PROPS>
): ComponentType<PROPS & HiddenProps> {
export default function hiddenIf<PROPS>(Component: ComponentType<PROPS>): ComponentType<PROPS & HiddenProps> {
return (props: PROPS & HiddenProps) => {
// eslint-disable-next-line
const { hidden, ...rest } = props as any; // tslint:disable-line
if (hidden) {
return null;
Expand Down
6 changes: 3 additions & 3 deletions src/component/components/visible-if.tsx
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
import { ComponentType } from 'react';

export interface VisibleProps {
// eslint-disable-next-line
visible?: any;
}

export default function visibleIf<PROPS>(
Component: ComponentType<PROPS>
): ComponentType<PROPS & VisibleProps> {
export default function visibleIf<PROPS>(Component: ComponentType<PROPS>): ComponentType<PROPS & VisibleProps> {
return (props: PROPS & VisibleProps) => {
// eslint-disable-next-line
const { visible, ...rest } = props as any; // tslint:disable-line
if (visible) {
return <Component {...rest} />;
Expand Down
10 changes: 2 additions & 8 deletions src/component/personinfo/components/etiketter.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -53,14 +53,8 @@ function manglerVedtak(oppfolging: OrNothing<OppfolgingStatus>): boolean {

function Etiketter() {
const { brukerFnr } = useAppStore();
const {
gjeldendeEskaleringsvarsel,
oppfolgingsstatus,
oppfolging,
personalia,
vergeOgFullmakt,
spraakTolk
} = useDataStore();
const { gjeldendeEskaleringsvarsel, oppfolgingsstatus, oppfolging, personalia, vergeOgFullmakt, spraakTolk } =
useDataStore();

const [innsatsgruppe, setInnsatsgruppe] = useState<OrNothing<InnsatsgruppeType>>(null);

Expand Down
20 changes: 13 additions & 7 deletions src/component/personinfo/personinfo.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,10 @@ import { Label } from '@navikt/ds-react';
import HuskelappKnapp from '../huskelapp/huskelapp-knapp';
import { HUSKELAPP } from '../../api/veilarbpersonflatefs';
import { Fargekategoriknapp } from '../fargekategori/fargekategoriknapp';
import { useHarVeilederTilgangTilHuskelappEllerArbeidsliste } from '../../api/utils';

function PersonInfo() {
const { brukerFnr } = useAppStore();
const { brukerFnr, enhetId } = useAppStore();
const {
personalia,
arbeidsliste,
Expand All @@ -35,7 +36,16 @@ function PersonInfo() {
tilgangTilBrukersKontor
} = useDataStore();
const { showArbeidslisteModal, showHuskelappRedigereModal, showHuskelappModal } = useModalStore();
const harVeileder = oppfolgingsstatus?.veilederId;
const harVeilederTilgangTilHuskelappEllerArbeidsliste = useHarVeilederTilgangTilHuskelappEllerArbeidsliste(
enhetId,
arbeidsliste,
huskelapp,
oppfolgingsstatus,
tilgangTilBrukersKontor
);
const erArbeidslisteTom = arbeidsliste?.sistEndretAv == null;
const erHuskelappTom = huskelapp?.huskelappId == null;

const arbeidslisteikon = arbeidsliste?.kategori;

const navn = selectSammensattNavn(personalia);
Expand All @@ -48,15 +58,11 @@ function PersonInfo() {
tilgangTilBrukersKontor
);
const kanEndreFargekategori = selectKanEndreFargekategori(innloggetVeileder, oppfolgingsstatus);

const klikkShowArbeidslisteModal = () => {
logMetrikk('veilarbvisittkortfs.metrikker.visittkort.arbeidsliste-ikon', { kategori: arbeidslisteikon });
showArbeidslisteModal();
};

const erArbeidslisteTom = arbeidsliste?.sistEndretAv == null;
const erHuskelappTom = huskelapp?.huskelappId == null;

const visHuskelappknapp =
features[HUSKELAPP] &&
((erHuskelappTom && kanOppretteHuskelapp) ||
Expand All @@ -80,7 +86,7 @@ function PersonInfo() {
<KjonnIkon visible={personalia?.kjonn} kjonn={personalia?.kjonn as string} />
<NavnOgAlder fodselsdato={personalia?.fodselsdato as string} navn={navn} />
<div className="arbeidsliste">
{harVeileder && (
{harVeilederTilgangTilHuskelappEllerArbeidsliste && (
<>
<ArbeidslisteKnapp
hidden={!(kanLeggeIArbeidsliste || kanRedigereArbeidsliste) || features[HUSKELAPP]}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ interface InnstillingHistorikkKomponentProps {
const ESKALERING_MAX_LENGTH = 120;

type InnstillingsHistorikkTypeTilTekst = {
[key in InnstillingsHistorikkType | 'ESKALERING_STARTET' | 'ESKALERING_STOPPET']: string
}
[key in InnstillingsHistorikkType | 'ESKALERING_STARTET' | 'ESKALERING_STOPPET']: string;
};

const typeTilTekst: InnstillingsHistorikkTypeTilTekst = {
SATT_TIL_DIGITAL: 'Endret til digital oppfølging',
Expand All @@ -29,7 +29,7 @@ const typeTilTekst: InnstillingsHistorikkTypeTilTekst = {
function InnstillingHistorikkKomponent({ innstillingsHistorikk }: InnstillingHistorikkKomponentProps) {
const { type, begrunnelse, dialogId } = innstillingsHistorikk;

let begrunnelseTekst =
const begrunnelseTekst =
begrunnelse && begrunnelse.length > ESKALERING_MAX_LENGTH
? `${begrunnelse.substring(0, ESKALERING_MAX_LENGTH)}... `
: `${begrunnelse} `;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,11 +32,7 @@ interface HistorikkVisningProps {
eskaleringsvarselHistorikk: EskaleringsvarselHistorikkInnslag[];
}

function mapTilKomponent(
historikk: Historikk,
indeks: number,
indeksForNyesteEnhetEndring: number
): ReactElement {
function mapTilKomponent(historikk: Historikk, indeks: number, indeksForNyesteEnhetEndring: number): ReactElement {
if (erInnstillingshistorikk(historikk)) {
if (historikk.innslag.type === 'OPPFOLGINGSENHET_ENDRET') {
return (
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,10 @@ import { Select } from '@navikt/ds-react';
import './maltekstvelger.less';

/* TODO Legg til typesikring på denne
* For eksempel ved å opprette eit objekt med nøklar og visningstekster for select'en,
* og bruke nøklane som nøkkeltype i malTekster
* - Ingrid, 2024-02-02 */
* For eksempel ved å opprette eit objekt med nøklar og visningstekster for select'en,
* og bruke nøklane som nøkkeltype i malTekster
* - Ingrid, 2024-02-02 */
// eslint-disable-next-line
const malTekster: any = {
dagpenger:
'NAV vurderer å stanse dagpengene dine, eller stanse utbetalingene dine i en periode, fordi du ikke har fulgt opp pliktene dine som arbeidssøker.\n' +
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,8 @@ function StartRegistreringProsess() {
const brukerType = oppfolging?.erSykmeldtMedArbeidsgiver
? 'erSykemeldtMedArbeidsgiver'
: oppfolging?.kanReaktiveres
? 'kanReaktiveres'
: 'kanIkkeReaktiveres';
? 'kanReaktiveres'
: 'kanIkkeReaktiveres';

const brukerTekst = () => {
switch (brukerType) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,14 +49,14 @@ function TildelVeileder() {

// Oppdater med ny veileder
setOppfolging(
prevOppfolging => ({ ...(prevOppfolging || {}), veilederId: selectedVeilederId } as Oppfolging)
prevOppfolging => ({ ...(prevOppfolging || {}), veilederId: selectedVeilederId }) as Oppfolging
);
setOppfolgingsstatus(
prevOppfolgingStatus =>
({
...(prevOppfolgingStatus || {}),
veilederId: selectedVeilederId
} as OppfolgingStatus)
}) as OppfolgingStatus
);

const veilederNavn =
Expand All @@ -83,9 +83,7 @@ function TildelVeileder() {
createValue={(veileder: VeilederData) => veileder.ident}
radioName="tildel-veileder"
selected={selectedVeilederId}
changeSelected={(e: ChangeEvent<HTMLInputElement>) =>
setSelectedVeilederId(e.target.value)
}
changeSelected={(e: ChangeEvent<HTMLInputElement>) => setSelectedVeilederId(e.target.value)}
/>
)}
</SokFilter>
Expand Down
14 changes: 11 additions & 3 deletions src/component/veilederverktoy/veilederverktoylinje.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,10 @@ import {
import { doAll } from '../../util/utils';
import { trackAmplitude } from '../../amplitude/amplitude';
import { HUSKELAPP } from '../../api/veilarbpersonflatefs';
import { useHarVeilederTilgangTilHuskelappEllerArbeidsliste } from '../../api/utils';

function Veilederverktoylinje() {
const { visVeilederVerktoy } = useAppStore();
const { visVeilederVerktoy, enhetId } = useAppStore();
const {
oppfolging,
tilgangTilBrukersKontor,
Expand All @@ -54,6 +55,14 @@ function Veilederverktoylinje() {
showHuskelappModal
} = useModalStore();

const harVeilederTilgangTilHuskelappEllerArbeidsliste = useHarVeilederTilgangTilHuskelappEllerArbeidsliste(
enhetId,
arbeidsliste,
huskelapp,
oppfolgingsstatus,
tilgangTilBrukersKontor
);

const kanStarteEskalering = selectKanSendeEskaleringsVarsel(
oppfolging,
gjeldendeEskaleringsvarsel,
Expand All @@ -78,7 +87,6 @@ function Veilederverktoylinje() {
const kanRedigereHuskelapp =
selectKanRedigereHuskelapp(innloggetVeileder, oppfolgingsstatus, tilgangTilBrukersKontor) &&
!!huskelapp?.huskelappId;
const harVeileder = oppfolgingsstatus?.veilederId;

if (!visVeilederVerktoy) {
return null;
Expand Down Expand Up @@ -125,7 +133,7 @@ function Veilederverktoylinje() {
btnClassnames="knapp knapp--standard knapp-fss"
render={lukkDropdown => (
<>
{harVeileder && (
{harVeilederTilgangTilHuskelappEllerArbeidsliste && (
<>
{kanEndreArbeidsliste && !features[HUSKELAPP] && (
<li>
Expand Down
16 changes: 7 additions & 9 deletions src/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -17,19 +17,17 @@ if (isLocalDevelopment()) {
}

function renderMockApp() {
const container = document.getElementById('veilarbvisittkortfs-root');
const container = document.getElementById('veilarbvisittkortfs-root');
const root = createRoot(container!);

import('./mock').then(({ worker }) => {
return worker.start({ serviceWorker: { url: `${import.meta.env.BASE_URL}mockServiceWorker.js` } })
return worker
.start({ serviceWorker: { url: `${import.meta.env.BASE_URL}mockServiceWorker.js` } })
.then(() => {
root.render(
<App fnr={'10108000398'} enhet={'1234'} tilbakeTilFlate={''} visVeilederVerktoy={true} />
);
// eslint-disable-next-line no-console
console.log('Bruker mock-data i applikasjonen');
}
)
root.render(<App fnr={'10108000398'} enhet={'1234'} tilbakeTilFlate={''} visVeilederVerktoy={true} />);
// eslint-disable-next-line no-console
console.log('Bruker mock-data i applikasjonen');
})
.catch((e: Error) => {
// eslint-disable-next-line no-console
console.error('Unable to setup mocked API endpoints', e);
Expand Down
16 changes: 12 additions & 4 deletions src/mock/api/veilarbportefolje.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@ const mockArbeidsliste: Arbeidsliste = {
"Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.",
overskrift: 'Her er tittelen daa!',
sistEndretAv: { veilederId: 'Z12347' },
kategori: KategoriModell.GRONN
kategori: KategoriModell.GRONN,
navkontorForArbeidsliste: '1234'
};

const mockTomArbeidsliste: Arbeidsliste = {
Expand All @@ -24,7 +25,8 @@ const mockTomArbeidsliste: Arbeidsliste = {
kommentar: null,
overskrift: null,
sistEndretAv: null,
kategori: null
kategori: null,
navkontorForArbeidsliste: null
};

const mockTomArbeidslisteMedFargekategori: Arbeidsliste = {
Expand All @@ -36,7 +38,8 @@ const mockTomArbeidslisteMedFargekategori: Arbeidsliste = {
kommentar: null,
overskrift: null,
sistEndretAv: null,
kategori: KategoriModell.GUL
kategori: KategoriModell.GUL,
navkontorForArbeidsliste: '1234'
};

const mockHuskelapp: Huskelapp = {
Expand All @@ -46,7 +49,8 @@ const mockHuskelapp: Huskelapp = {
frist: null,
//frist: new Date(2024, 4, 24),
endretAv: 'Z12347',
endretDato: new Date()
endretDato: new Date(),
enhetId: '1234'
};

export const veilarbportefoljeHandlers: RequestHandler[] = [
Expand Down Expand Up @@ -131,5 +135,9 @@ export const veilarbportefoljeHandlers: RequestHandler[] = [
errors: [],
fargekategoriVerdi: requestBody.fargekategoriVerdi
});
}),
http.post(`/veilarbportefolje/api/v1/hent-har-veileder-tilgang-til-enhet`, async () => {
await delay(defaultNetworkResponseDelay);
return HttpResponse.json(true);
})
];

0 comments on commit 8c2bd95

Please sign in to comment.