Skip to content

Commit

Permalink
Splitt ut typer fra BrevService.kt
Browse files Browse the repository at this point in the history
  • Loading branch information
hestad committed Jun 5, 2024
1 parent 1cf96e2 commit 5dac3c6
Show file tree
Hide file tree
Showing 8 changed files with 152 additions and 141 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ import dokument.domain.brev.KunneIkkeDistribuereBrev
import dokument.domain.distribuering.DokDistFordeling
import no.nav.su.se.bakover.common.journal.JournalpostId
import no.nav.su.se.bakover.service.journalføring.JournalføringOgDistribueringsResultat
import no.nav.su.se.bakover.service.journalføring.JournalføringOgDistribueringsResultat.Companion.logResultat
import no.nav.su.se.bakover.service.journalføring.JournalføringOgDistribueringsResultat.Companion.tilResultat
import no.nav.su.se.bakover.service.journalføring.logResultat
import org.slf4j.Logger
import org.slf4j.LoggerFactory

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ import dokument.domain.journalføring.brev.JournalførBrevCommand
import no.nav.su.se.bakover.common.journal.JournalpostId
import no.nav.su.se.bakover.domain.sak.SakService
import no.nav.su.se.bakover.service.journalføring.JournalføringOgDistribueringsResultat
import no.nav.su.se.bakover.service.journalføring.JournalføringOgDistribueringsResultat.Companion.logResultat
import no.nav.su.se.bakover.service.journalføring.JournalføringOgDistribueringsResultat.Companion.tilResultat
import no.nav.su.se.bakover.service.journalføring.logResultat
import org.slf4j.Logger
import org.slf4j.LoggerFactory

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package no.nav.su.se.bakover.service.journalføring

import dokument.domain.brev.KunneIkkeBestilleBrevForDokument
import dokument.domain.brev.KunneIkkeJournalføreDokument

