Skip to content

Commit 100563d

Browse files
authored
Merge pull request #2805 from navikt/fix/journfore-samvarsavtale-fagsakId
Skal sende med fagsakId på journalføring for samværsberegning eller k…
2 parents 3ea1959 + 64f3bcd commit 100563d

File tree

2 files changed

+43
-5
lines changed

2 files changed

+43
-5
lines changed

src/main/kotlin/no/nav/familie/ef/sak/samværsavtale/SamværsavtaleService.kt

+15-3
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import no.nav.familie.ef.sak.brev.BrevsignaturService
1010
import no.nav.familie.ef.sak.brev.dto.Avsnitt
1111
import no.nav.familie.ef.sak.brev.dto.FritekstBrevRequestDto
1212
import no.nav.familie.ef.sak.brev.dto.FritekstBrevRequestMedSignatur
13+
import no.nav.familie.ef.sak.fagsak.FagsakService
1314
import no.nav.familie.ef.sak.infrastruktur.exception.brukerfeilHvis
1415
import no.nav.familie.ef.sak.infrastruktur.sikkerhet.SikkerhetContext
1516
import no.nav.familie.ef.sak.journalføring.JournalpostClient
@@ -36,6 +37,7 @@ import java.util.UUID
3637
class SamværsavtaleService(
3738
val samværsavtaleRepository: SamværsavtaleRepository,
3839
val behandlingService: BehandlingService,
40+
val fagsakService: FagsakService,
3941
val tilordnetRessursService: TilordnetRessursService,
4042
val barnService: BarnService,
4143
val personopplysningerService: PersonopplysningerService,
@@ -97,12 +99,14 @@ class SamværsavtaleService(
9799
}
98100

99101
fun journalførBeregnetSamvær(request: JournalførBeregnetSamværRequest): String {
100-
validerjournalføringRequest(request)
102+
val eksternFagsakId = fagsakService.finnFagsaker(setOf(request.personIdent)).firstOrNull()?.eksternId
103+
validerjournalføringRequest(request, eksternFagsakId)
104+
101105
val fritekstBrevRequest = lagFritekstBrevRequestMedSignatur(request)
102106
val dokument = brevClient.genererFritekstBrev(fritekstBrevRequest)
103107

104108
val saksbehandler = SikkerhetContext.hentSaksbehandler()
105-
val arkiverDokumentRequest = lagArkiverDokumentRequest(dokument, request.personIdent)
109+
val arkiverDokumentRequest = lagArkiverDokumentRequest(dokument, request.personIdent, eksternFagsakId)
106110
val respons = journalpostClient.arkiverDokument(arkiverDokumentRequest, saksbehandler)
107111

108112
return respons.journalpostId
@@ -130,6 +134,7 @@ class SamværsavtaleService(
130134
private fun lagArkiverDokumentRequest(
131135
pdf: ByteArray,
132136
personIdent: String,
137+
eksternFagsakId: Long?,
133138
): ArkiverDokumentRequest {
134139
val dokument =
135140
Dokument(
@@ -146,6 +151,7 @@ class SamværsavtaleService(
146151
hoveddokumentvarianter = listOf(dokument),
147152
vedleggsdokumenter = listOf(),
148153
journalførendeEnhet = journalførendeEnhet,
154+
fagsakId = eksternFagsakId.toString(),
149155
)
150156
}
151157

@@ -185,12 +191,18 @@ class SamværsavtaleService(
185191
}
186192
}
187193

188-
private fun validerjournalføringRequest(request: JournalførBeregnetSamværRequest) {
194+
private fun validerjournalføringRequest(
195+
request: JournalførBeregnetSamværRequest,
196+
eksternFagsakId: Long?,
197+
) {
189198
brukerfeilHvis(request.notat.isEmpty()) {
190199
"Kan ikke journalføre samværsavtale uten notat"
191200
}
192201
brukerfeilHvis(request.oppsummering.isEmpty()) {
193202
"Kan ikke journalføre samværsavtale uten oppsumering"
194203
}
204+
brukerfeilHvis(eksternFagsakId == null) {
205+
"Kan ikke journalføre samværsavtale på person uten fagsak"
206+
}
195207
}
196208
}

src/test/kotlin/no/nav/familie/ef/sak/samværsavtale/SamværsavtaleServiceTest.kt

+28-2
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,15 @@ import no.nav.familie.ef.sak.behandling.domain.BehandlingStatus.UTREDES
1414
import no.nav.familie.ef.sak.brev.BrevClient
1515
import no.nav.familie.ef.sak.brev.BrevsignaturService
1616
import no.nav.familie.ef.sak.brev.dto.SignaturDto
17+
import no.nav.familie.ef.sak.fagsak.FagsakService
1718
import no.nav.familie.ef.sak.felles.util.BrukerContextUtil
1819
import no.nav.familie.ef.sak.infrastruktur.exception.ApiFeil
1920
import no.nav.familie.ef.sak.journalføring.JournalpostClient
2021
import no.nav.familie.ef.sak.oppgave.TilordnetRessursService
2122
import no.nav.familie.ef.sak.opplysninger.personopplysninger.PersonopplysningerService
2223
import no.nav.familie.ef.sak.repository.behandling
2324
import no.nav.familie.ef.sak.repository.behandlingBarn
25+
import no.nav.familie.ef.sak.repository.fagsak
2426
import no.nav.familie.ef.sak.repository.hovedregelMetadata
2527
import no.nav.familie.ef.sak.repository.samværsavtale
2628
import no.nav.familie.ef.sak.repository.samværsuke
@@ -48,6 +50,7 @@ import java.util.UUID
4850
internal class SamværsavtaleServiceTest {
4951
private val samværsavtaleRepository: SamværsavtaleRepository = mockk()
5052
private val behandlingService: BehandlingService = mockk()
53+
private val fagsakService: FagsakService = mockk()
5154
private val tilordnetRessursService: TilordnetRessursService = mockk()
5255
private val barnService: BarnService = mockk()
5356
private val personopplysningerService: PersonopplysningerService = mockk()
@@ -60,6 +63,7 @@ internal class SamværsavtaleServiceTest {
6063
SamværsavtaleService(
6164
samværsavtaleRepository = samværsavtaleRepository,
6265
behandlingService = behandlingService,
66+
fagsakService = fagsakService,
6367
tilordnetRessursService = tilordnetRessursService,
6468
barnService = barnService,
6569
personopplysningerService = personopplysningerService,
@@ -473,6 +477,7 @@ internal class SamværsavtaleServiceTest {
473477
BrukerContextUtil.mockBrukerContext()
474478
every { brevClient.genererFritekstBrev(any()) } returns "1".toByteArray()
475479
every { arbeidsfordelingService.hentNavEnhetIdEllerBrukMaskinellEnhetHvisNull("123") } returns "4489"
480+
every { fagsakService.finnFagsaker(setOf("123")) } returns listOf(fagsak(eksternId = 1))
476481
every { personopplysningerService.hentGjeldeneNavn(any()) } returns mapOf("123" to "")
477482
every { brevsignaturService.lagSaksbehandlerSignatur(any(), any()) } returns SignaturDto(navn = "saksbehandler", enhet = "4489", skjulBeslutter = false)
478483
every { journalpostClient.arkiverDokument(capture(arkivRequestSlot), any()) } returns ArkiverDokumentResponse("", true)
@@ -493,16 +498,18 @@ internal class SamværsavtaleServiceTest {
493498
assertThat(arkivRequest.hoveddokumentvarianter.first().tittel).isEqualTo("Samværsberegning")
494499
assertThat(arkivRequest.hoveddokumentvarianter.first().dokumenttype).isEqualTo(Dokumenttype.BEREGNET_SAMVÆR_NOTAT)
495500
assertThat(arkivRequest.journalførendeEnhet).isEqualTo("4489")
501+
assertThat(arkivRequest.fagsakId).isEqualTo("1")
496502
}
497503

498504
@Test
499-
internal fun `Skal kaste feil hvis notat string er tom`() {
505+
internal fun `Skal kaste feil ved journalføring av samværsberegning uten notat`() {
500506
val arkivRequestSlot = slot<ArkiverDokumentRequest>()
501507
val journalførRequestTomNotat = JournalførBeregnetSamværRequest("123", listOf(samværsuke(listOf(KVELD_NATT, MORGEN, BARNEHAGE_SKOLE))), "", "oppsumering")
502508

503509
BrukerContextUtil.mockBrukerContext()
504510
every { brevClient.genererFritekstBrev(any()) } returns "1".toByteArray()
505511
every { arbeidsfordelingService.hentNavEnhetIdEllerBrukMaskinellEnhetHvisNull("123") } returns "4489"
512+
every { fagsakService.finnFagsaker(any()) } returns listOf(fagsak(eksternId = 1L))
506513
every { personopplysningerService.hentGjeldeneNavn(any()) } returns mapOf("123" to "")
507514
every { brevsignaturService.lagSaksbehandlerSignatur(any(), any()) } returns SignaturDto(navn = "saksbehandler", enhet = "4489", skjulBeslutter = false)
508515
every { journalpostClient.arkiverDokument(capture(arkivRequestSlot), any()) } returns ArkiverDokumentResponse("", true)
@@ -513,20 +520,39 @@ internal class SamværsavtaleServiceTest {
513520
}
514521

515522
@Test
516-
internal fun `Skal kaste feil hvis oppsumering string er tom`() {
523+
internal fun `Skal kaste feil ved journalføring av samværsberegning uten oppsummering`() {
517524
val arkivRequestSlot = slot<ArkiverDokumentRequest>()
518525
val journalførRequestTomOppsumering = JournalførBeregnetSamværRequest("123", listOf(samværsuke(listOf(KVELD_NATT, MORGEN, BARNEHAGE_SKOLE))), "Notat", "")
519526

520527
BrukerContextUtil.mockBrukerContext()
521528
every { brevClient.genererFritekstBrev(any()) } returns "1".toByteArray()
522529
every { arbeidsfordelingService.hentNavEnhetIdEllerBrukMaskinellEnhetHvisNull("123") } returns "4489"
523530
every { personopplysningerService.hentGjeldeneNavn(any()) } returns mapOf("123" to "")
531+
every { fagsakService.finnFagsaker(any()) } returns listOf(fagsak(eksternId = 1))
524532
every { brevsignaturService.lagSaksbehandlerSignatur(any(), any()) } returns SignaturDto(navn = "saksbehandler", enhet = "4489", skjulBeslutter = false)
525533
every { journalpostClient.arkiverDokument(capture(arkivRequestSlot), any()) } returns ArkiverDokumentResponse("", true)
526534

527535
val feil = assertThrows<ApiFeil> { samværsavtaleService.journalførBeregnetSamvær(journalførRequestTomOppsumering) }
528536

529537
assertThat(feil.message).isEqualTo("Kan ikke journalføre samværsavtale uten oppsumering")
530538
}
539+
540+
@Test
541+
internal fun `Skal kaste feil ved journalføring av samværsberegning på person uten fagsak`() {
542+
val arkivRequestSlot = slot<ArkiverDokumentRequest>()
543+
val journalførRequestTomOppsumering = JournalførBeregnetSamværRequest("123", listOf(samværsuke(listOf(KVELD_NATT, MORGEN, BARNEHAGE_SKOLE))), "Notat", "Oppsummering")
544+
545+
BrukerContextUtil.mockBrukerContext()
546+
every { brevClient.genererFritekstBrev(any()) } returns "1".toByteArray()
547+
every { arbeidsfordelingService.hentNavEnhetIdEllerBrukMaskinellEnhetHvisNull("123") } returns "4489"
548+
every { personopplysningerService.hentGjeldeneNavn(any()) } returns mapOf("123" to "")
549+
every { fagsakService.finnFagsaker(any()) } returns listOf()
550+
every { brevsignaturService.lagSaksbehandlerSignatur(any(), any()) } returns SignaturDto(navn = "saksbehandler", enhet = "4489", skjulBeslutter = false)
551+
every { journalpostClient.arkiverDokument(capture(arkivRequestSlot), any()) } returns ArkiverDokumentResponse("", true)
552+
553+
val feil = assertThrows<ApiFeil> { samværsavtaleService.journalførBeregnetSamvær(journalførRequestTomOppsumering) }
554+
555+
assertThat(feil.message).isEqualTo("Kan ikke journalføre samværsavtale på person uten fagsak")
556+
}
531557
}
532558
}

0 commit comments

Comments
 (0)