Skip to content

Commit

Permalink
Endre slett sikkerhetstiltak paa dolly- og tenor-person, div feilrett…
Browse files Browse the repository at this point in the history
…inger
  • Loading branch information
betsytraran committed Jun 14, 2024
1 parent 50a449e commit 63a0996
Show file tree
Hide file tree
Showing 7 changed files with 198 additions and 109 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,13 @@ export const PdlVisning = ({
ident={ident}
erPdlVisning={miljoeVisning}
/>
<PdlSikkerhetstiltak data={sikkerhetstiltak} />
<PdlSikkerhetstiltak
data={sikkerhetstiltak}
pdlfData={pdlfPerson?.sikkerhetstiltak}
tmpPersoner={tmpPdlforvalter}
ident={ident}
erPdlVisning={miljoeVisning}
/>
<TilrettelagtKommunikasjon data={tilrettelagtKommunikasjon} />
<TpsMBankkonto
data={bankkontoData}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,9 +46,10 @@ export const PdlFullmakt = ({
pdlfRelasjoner,
tmpPersoner,
ident,
erPdlVisning,
erPdlVisning = false,
erRedigerbar = true,
}: DataListe) => {
if (!data || (data.length === 0 && (!tmpPersoner || Object.keys(tmpPersoner).length < 1))) {
if (!data || data.length === 0) {
return null
}

Expand All @@ -66,7 +67,7 @@ export const PdlFullmakt = ({
const pdlfElement = pdlfData?.find(
(element) => element.hendelseId === fullmakt?.metadata?.opplysningsId,
)
if (!erPdlVisning && master !== 'FREG') {
if (erRedigerbar && master !== 'FREG') {
return (
<FullmaktVisning
fullmaktData={pdlfElement || fullmakt}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,12 @@ import { formatDate } from '@/utils/DataFormatter'
import { ErrorBoundary } from '@/components/ui/appError/ErrorBoundary'
import { DollyFieldArray } from '@/components/ui/form/fieldArray/DollyFieldArray'
import { SikkerhetstiltakData } from '@/pages/gruppe/PersonVisning/PersonMiljoeinfo/PdlDataTyper'
import _ from 'lodash'
import { initialSikkerhetstiltak } from '@/components/fagsystem/pdlf/form/initialValues'
import { Person } from '@/components/fagsystem/pdlf/PdlTypes'
import { OpplysningSlettet } from '@/components/fagsystem/pdlf/visning/visningRedigerbar/OpplysningSlettet'
import VisningRedigerbarConnector from '@/components/fagsystem/pdlf/visning/visningRedigerbar/VisningRedigerbarConnector'
import React from 'react'

type Data = {
data: SikkerhetstiltakData
Expand All @@ -13,33 +19,104 @@ type DataListe = {
data: Array<SikkerhetstiltakData>
}

export const Visning = ({ data }: Data) => {
const SikkerhetstiltakLes = ({ data, idx }: Data) => {
return (
<>
<div className="person-visning_content">
<ErrorBoundary>
<TitleValue title="Gyldig fra og med" value={formatDate(data.gyldigFraOgMed)} />
<TitleValue title="Gyldig til og med" value={formatDate(data.gyldigTilOgMed)} />
<TitleValue title="Tiltakstype" value={data.tiltakstype} />
<TitleValue title="Beskrivelse" value={data.beskrivelse} />
<TitleValue title="Kontaktperson ident" value={data.kontaktperson.personident} />
<TitleValue title="NAV kontor" value={data.kontaktperson.enhet} />
</ErrorBoundary>
</div>
</>
<div className="person-visning_content" key={idx}>
<ErrorBoundary>
<TitleValue title="Gyldig fra og med" value={formatDate(data.gyldigFraOgMed)} />
<TitleValue title="Gyldig til og med" value={formatDate(data.gyldigTilOgMed)} />
<TitleValue title="Tiltakstype" value={data.tiltakstype} />
<TitleValue title="Beskrivelse" value={data.beskrivelse} />
<TitleValue title="Kontaktperson ident" value={data.kontaktperson.personident} />
<TitleValue title="NAV kontor" value={data.kontaktperson.enhet} />
</ErrorBoundary>
</div>
)
}

export const SikkerhetstiltakVisningRedigerbar = ({
sikkerhetstiltak,
idx,
tmpPersoner,
data,
erPdlVisning,
ident,
master,
}) => {
const initSikkerhetstiltak = Object.assign(_.cloneDeep(initialSikkerhetstiltak), data[idx])
const initialValues = { sikkerhetstiltak: initSikkerhetstiltak }

const redigertSikkerhetstiltakPdlf = _.get(tmpPersoner, `${ident}.person.sikkerhetstiltak`)?.find(
(a: Person) => a.id === sikkerhetstiltak.id,
)
const slettetSikkerhetstiltakPdlf =
tmpPersoner?.hasOwnProperty(ident) && !redigertSikkerhetstiltakPdlf
if (slettetSikkerhetstiltakPdlf) {
return <OpplysningSlettet />
}

const sikkerhetstiltakValues = redigertSikkerhetstiltakPdlf
? redigertSikkerhetstiltakPdlf
: sikkerhetstiltak
const redigertSikkerhetstiltaklValues = redigertSikkerhetstiltakPdlf
? {
sikkerhetstiltak: Object.assign(
_.cloneDeep(initSikkerhetstiltak),
redigertSikkerhetstiltakPdlf,
),
}
: null

return erPdlVisning ? (
<SikkerhetstiltakLes data={sikkerhetstiltak} idx={idx} />
) : (
<VisningRedigerbarConnector
dataVisning={<SikkerhetstiltakLes data={sikkerhetstiltakValues} idx={idx} />}
initialValues={initialValues}
redigertAttributt={redigertSikkerhetstiltaklValues}
path="sikkerhetstiltak"
ident={ident}
master={master}
/>
)
}

export const PdlSikkerhetstiltak = ({ data }: DataListe) => {
export const PdlSikkerhetstiltak = ({
data,
pdlfData,
tmpPersoner,
ident,
erPdlVisning,
}: DataListe) => {
if (!data || data.length === 0) {
return null
}

return (
<div>
<SubOverskrift label="Sikkerhetstiltak" iconKind="sikkerhetstiltak" />
{/* @ts-ignore */}
<DollyFieldArray data={data} nested>
{(sikkerhetstiltak: SikkerhetstiltakData) => <Visning data={sikkerhetstiltak} />}
{(sikkerhetstiltak: SikkerhetstiltakData, idx: number) => {
const master = sikkerhetstiltak?.metadata?.master
const pdlfElement = pdlfData?.find(
(element) => element.hendelseId === sikkerhetstiltak?.metadata?.opplysningsId,
)
if (!erPdlVisning && master !== 'FREG') {
return (
<SikkerhetstiltakVisningRedigerbar
sikkerhetstiltak={pdlfElement || sikkerhetstiltak}
idx={idx}
data={pdlfData || data}
tmpPersoner={tmpPersoner}
ident={ident}
erPdlVisning={erPdlVisning}
master={master}
/>
)
}
return <SikkerhetstiltakLes data={sikkerhetstiltak} />
}}
</DollyFieldArray>
</div>
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,114 +20,109 @@ interface SikkerhetstiltakProps {
formMethods: UseFormReturn
}

export const Sikkerhetstiltak = ({ formMethods }: SikkerhetstiltakProps) => {
export const SikkerhetstiltakForm = ({ formMethods, path }: SikkerhetstiltakProps) => {
const opts = useContext(BestillingsveilederContext)
const [randomNavUsers, setRandomNavUsers] = useState([])

const { navEnheter } = useNavEnheter()

useEffect(() => {
setRandomNavUsers(genererTilfeldigeNavPersonidenter())
}, [])

const rootPath = 'pdldata.person.sikkerhetstiltak'

const sikkerhetstiltakListe = formMethods.watch(rootPath)

if (!sikkerhetstiltakListe) {
return null
}

const indexBeskrSikkerhetTiltak = 7

const handleSikkerhetstiltakChange = (option: Option, idx: number) => {
handleValueChange(option.value, 'tiltakstype', idx)
const handleSikkerhetstiltakChange = (option: Option) => {
handleValueChange(option.value, 'tiltakstype')
handleValueChange(
option.label === 'Opphørt' ? option.label : option.label.substring(indexBeskrSikkerhetTiltak),
'beskrivelse',
idx,
)
}

const handleValueChange = (value: Date | string, name: string, idx: number) => {
formMethods.setValue(`${rootPath}[${idx}].${name}`, value)
formMethods.trigger(rootPath)
const handleValueChange = (value: Date | string, name: string) => {
formMethods.setValue(`${path}.${name}`, value)
formMethods.trigger('pdldata.person.sikkerhetstiltak')
}

const personident = formMethods.watch(`${path}.kontaktperson.personident`)
const gyldigFraOgMed = formMethods.watch(`path.gyldigFraOgMed`)

return (
<Vis attributt={rootPath}>
<div className="flexbox--flex-wrap">
<FormDollyFieldArray
name={rootPath}
header="Sikkerhetstiltak"
newEntry={initialSikkerhetstiltak}
canBeEmpty={false}
>
{(path: string, idx: number) => {
const personident = formMethods.watch(`${path}.kontaktperson.personident`)
const gyldigFraOgMed = formMethods.watch(
`pdldata.person.sikkerhetstiltak[${idx}].gyldigFraOgMed`,
)
return (
<>
<DollySelect
name={`${path}.tiltakstype`}
label="Type sikkerhetstiltak"
options={
opts.personFoerLeggTil
? Options('sikkerhetstiltakType')
: Options('sikkerhetstiltakType').filter(
(option) => option.label !== 'Opphørt',
)
}
size="large"
onChange={(option: Option) => handleSikkerhetstiltakChange(option, idx)}
value={formMethods.watch(`${path}.tiltakstype`)}
isClearable={false}
/>
<FormSelect
options={
_.isEmpty(personident)
? randomNavUsers
: randomNavUsers.concat({ value: personident, label: personident })
}
isClearable={false}
name={`${path}.kontaktperson.personident`}
placeholder={'Velg ...'}
label={'Kontaktperson'}
/>
<FormSelect
name={`${path}.kontaktperson.enhet`}
label={'NAV kontor'}
size={'xxxlarge'}
options={navEnheter}
/>
<InputWarning
visWarning={gyldigFraOgMed && !isToday(gyldigFraOgMed)}
warningText="TPS støtter kun sikkerhetstiltak fra gjeldende dato. Endre til dagens dato dersom et
<div className="flexbox--flex-wrap">
<DollySelect
name={`${path}.tiltakstype`}
label="Type sikkerhetstiltak"
options={
opts?.personFoerLeggTil
? Options('sikkerhetstiltakType')
: Options('sikkerhetstiltakType').filter((option) => option.label !== 'Opphørt')
}
size="large"
onChange={(option: Option) => handleSikkerhetstiltakChange(option)}
value={formMethods.watch(`${path}.tiltakstype`)}
isClearable={false}
/>
<FormSelect
options={
_.isEmpty(personident)
? randomNavUsers
: randomNavUsers.concat({ value: personident, label: personident })
}
isClearable={false}
name={`${path}.kontaktperson.personident`}
placeholder={'Velg ...'}
label={'Kontaktperson'}
/>
<FormSelect
name={`${path}.kontaktperson.enhet`}
label={'NAV kontor'}
size={'xxxlarge'}
options={navEnheter}
/>
<InputWarning
visWarning={gyldigFraOgMed && !isToday(gyldigFraOgMed)}
warningText="TPS støtter kun sikkerhetstiltak fra gjeldende dato. Endre til dagens dato dersom et
gyldig sikkerhetstiltak fra TPS er ønsket."
>
<FormDatepicker
name={`${path}.gyldigFraOgMed`}
label="Sikkerhetstiltak starter"
onChange={(date: Date) => {
handleValueChange(date, 'gyldigFraOgMed', idx)
}}
/>
</InputWarning>
<FormDatepicker
name={`${path}.gyldigTilOgMed`}
label="Sikkerhetstiltak opphører"
onChange={(date: Date) => {
handleValueChange(date, 'gyldigTilOgMed', idx)
}}
/>
<AvansertForm path={path} kanVelgeMaster={false} />
</>
)
>
<FormDatepicker
name={`${path}.gyldigFraOgMed`}
label="Sikkerhetstiltak starter"
onChange={(date: Date) => {
handleValueChange(date, 'gyldigFraOgMed')
}}
</FormDollyFieldArray>
</div>
/>
</InputWarning>
<FormDatepicker
name={`${path}.gyldigTilOgMed`}
label="Sikkerhetstiltak opphører"
onChange={(date: Date) => {
handleValueChange(date, 'gyldigTilOgMed')
}}
/>
<AvansertForm path={path} kanVelgeMaster={false} />
</div>
)
}

export const Sikkerhetstiltak = ({ formMethods }: SikkerhetstiltakProps) => {
const rootPath = 'pdldata.person.sikkerhetstiltak'

const sikkerhetstiltakListe = formMethods.watch(rootPath)

if (!sikkerhetstiltakListe) {
return null
}

return (
<Vis attributt={rootPath}>
<FormDollyFieldArray
name={rootPath}
header="Sikkerhetstiltak"
newEntry={initialSikkerhetstiltak}
canBeEmpty={false}
>
{(path: string) => <SikkerhetstiltakForm formMethods={formMethods} path={path} />}
</FormDollyFieldArray>
</Vis>
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,12 @@ export const PdlfVisning = ({ fagsystemData, loading, tmpPersoner, erRedigerbar
relasjoner={data?.relasjoner}
erRedigerbar={erRedigerbar}
/>
<PdlSikkerhetstiltak data={data?.person?.sikkerhetstiltak} />
<PdlSikkerhetstiltak
data={data?.person?.sikkerhetstiltak}
tmpPersoner={tmpPdlforvalter}
ident={ident}
erRedigerbar={erRedigerbar}
/>
<TilrettelagtKommunikasjon data={data?.person?.tilrettelagtKommunikasjon} />
<TpsMBankkonto
data={bankkontoData}
Expand Down
Loading

0 comments on commit 63a0996

Please sign in to comment.