Skip to content

Commit

Permalink
Hvis en mottaker allerede er lagt til skal det ikke være mulig å legg…
Browse files Browse the repository at this point in the history
…e den til igjen. (#2864)
  • Loading branch information
gunnsteingarmo authored Aug 15, 2024
1 parent e2de0d3 commit 6f977d6
Show file tree
Hide file tree
Showing 5 changed files with 79 additions and 40 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,10 @@ const VertikalLinje = styled.div`
margin-bottom: 1rem;
`;

const AlertContainer = styled.div`
margin-top: 1rem;
`;

export const BrevmottakereModal: FC<{
personopplysninger: IPersonopplysninger;
mottakere: IBrevmottakere;
Expand Down Expand Up @@ -138,6 +142,7 @@ export const BrevmottakereModal: FC<{
/>
<HorisontalLinje />
<SøkWrapper
valgtePersonMottakere={valgtePersonMottakere}
settValgtePersonMottakere={settValgtePersonMottakere}
valgteOrganisasjonMottakere={valgteOrganisasjonMottakere}
settValgteOrganisasjonMottakere={settValgteOrganisasjonMottakere}
Expand Down Expand Up @@ -171,8 +176,10 @@ export const BrevmottakereModal: FC<{
Sett mottakere
</Button>
</SentrerKnapper>
{feilmelding && <AlertError>{feilmelding}</AlertError>}
{innsendingSuksess && <AlertSuccess>Brevmottakere er satt</AlertSuccess>}
<AlertContainer>
{feilmelding && <AlertError>{feilmelding}</AlertError>}
{innsendingSuksess && <AlertSuccess>Brevmottakere er satt</AlertSuccess>}
</AlertContainer>
</ModalWrapper>
);
};
Original file line number Diff line number Diff line change
Expand Up @@ -2,23 +2,24 @@ import React, { Dispatch, SetStateAction, useEffect, useState } from 'react';
import { useApp } from '../../../App/context/AppContext';
import { byggTomRessurs, Ressurs } from '../../../App/typer/ressurs';
import DataViewer from '../../../Felles/DataViewer/DataViewer';
import { IOrganisasjonMottaker } from './typer';
import { EBrevmottakerRolle, IOrganisasjonMottaker } from './typer';
import { Søkefelt, Søkeresultat } from './brevmottakereStyling';
import { BodyShort, TextField } from '@navikt/ds-react';
import LeggTilKnapp from '../../../Felles/Knapper/LeggTilKnapp';
import { AlertError } from '../../../Felles/Visningskomponenter/Alerts';

interface Props {
valgteMottakere: IOrganisasjonMottaker[];
settValgteMottakere: Dispatch<SetStateAction<IOrganisasjonMottaker[]>>;
}
export const SøkOrganisasjon: React.FC<Props> = ({ settValgteMottakere }) => {
export const SøkOrganisasjon: React.FC<Props> = ({ settValgteMottakere, valgteMottakere }) => {
const { axiosRequest } = useApp();

const [organisasjonsnummer, settOrganisasjonsnummer] = useState('');
const [navnHosOrganisasjon, settNavnHosOrganisasjon] = useState('');
const [organisasjonRessurs, settOrganisasjonRessurs] =
useState(byggTomRessurs<IOrganisasjon>());
const [feil, settFeil] = useState('');
const [feilmelding, settFeilmelding] = useState('');

useEffect(() => {
if (organisasjonsnummer?.length === 9) {
Expand All @@ -33,17 +34,28 @@ export const SøkOrganisasjon: React.FC<Props> = ({ settValgteMottakere }) => {

const leggTilOrganisasjon = (organisasjonsnummer: string) => () => {
if (!navnHosOrganisasjon) {
settFeil('Oppgi kontaktperson hos organisasjonen');
settFeilmelding('Oppgi kontaktperson hos organisasjonen');
return;
}
settFeil('');
settValgteMottakere([
{
organisasjonsnummer,
navnHosOrganisasjon: navnHosOrganisasjon,
mottakerRolle: 'VERGE',
},
]);

const finnesAllerede = valgteMottakere.some(
(mottaker) => mottaker.organisasjonsnummer === organisasjonsnummer
);

if (!finnesAllerede) {
settValgteMottakere((forrigeMottakere) => [
...forrigeMottakere,
{
organisasjonsnummer,
navnHosOrganisasjon,
mottakerRolle: EBrevmottakerRolle.VERGE,
},
]);
} else {
settFeilmelding('Organisasjonen er allerede lagt til');
}

settFeilmelding('');
};

return (
Expand Down Expand Up @@ -77,10 +89,10 @@ export const SøkOrganisasjon: React.FC<Props> = ({ settValgteMottakere }) => {
placeholder={'Personen brevet skal til'}
value={navnHosOrganisasjon}
onChange={(e) => settNavnHosOrganisasjon(e.target.value)}
error={feil}
autoComplete="off"
/>
</Søkeresultat>
{feilmelding && <AlertError size="small">{feilmelding}</AlertError>}
</>
);
}}
Expand Down
61 changes: 38 additions & 23 deletions src/frontend/Komponenter/Behandling/Brevmottakere/SøkPerson.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,10 @@ import DataViewer from '../../../Felles/DataViewer/DataViewer';
import { EBrevmottakerRolle, IBrevmottaker } from './typer';
import { BodyShort, Button, HStack } from '@navikt/ds-react';
import { Søkefelt, Søkeresultat } from './brevmottakereStyling';
import { AlertError } from '../../../Felles/Visningskomponenter/Alerts';

interface Props {
valgtePersonMottakere: IBrevmottaker[];
settValgteMottakere: Dispatch<SetStateAction<IBrevmottaker[]>>;
}

Expand All @@ -15,10 +17,11 @@ interface PersonSøk {
navn: string;
}

export const SøkPerson: React.FC<Props> = ({ settValgteMottakere }) => {
export const SøkPerson: React.FC<Props> = ({ settValgteMottakere, valgtePersonMottakere }) => {
const { axiosRequest } = useApp();
const [søkIdent, settSøkIdent] = useState('');
const [søkRessurs, settSøkRessurs] = useState(byggTomRessurs<PersonSøk>());
const [feilmelding, settFeilmelding] = useState('');

useEffect(() => {
if (søkIdent && søkIdent.length === 11) {
Expand All @@ -35,10 +38,19 @@ export const SøkPerson: React.FC<Props> = ({ settValgteMottakere }) => {
}, [axiosRequest, søkIdent]);

const leggTilBrevmottaker = (personIdent: string, navn: string) => () => {
settValgteMottakere((prevState) => [
...prevState,
{ navn, personIdent, mottakerRolle: EBrevmottakerRolle.VERGE },
]);
const finnesAllerede = valgtePersonMottakere.some(
(mottaker) => mottaker.personIdent === personIdent
);

if (!finnesAllerede) {
settValgteMottakere((prevState) => [
...prevState,
{ navn, personIdent, mottakerRolle: EBrevmottakerRolle.VERGE },
]);
settFeilmelding('');
} else {
settFeilmelding('Personen er allerede lagt til');
}
};

return (
Expand All @@ -54,24 +66,27 @@ export const SøkPerson: React.FC<Props> = ({ settValgteMottakere }) => {
<DataViewer response={{ søkRessurs }}>
{({ søkRessurs }) => {
return (
<Søkeresultat>
<div>
<BodyShort>{søkRessurs.navn}</BodyShort>
{søkRessurs.personIdent}
</div>
<HStack align="center">
<Button
variant="secondary"
size="small"
onClick={leggTilBrevmottaker(
søkRessurs.personIdent,
søkRessurs.navn
)}
>
Legg til
</Button>
</HStack>
</Søkeresultat>
<>
<Søkeresultat>
<div>
<BodyShort>{søkRessurs.navn}</BodyShort>
{søkRessurs.personIdent}
</div>
<HStack align="center">
<Button
variant="secondary"
size="small"
onClick={leggTilBrevmottaker(
søkRessurs.personIdent,
søkRessurs.navn
)}
>
Legg til
</Button>
</HStack>
</Søkeresultat>
{feilmelding && <AlertError size="small">{feilmelding}</AlertError>}
</>
);
}}
</DataViewer>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import styled from 'styled-components';
import { Ingress, Select } from '@navikt/ds-react';

interface Props {
valgtePersonMottakere: IBrevmottaker[];
settValgtePersonMottakere: Dispatch<SetStateAction<IBrevmottaker[]>>;
valgteOrganisasjonMottakere: IOrganisasjonMottaker[];
settValgteOrganisasjonMottakere: Dispatch<SetStateAction<IOrganisasjonMottaker[]>>;
Expand All @@ -26,6 +27,7 @@ const SøkTypeSelect = styled(Select)`
`;

export const SøkWrapper: FC<Props> = ({
valgtePersonMottakere,
settValgtePersonMottakere,
valgteOrganisasjonMottakere,
settValgteOrganisasjonMottakere,
Expand All @@ -52,7 +54,10 @@ export const SøkWrapper: FC<Props> = ({
/>
)}
{søktype === ESøktype.PERSON && (
<SøkPerson settValgteMottakere={settValgtePersonMottakere} />
<SøkPerson
valgtePersonMottakere={valgtePersonMottakere}
settValgteMottakere={settValgtePersonMottakere}
/>
)}
</>
);
Expand Down
2 changes: 1 addition & 1 deletion src/frontend/Komponenter/Behandling/Brevmottakere/typer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ export interface IBrevmottakere {
export interface IOrganisasjonMottaker {
organisasjonsnummer: string;
navnHosOrganisasjon: string;
mottakerRolle: 'VERGE';
mottakerRolle: EBrevmottakerRolle.VERGE;
}

export enum EBrevmottakerRolle {
Expand Down

0 comments on commit 6f977d6

Please sign in to comment.