Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Forenkling og avgrensning i BrevsignaturService ifm utledning av "skjulSaksbehandler"-flagget #2773

Closed
wants to merge 12 commits into from
Closed
Show file tree
Hide file tree
Changes from 6 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 12 additions & 11 deletions src/main/kotlin/no/nav/familie/ef/sak/brev/BrevsignaturService.kt
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import no.nav.familie.ef.sak.brev.dto.SignaturDto
import no.nav.familie.ef.sak.fagsak.domain.Fagsak
import no.nav.familie.ef.sak.infrastruktur.sikkerhet.SikkerhetContext
import no.nav.familie.ef.sak.opplysninger.personopplysninger.PersonopplysningerService
import no.nav.familie.ef.sak.vedtak.VedtakService
import no.nav.familie.ef.sak.vedtak.domain.VedtakErUtenBeslutter
import no.nav.familie.kontrakter.felles.personopplysning.ADRESSEBESKYTTELSEGRADERING.STRENGT_FORTROLIG
import no.nav.familie.kontrakter.felles.personopplysning.ADRESSEBESKYTTELSEGRADERING.STRENGT_FORTROLIG_UTLAND
Expand All @@ -13,22 +14,22 @@ import org.springframework.stereotype.Service
@Service
class BrevsignaturService(
val personopplysningerService: PersonopplysningerService,
val vedtakService: VedtakService,
) {
fun lagSignaturMedEnhet(saksbehandling: Saksbehandling): SignaturDto = lagSignaturDto(saksbehandling.ident)

fun lagSignaturMedEnhet(fagsak: Fagsak): SignaturDto = lagSignaturDto(fagsak.hentAktivIdent())
fun lagSignaturMedEnhet(
fagsak: Fagsak,
vedtakErUtenBeslutter: VedtakErUtenBeslutter,
): SignaturDto = lagSignaturDto(fagsak.hentAktivIdent(), vedtakErUtenBeslutter)

fun lagSignaturMedEnhet(
saksbehandling: Saksbehandling,
vedtakErUtenBeslutter: VedtakErUtenBeslutter,
): SignaturDto {
if (vedtakErUtenBeslutter.value) {
return SignaturDto("", "", true)
}
return lagSignaturMedEnhet(saksbehandling)
}
): SignaturDto = lagSignaturDto(saksbehandling.ident, vedtakErUtenBeslutter)

