Skip to content

Commit

Permalink
småfikser
Browse files Browse the repository at this point in the history
  • Loading branch information
Watercolours committed Dec 10, 2024
1 parent 3e9d272 commit 0cef806
Show file tree
Hide file tree
Showing 4 changed files with 74 additions and 35 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ import io.ktor.server.routing.post
import io.ktor.server.routing.put
import io.ktor.server.routing.route
import io.ktor.util.pipeline.PipelineContext
import java.util.UUID
import no.nav.etterlatte.Kontekst
import no.nav.etterlatte.inTransaction
import no.nav.etterlatte.libs.common.feilhaandtering.UgyldigForespoerselException
Expand All @@ -34,6 +33,7 @@ import no.nav.etterlatte.libs.ktor.route.sakId
import no.nav.etterlatte.libs.ktor.token.brukerTokenInfo
import no.nav.etterlatte.tilgangsstyring.kunSaksbehandlerMedSkrivetilgang
import no.nav.etterlatte.tilgangsstyring.kunSkrivetilgang
import java.util.UUID

inline val PipelineContext<*, ApplicationCall>.referanse: String
get() =
Expand Down Expand Up @@ -153,9 +153,9 @@ internal fun Route.oppgaveRoutes(service: OppgaveService) {
val request = call.receive<TildelingBulkRequest>()

inTransaction {
request.saksbehandlerOgOppgave
.forEach { (saksbehandlerIdent, oppgaveId) ->
service.tildelSaksbehandler(oppgaveId, saksbehandlerIdent)
request.oppgaver
.forEach { oppgaveId ->
service.tildelSaksbehandler(oppgaveId, request.saksbehandler)
}
}

Expand Down Expand Up @@ -321,5 +321,6 @@ internal fun Route.oppgaveRoutes(service: OppgaveService) {
}

internal data class TildelingBulkRequest(
val saksbehandlerOgOppgave: Map<String, UUID>,
val saksbehandler: String,
val oppgaver: List<UUID>,
)
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,12 @@ import {
} from '@navikt/ds-react'
import { PersonCrossIcon, PersonIcon, PersonPencilIcon, PersonPlusIcon } from '@navikt/aksel-icons'
import styled from 'styled-components'
import { fjernSaksbehandlerApi, hentOppgaverMedGruppeId, tildelSaksbehandlerApi } from '~shared/api/oppgaver'
import {
fjernSaksbehandlerApi,
hentOppgaverMedGruppeId,
tildelBulkApi,
tildelSaksbehandlerApi,
} from '~shared/api/oppgaver'
import { useApiCall } from '~shared/hooks/useApiCall'
import { Saksbehandler } from '~shared/types/saksbehandler'
import { enhetErSkrivbar } from '~components/behandling/felles/utils'
Expand All @@ -26,6 +31,8 @@ import { formaterDato } from '~utils/formatering/dato'
import { PersonLink } from '~components/person/lenker/PersonLink'
import { SakTypeTag } from '~shared/tags/SakTypeTag'
import { OppgavetypeTag } from '~shared/tags/OppgavetypeTag'
import { ClickEvent, trackClickJaNei } from '~utils/amplitude'
import { JaNei } from '~shared/types/ISvar'

interface Props {
saksbehandlereIEnhet: Array<Saksbehandler>
Expand Down Expand Up @@ -57,39 +64,37 @@ export const VelgSaksbehandler = ({ saksbehandlereIEnhet, oppdaterTildeling, opp

const [oppgaverResult, apiHentOppgaver] = useApiCall(hentOppgaverMedGruppeId)
const [fjernSaksbehandlerResult, fjernSaksbehandler] = useApiCall(fjernSaksbehandlerApi)
const [byttSaksbehandlerResult, byttSaksbehandler, resetByttSaksbehandler] = useApiCall(tildelSaksbehandlerApi)
const [byttSaksbehandlerResult, byttSaksbehandler] = useApiCall(tildelSaksbehandlerApi)
const [tildelBulkResult, tildelBulk] = useApiCall(tildelBulkApi)

const tildel = (saksbehandler: Saksbehandler) => {
const oppgaverSomSkalTildeles = [...valgteOppgaver, oppgave]
if (!!valgteOppgaver.length) {
const oppgaverSomSkalTildeles = [...valgteOppgaver, oppgave]

oppgaverSomSkalTildeles.forEach((valgtOppgave) =>
tildelBulk({ saksbehandler: saksbehandler.ident, oppgaver: oppgaverSomSkalTildeles.map((o) => o.id) }, () => {
oppgaverSomSkalTildeles.forEach((o) => oppdaterTildeling(o, saksbehandler))
setValgtSaksbehandler(saksbehandler)
setOpenDropdown(false)
setIsModalOpen(false)
})
} else {
byttSaksbehandler(
{ oppgaveId: valgtOppgave.id, saksbehandlerIdent: saksbehandler.ident },
{ oppgaveId, saksbehandlerIdent: saksbehandler.ident },
() => {
oppdaterTildeling(valgtOppgave, saksbehandler)
oppdaterTildeling(oppgave, saksbehandler)
setValgtSaksbehandler(saksbehandler)
setOpenDropdown(false)
resetByttSaksbehandler()
},
(error) => console.log(error)
)
)

console.log('ferdig')
}
}

const startTildeling = (saksbehandler: Saksbehandler, tildelOverstyr?: boolean) => {
if (valgteOppgaver.length && !tildelOverstyr) {
setIsModalOpen(true)
setOpenDropdown(false)
setValgtSaksbehandler(saksbehandler)

/*apiHentOppgaver({ gruppeId: oppgave.gruppeId, type: oppgave.type }, (oppgaver) => {
if (oppgaver) {
} else {
tildel(saksbehandler)
}
})*/
} else {
tildel(saksbehandler)
}
Expand Down Expand Up @@ -132,9 +137,6 @@ export const VelgSaksbehandler = ({ saksbehandlereIEnhet, oppdaterTildeling, opp
apiHentOppgaver({ gruppeId: oppgave.gruppeId, type: oppgave.type }, (oppgaver) => {
if (oppgaver.length > 1) {
setValgteOppgaver(oppgaver)
// setIsModalOpen(true)
// setOpenDropdown(false)
// setValgtSaksbehandler(saksbehandler)
}
})
}
Expand Down Expand Up @@ -182,9 +184,17 @@ export const VelgSaksbehandler = ({ saksbehandlereIEnhet, oppdaterTildeling, opp
</Table.Header>
<Table.Body>
{oppgaver.map((oppgave: OppgaveDTO) => (
<Table.Row key={`${oppgave.id}-${oppgave.gruppeId}`}>
<Table.Row
key={`${oppgave.id}-${oppgave.gruppeId}`}
style={
oppgave.id === oppgaveId
? { backgroundColor: 'var(--a-surface-success-subtle)' }
: undefined
}
>
<Table.DataCell>
<Checkbox
disabled={oppgave.id === oppgaveId}
checked={valgteOppgaver.map((o) => o.id).includes(oppgave.id)}
onChange={(e) => {
if (e.target.checked) {
Expand All @@ -193,8 +203,9 @@ export const VelgSaksbehandler = ({ saksbehandlereIEnhet, oppdaterTildeling, opp
setValgteOppgaver([...valgteOppgaver.filter((o) => o.id !== oppgave.id)])
}
}}
hideLabel
>
{undefined} {/* Checkbox-komponenten krever innhold */}
Velg oppgave
</Checkbox>
</Table.DataCell>
<Table.DataCell>{oppgave.sakId}</Table.DataCell>
Expand All @@ -221,17 +232,34 @@ export const VelgSaksbehandler = ({ saksbehandlereIEnhet, oppdaterTildeling, opp
<Button
variant="secondary"
onClick={lukkGrupperteOppgaver}
disabled={isPending(byttSaksbehandlerResult)}
disabled={isPending(tildelBulkResult)}
>
Avbryt
</Button>
<Button
variant="primary"
onClick={() => tildel(valgtSaksbehandler!!)}
loading={isPending(byttSaksbehandlerResult)}
>
{oppgaver.length === valgteOppgaver.length ? 'Ja, tildel alle' : 'Tildel valgte'}
</Button>

{oppgaver.length === valgteOppgaver.length ? (
<Button
variant="primary"
onClick={() => {
trackClickJaNei(ClickEvent.TILDEL_ALLE_TILKNYTTEDE_OPPGAVER, JaNei.JA)
tildel(valgtSaksbehandler!!)
}}
loading={isPending(tildelBulkResult)}
>
Ja, tildel alle
</Button>
) : (
<Button
variant="primary"
onClick={() => {
trackClickJaNei(ClickEvent.TILDEL_ALLE_TILKNYTTEDE_OPPGAVER, JaNei.NEI)
tildel(valgtSaksbehandler!!)
}}
loading={isPending(tildelBulkResult)}
>
Tildel valgte
</Button>
)}
</HStack>
</VStack>
</Box>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,10 @@ export const tildelSaksbehandlerApi = async (args: {
return apiClient.post(`/oppgaver/${args.oppgaveId}/tildel-saksbehandler`, { saksbehandler: args.saksbehandlerIdent })
}

export const tildelBulkApi = async (request: TildelingBulkRequest): Promise<ApiResponse<void>> => {
return apiClient.post(`/oppgaver/bulk/tildel`, { ...request })
}

export const fjernSaksbehandlerApi = async (args: { oppgaveId: string }): Promise<ApiResponse<void>> => {
return apiClient.delete(`/oppgaver/${args.oppgaveId}/saksbehandler`)
}
Expand All @@ -101,3 +105,8 @@ export const settOppgavePaaVentApi = async (args: {
}): Promise<ApiResponse<OppgaveDTO>> => {
return apiClient.post(`/oppgaver/${args.oppgaveId}/sett-paa-vent`, { ...args.settPaaVentRequest })
}

export interface TildelingBulkRequest {
saksbehandler: string
oppgaver: string[]
}
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ export enum ClickEvent {
// Oppgave
OPPRETT_GENERELL_OPPGAVE = 'opprett generell oppgave',
OPPRETT_JOURNALFOERINGSOPPGAVE = 'opprett journalfoeringsoppgave',
TILDEL_ALLE_TILKNYTTEDE_OPPGAVER = 'tildel alle tilknyttede oppgaver',

// Avkorting
AVKORTING_FORVENTET_INNTEKT_HJELPETEKST = 'avkorting forventet inntekt hjelpetekst',
Expand Down

0 comments on commit 0cef806

Please sign in to comment.