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 14bd04c
Show file tree
Hide file tree
Showing 16 changed files with 132 additions and 58 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: StringOrNothing;
}

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
3 changes: 2 additions & 1 deletion src/component/huskelapp/visning/huskelapp-fjern-modal.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@ function HuskelappFjernModal() {
frist: null,
kommentar: null,
endretDato: null,
endretAv: null
endretAv: null,
enhetId: null
})
)
.then(hideModal)
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

0 comments on commit 14bd04c

Please sign in to comment.