sealed interface JournalføringOgDistribueringsFeil {
@JvmInline
value class Distribuering(
val originalFeil: KunneIkkeBestilleBrevForDokument,
) : JournalføringOgDistribueringsFeil

@JvmInline
value class Journalføring(val originalFeil: KunneIkkeJournalføreDokument) : JournalføringOgDistribueringsFeil
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@
package no.nav.su.se.bakover.service.journalføring

import arrow.core.Either
import dokument.domain.Dokumentdistribusjon
import dokument.domain.brev.BrevbestillingId
import dokument.domain.brev.KunneIkkeBestilleBrevForDokument
import dokument.domain.brev.KunneIkkeJournalføreDokument
import no.nav.su.se.bakover.common.journal.JournalpostId
import org.jetbrains.kotlin.utils.addToStdlib.ifNotEmpty
import org.slf4j.Logger
import vilkår.skatt.domain.Skattedokument
import java.util.UUID

sealed interface JournalføringOgDistribueringsResultat {
val id: UUID
val journalpostId: JournalpostId?
val brevbestillingsId: BrevbestillingId?

data class Ok(
override val id: UUID,
override val journalpostId: JournalpostId?,
override val brevbestillingsId: BrevbestillingId?,
) : JournalføringOgDistribueringsResultat

data class Feil(
override val id: UUID,
override val journalpostId: JournalpostId?,
val originalFeil: JournalføringOgDistribueringsFeil,
) : JournalføringOgDistribueringsResultat {
override val brevbestillingsId: BrevbestillingId? = null
}

companion object {
/**
* dokumentdistribusjonen må for i feil-caser
*/
@JvmName("dokumentDistribusjonTilResultat")
fun Either<KunneIkkeBestilleBrevForDokument, Dokumentdistribusjon>.tilResultat(
dokument: Dokumentdistribusjon,
log: Logger,
): JournalføringOgDistribueringsResultat {
return this.fold(
ifLeft = {
log.error(
"Kunne ikke distribuere dokument ${dokument.id}: $it",
RuntimeException("Genererer en stacktrace for enklere debugging."),
)
Feil(
dokument.id,
dokument.journalføringOgBrevdistribusjon.journalpostId(),
JournalføringOgDistribueringsFeil.Distribuering(it),
)
},
ifRight = {
Ok(
it.id,
it.journalføringOgBrevdistribusjon.journalpostId(),
it.journalføringOgBrevdistribusjon.brevbestillingsId(),
)
},
)
}

/**
* dokumentdistribusjonen må for i feil-caser
*/
fun Either<KunneIkkeJournalføreDokument, Dokumentdistribusjon>.tilResultat(
dokument: Dokumentdistribusjon,
log: Logger,
): JournalføringOgDistribueringsResultat {
return this.fold(
ifLeft = {
log.error(
"Kunne ikke journalføre dokument ${dokument.id}: $it",
RuntimeException("Genererer en stacktrace for enklere debugging."),
)
Feil(
dokument.id,
dokument.journalføringOgBrevdistribusjon.journalpostId(),
JournalføringOgDistribueringsFeil.Journalføring(it),
)
},
ifRight = {
Ok(
it.id,
it.journalføringOgBrevdistribusjon.journalpostId(),
it.journalføringOgBrevdistribusjon.brevbestillingsId(),
)
},
)
}

@JvmName("skattedokumentTilReesultat")
fun Either<KunneIkkeJournalføreDokument, Skattedokument.Journalført>.tilResultat(
skattedokument: Skattedokument.Generert,
log: Logger,
): JournalføringOgDistribueringsResultat {
return this.fold(
ifLeft = {
log.error(
"Kunne ikke journalføre skattedokument ${skattedokument.id}: $it",
RuntimeException("Genererer en stacktrace for enklere debugging."),
)
Feil(
skattedokument.id,
skattedokument.journalpostid,
JournalføringOgDistribueringsFeil.Journalføring(it),
)
},
ifRight = { Ok(it.id, it.journalpostid, null) },
)
}
}
}
fun List<JournalføringOgDistribueringsResultat>.logResultat(logContext: String, log: Logger) {
this.ifNotEmpty {
val ok = this.ok()
val feil = this.feil()
if (feil.isEmpty()) {
log.info("$logContext $ok")
} else {
log.error("$logContext feilet: $feil. Disse gikk ok: $ok")
}
}
}
fun List<JournalføringOgDistribueringsResultat>.ok(): List<UUID> =
this.filterIsInstance<JournalføringOgDistribueringsResultat.Ok>().map { it.id }

fun List<JournalføringOgDistribueringsResultat>.feil() =
this.filterIsInstance<JournalføringOgDistribueringsResultat.Feil>().map { it.id }
Original file line number Diff line number Diff line change
@@ -1,17 +1,7 @@
package no.nav.su.se.bakover.service.journalføring

import arrow.core.Either
import dokument.domain.Dokumentdistribusjon
import dokument.domain.brev.BrevbestillingId
import dokument.domain.brev.KunneIkkeBestilleBrevForDokument
import dokument.domain.brev.KunneIkkeJournalføreDokument
import no.nav.su.se.bakover.common.journal.JournalpostId
import no.nav.su.se.bakover.service.dokument.JournalførDokumentService
import no.nav.su.se.bakover.service.skatt.JournalførSkattDokumentService
import org.jetbrains.kotlin.utils.addToStdlib.ifNotEmpty
import org.slf4j.Logger
import vilkår.skatt.domain.Skattedokument
import java.util.UUID

/**
* Wrapper klasse som kaller journalfør() for alle klasser. ment for å bli kallt fra en jobb.
Expand All @@ -25,128 +15,3 @@ class JournalføringService(
journalførSkattDokumentService.journalførAlleSkattedokumenterPåSak()
}
}

sealed interface JournalføringOgDistribueringsResultat {
val id: UUID
val journalpostId: JournalpostId?
val brevbestillingsId: BrevbestillingId?

data class Ok(
override val id: UUID,
override val journalpostId: JournalpostId?,
override val brevbestillingsId: BrevbestillingId?,
) : JournalføringOgDistribueringsResultat

data class Feil(
override val id: UUID,
override val journalpostId: JournalpostId?,
val originalFeil: JournalføringOgDistribueringsFeil,
) : JournalføringOgDistribueringsResultat {
override val brevbestillingsId: BrevbestillingId? = null
}

sealed interface JournalføringOgDistribueringsFeil {
@JvmInline
value class Distribuering(val originalFeil: KunneIkkeBestilleBrevForDokument) :
JournalføringOgDistribueringsFeil

@JvmInline
value class Journalføring(val originalFeil: KunneIkkeJournalføreDokument) : JournalføringOgDistribueringsFeil
}

companion object {
fun List<JournalføringOgDistribueringsResultat>.ok() = this.filterIsInstance<Ok>().map { it.id }
fun List<JournalføringOgDistribueringsResultat>.feil() = this.filterIsInstance<Feil>().map { it.id }
fun List<JournalføringOgDistribueringsResultat>.logResultat(logContext: String, log: Logger) {
this.ifNotEmpty {
val ok = this.ok()
val feil = this.feil()
if (feil.isEmpty()) {
log.info("$logContext $ok")
} else {
log.error("$logContext feilet: $feil. Disse gikk ok: $ok")
}
}
}

/**
* dokumentdistribusjonen må for i feil-caser
*/
@JvmName("dokumentDistribusjonTilResultat")
fun Either<KunneIkkeBestilleBrevForDokument, Dokumentdistribusjon>.tilResultat(
dokument: Dokumentdistribusjon,
log: Logger,
): JournalføringOgDistribueringsResultat {
return this.fold(
ifLeft = {
log.error(
"Kunne ikke distribuere dokument ${dokument.id}: $it",
RuntimeException("Genererer en stacktrace for enklere debugging."),
)
Feil(
dokument.id,
dokument.journalføringOgBrevdistribusjon.journalpostId(),
JournalføringOgDistribueringsFeil.Distribuering(it),
)
},
ifRight = {
Ok(
it.id,
it.journalføringOgBrevdistribusjon.journalpostId(),
it.journalføringOgBrevdistribusjon.brevbestillingsId(),
)
},
)
}

/**
* dokumentdistribusjonen må for i feil-caser
*/
fun Either<KunneIkkeJournalføreDokument, Dokumentdistribusjon>.tilResultat(
dokument: Dokumentdistribusjon,
log: Logger,
): JournalføringOgDistribueringsResultat {
return this.fold(
ifLeft = {
log.error(
"Kunne ikke journalføre dokument ${dokument.id}: $it",
RuntimeException("Genererer en stacktrace for enklere debugging."),
)
Feil(
dokument.id,
dokument.journalføringOgBrevdistribusjon.journalpostId(),
JournalføringOgDistribueringsFeil.Journalføring(it),
)
},
ifRight = {
Ok(
it.id,
it.journalføringOgBrevdistribusjon.journalpostId(),
it.journalføringOgBrevdistribusjon.brevbestillingsId(),
)
},
)
}

@JvmName("skattedokumentTilReesultat")
fun Either<KunneIkkeJournalføreDokument, Skattedokument.Journalført>.tilResultat(
skattedokument: Skattedokument.Generert,
log: Logger,
): JournalføringOgDistribueringsResultat {
return this.fold(
ifLeft = {
log.error(
"Kunne ikke journalføre skattedokument ${skattedokument.id}: $it",
RuntimeException("Genererer en stacktrace for enklere debugging."),
)
Feil(
skattedokument.id,
skattedokument.journalpostid,
JournalføringOgDistribueringsFeil.Journalføring(it),
)
},
ifRight = { Ok(it.id, it.journalpostid, null) },
)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ import dokument.domain.brev.KunneIkkeJournalføreDokument
import no.nav.su.se.bakover.common.journal.JournalpostId
import no.nav.su.se.bakover.domain.sak.SakService
import no.nav.su.se.bakover.service.journalføring.JournalføringOgDistribueringsResultat
import no.nav.su.se.bakover.service.journalføring.JournalføringOgDistribueringsResultat.Companion.logResultat
import no.nav.su.se.bakover.service.journalføring.JournalføringOgDistribueringsResultat.Companion.tilResultat
import no.nav.su.se.bakover.service.journalføring.logResultat
import org.slf4j.Logger
import org.slf4j.LoggerFactory
import vilkår.skatt.domain.DokumentSkattRepo
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import io.kotest.matchers.types.shouldBeInstanceOf
import no.nav.su.se.bakover.common.journal.JournalpostId
import no.nav.su.se.bakover.common.person.AktørId
import no.nav.su.se.bakover.common.person.Ident
import no.nav.su.se.bakover.service.journalføring.JournalføringOgDistribueringsFeil
import no.nav.su.se.bakover.service.journalføring.JournalføringOgDistribueringsResultat
import no.nav.su.se.bakover.test.argThat
import no.nav.su.se.bakover.test.fixedTidspunkt
Expand Down Expand Up @@ -94,7 +95,7 @@ internal class DistribuerDokumentServiceTest {
it.first().shouldBeInstanceOf<JournalføringOgDistribueringsResultat.Feil>()
it.first().id shouldBe dokumentdistribusjon.id
(it.first() as JournalføringOgDistribueringsResultat.Feil).originalFeil shouldBe
JournalføringOgDistribueringsResultat.JournalføringOgDistribueringsFeil.Distribuering(
JournalføringOgDistribueringsFeil.Distribuering(
KunneIkkeBestilleBrevForDokument.MåJournalføresFørst,
)
}
Expand Down Expand Up @@ -149,7 +150,7 @@ internal class DistribuerDokumentServiceTest {
it.first().shouldBeInstanceOf<JournalføringOgDistribueringsResultat.Feil>()
it.first().id shouldBe dokumentdistribusjon.id
(it.first() as JournalføringOgDistribueringsResultat.Feil).originalFeil shouldBe
JournalføringOgDistribueringsResultat.JournalføringOgDistribueringsFeil.Distribuering(
JournalføringOgDistribueringsFeil.Distribuering(
KunneIkkeBestilleBrevForDokument.FeilVedBestillingAvBrev,
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import no.nav.su.se.bakover.common.domain.sak.SakInfo
import no.nav.su.se.bakover.common.domain.sak.Sakstype
import no.nav.su.se.bakover.common.journal.JournalpostId
import no.nav.su.se.bakover.domain.sak.SakService
import no.nav.su.se.bakover.service.journalføring.JournalføringOgDistribueringsFeil
import no.nav.su.se.bakover.service.journalføring.JournalføringOgDistribueringsResultat
import no.nav.su.se.bakover.test.argThat
import no.nav.su.se.bakover.test.fixedTidspunkt
Expand Down Expand Up @@ -55,7 +56,7 @@ class JournalførDokumentServiceTest {
it.first().id shouldBe dokumentdistribusjon.id
it.first().journalpostId shouldBe null
it.first().brevbestillingsId shouldBe null
(it.first() as JournalføringOgDistribueringsResultat.Feil).originalFeil shouldBe JournalføringOgDistribueringsResultat.JournalføringOgDistribueringsFeil.Journalføring(
(it.first() as JournalføringOgDistribueringsResultat.Feil).originalFeil shouldBe JournalføringOgDistribueringsFeil.Journalføring(
KunneIkkeJournalføreDokument.FeilVedOpprettelseAvJournalpost,
)
}
Expand Down

0 comments on commit 5dac3c6

Please sign in to comment.