private fun lagSignaturDto(ident: String): SignaturDto {
private fun lagSignaturDto(
ident: String,
vedtakErUtenBeslutter: VedtakErUtenBeslutter,
): SignaturDto {
val harStrengtFortroligAdresse: Boolean =
personopplysningerService
.hentStrengesteAdressebeskyttelseForPersonMedRelasjoner(ident)
Expand All @@ -37,7 +38,7 @@ class BrevsignaturService(
return if (harStrengtFortroligAdresse) {
SignaturDto(NAV_ANONYM_NAVN, ENHET_VIKAFOSSEN, true)
} else {
SignaturDto(SikkerhetContext.hentSaksbehandlerNavn(true), ENHET_NAY, false)
SignaturDto(SikkerhetContext.hentSaksbehandlerNavn(true), ENHET_NAY, vedtakErUtenBeslutter.value)
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import no.nav.familie.ef.sak.infrastruktur.exception.brukerfeilHvis
import no.nav.familie.ef.sak.infrastruktur.sikkerhet.SikkerhetContext
import no.nav.familie.ef.sak.iverksett.IverksettClient
import no.nav.familie.ef.sak.iverksett.tilIverksettDto
import no.nav.familie.ef.sak.vedtak.domain.VedtakErUtenBeslutter
import no.nav.familie.kontrakter.ef.iverksett.Brevmottaker
import no.nav.familie.kontrakter.felles.objectMapper
import org.springframework.stereotype.Service
Expand All @@ -37,7 +38,7 @@ class FrittståendeBrevService(
brevrequest: JsonNode,
): ByteArray {
val fagsak = fagsakService.hentFagsak(fagsakId)
val signatur = brevsignaturService.lagSignaturMedEnhet(fagsak)
val signatur = brevsignaturService.lagSignaturMedEnhet(fagsak, VedtakErUtenBeslutter(true))

val html =
brevClient
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import no.nav.familie.ef.sak.infrastruktur.exception.feilHvisIkke
import no.nav.familie.ef.sak.infrastruktur.sikkerhet.SikkerhetContext
import no.nav.familie.ef.sak.oppgave.TilordnetRessursService
import no.nav.familie.ef.sak.repository.findByIdOrThrow
import no.nav.familie.ef.sak.vedtak.VedtakService
import no.nav.familie.ef.sak.vedtak.domain.VedtakErUtenBeslutter
import org.springframework.http.HttpStatus
import org.springframework.stereotype.Service
Expand All @@ -31,6 +32,7 @@ class VedtaksbrevService(
private val brevsignaturService: BrevsignaturService,
private val familieDokumentClient: FamilieDokumentClient,
private val tilordnetRessursService: TilordnetRessursService,
private val vedtakService: VedtakService,
) {
fun hentBeslutterbrevEllerRekonstruerSaksbehandlerBrev(behandlingId: UUID): ByteArray {
val vedtaksbrev = brevRepository.findByIdOrThrow(behandlingId)
Expand All @@ -51,8 +53,9 @@ class VedtaksbrevService(
brevmal: String,
): ByteArray {
validerRedigerbarBehandling(saksbehandling)

val saksbehandlersignatur = brevsignaturService.lagSignaturMedEnhet(saksbehandling)
val vedtak = vedtakService.hentVedtak(saksbehandling.id)
val vedtakErUtenBeslutter = vedtak.utledVedtakErUtenBeslutter()
val saksbehandlersignatur = brevsignaturService.lagSignaturMedEnhet(saksbehandling, vedtakErUtenBeslutter)

val html =
brevClient.genererHtml(
Expand Down Expand Up @@ -100,7 +103,9 @@ class VedtaksbrevService(

fun forhåndsvisBeslutterBrev(saksbehandling: Saksbehandling): ByteArray {
val vedtaksbrev = brevRepository.findByIdOrThrow(saksbehandling.id)
val signaturMedEnhet = brevsignaturService.lagSignaturMedEnhet(saksbehandling)
val vedtak = vedtakService.hentVedtak(saksbehandling.id)
val vedtakErUtenBeslutter = vedtak.utledVedtakErUtenBeslutter()
val signaturMedEnhet = brevsignaturService.lagSignaturMedEnhet(saksbehandling, vedtakErUtenBeslutter)

feilHvis(vedtaksbrev.saksbehandlerHtml == null) {
"Mangler saksbehandlerbrev"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,19 +6,21 @@ import no.nav.familie.ef.sak.felles.util.BrukerContextUtil
import no.nav.familie.ef.sak.opplysninger.personopplysninger.PersonopplysningerService
import no.nav.familie.ef.sak.repository.fagsak
import no.nav.familie.ef.sak.repository.fagsakpersoner
import no.nav.familie.ef.sak.vedtak.VedtakService
import no.nav.familie.ef.sak.vedtak.domain.VedtakErUtenBeslutter
import no.nav.familie.kontrakter.felles.personopplysning.ADRESSEBESKYTTELSEGRADERING
import org.assertj.core.api.Assertions
import org.junit.jupiter.api.Test

internal class BrevsignaturServiceTest {
val personopplysningerService = mockk<PersonopplysningerService>()

val brevsignaturService = BrevsignaturService(personopplysningerService)
val vedtakService = mockk<VedtakService>()
val brevsignaturService = BrevsignaturService(personopplysningerService, vedtakService)

@Test
fun `skal sende frittstående brev med NAV Vikafossen signatur `() {
every { personopplysningerService.hentStrengesteAdressebeskyttelseForPersonMedRelasjoner(any()) } returns ADRESSEBESKYTTELSEGRADERING.STRENGT_FORTROLIG
val signaturMedEnhet = brevsignaturService.lagSignaturMedEnhet(fagsak(identer = fagsakpersoner(setOf("123"))))
val signaturMedEnhet = brevsignaturService.lagSignaturMedEnhet(fagsak(identer = fagsakpersoner(setOf("123"))), VedtakErUtenBeslutter(true))
Assertions.assertThat(signaturMedEnhet.enhet).isEqualTo(BrevsignaturService.ENHET_VIKAFOSSEN)
Assertions.assertThat(signaturMedEnhet.navn).isEqualTo(BrevsignaturService.NAV_ANONYM_NAVN)
}
Expand All @@ -29,7 +31,7 @@ internal class BrevsignaturServiceTest {
BrukerContextUtil.mockBrukerContext(fortventetSaksbehandlerNavn)
every { personopplysningerService.hentStrengesteAdressebeskyttelseForPersonMedRelasjoner(any()) } returns ADRESSEBESKYTTELSEGRADERING.UGRADERT

val signaturMedEnhet = brevsignaturService.lagSignaturMedEnhet(fagsak(identer = fagsakpersoner(setOf("123"))))
val signaturMedEnhet = brevsignaturService.lagSignaturMedEnhet(fagsak(identer = fagsakpersoner(setOf("123"))), VedtakErUtenBeslutter(true))

Assertions.assertThat(signaturMedEnhet.enhet).isEqualTo(BrevsignaturService.ENHET_NAY)
Assertions.assertThat(signaturMedEnhet.navn).isEqualTo(fortventetSaksbehandlerNavn)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,7 @@ internal class FrittståendeBrevServiceTest {
every { fagsakService.hentFagsak(any()) } returns fagsak
every { fagsakService.hentEksternId(any()) } returns Long.MAX_VALUE
every { arbeidsfordelingService.hentNavEnhetIdEllerBrukMaskinellEnhetHvisNull(any()) } returns "123"
every { brevsignaturService.lagSignaturMedEnhet(any<Fagsak>()) } returns
every { brevsignaturService.lagSignaturMedEnhet(any<Fagsak>(), any()) } returns
SignaturDto(
"Navn Navnesen",
"En enhet",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@ import no.nav.familie.ef.sak.repository.behandling
import no.nav.familie.ef.sak.repository.fagsak
import no.nav.familie.ef.sak.repository.findByIdOrThrow
import no.nav.familie.ef.sak.repository.saksbehandling
import no.nav.familie.ef.sak.repository.vedtak
import no.nav.familie.ef.sak.vedtak.VedtakService
import no.nav.familie.ef.sak.vedtak.domain.VedtakErUtenBeslutter
import no.nav.familie.kontrakter.felles.objectMapper
import no.nav.familie.kontrakter.felles.personopplysning.ADRESSEBESKYTTELSEGRADERING.STRENGT_FORTROLIG
Expand All @@ -45,7 +47,8 @@ internal class VedtaksbrevServiceTest {
private val brevClient = mockk<BrevClient>()
private val vedtaksbrevRepository = mockk<VedtaksbrevRepository>()
private val personopplysningerService = mockk<PersonopplysningerService>()
private val brevsignaturService = BrevsignaturService(personopplysningerService)
private val vedtakService: VedtakService = mockk<VedtakService>()
private val brevsignaturService = BrevsignaturService(personopplysningerService, vedtakService)
private val familieDokumentClient = mockk<FamilieDokumentClient>()
private val tilordnetRessursService = mockk<TilordnetRessursService>()

Expand All @@ -56,6 +59,7 @@ internal class VedtaksbrevServiceTest {
brevsignaturService,
familieDokumentClient,
tilordnetRessursService,
vedtakService,
)

private val vedtakKreverBeslutter = VedtakErUtenBeslutter(false)
Expand All @@ -68,6 +72,7 @@ internal class VedtaksbrevServiceTest {
fun setUp() {
mockBrukerContext(beslutterNavn)
every { personopplysningerService.hentStrengesteAdressebeskyttelseForPersonMedRelasjoner(any()) } returns UGRADERT
every { vedtakService.hentVedtak(any()) } returns vedtak(behandling.id)
}

@AfterEach
Expand All @@ -76,7 +81,7 @@ internal class VedtaksbrevServiceTest {
}

@Test
internal fun `skal lage tom signatur hvis vedtak er uten beslutter`() {
internal fun `skal fortsatt sette saksbehandler og enhet hvis vedtakErUtenBeslutter er true`() {
val vedtaksbrevSlot = slot<Vedtaksbrev>()

val ident = "12345678910"
Expand All @@ -99,8 +104,8 @@ internal class VedtaksbrevServiceTest {

assertThat(vedtaksbrevSlot.captured.saksbehandlersignatur).isNotNull
assertThat(vedtaksbrevSlot.captured.beslutterident).isEqualTo(beslutterNavn)
assertThat(vedtaksbrevSlot.captured.besluttersignatur).isEqualTo("")
assertThat(vedtaksbrevSlot.captured.enhet).isEqualTo("")
assertThat(vedtaksbrevSlot.captured.besluttersignatur).isNotEmpty()
assertThat(vedtaksbrevSlot.captured.enhet).isNotEmpty()
throndi marked this conversation as resolved.
Show resolved Hide resolved
assertThat(vedtaksbrevSlot.captured.beslutterPdf).isNotNull
}

Expand Down