Skip to content

Commit

Permalink
en slags kontrakt
Browse files Browse the repository at this point in the history
Co-authored-by: Håkon Arneng Holmstedt <hakon.arneng.holmstedt@nav.no>
Co-authored-by: Erik Maximilian Forsman <erik.maximilian.forsman@nav.no>
Co-authored-by: Amalie Erdal Mansåker <amalie.erdal.mansaker@nav.no>
  • Loading branch information
4 people committed Apr 30, 2024
1 parent b377246 commit e5f3f03
Show file tree
Hide file tree
Showing 8 changed files with 58 additions and 50 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import no.nav.helse.rapids_rivers.RapidsConnection
import no.nav.helse.rapids_rivers.River
import no.nav.helse.rapids_rivers.asLocalDateTime
import no.nav.helse.rapids_rivers.toUUID
import no.nav.helse.sporbar.sis.Behandlingstatusmelding.Behandlingstatustype.BEHANDLES_UTENFOR_SPEIL
import org.slf4j.LoggerFactory

internal class BehandlingForkastetRiver(rapid: RapidsConnection, private val sisPublisher: SisPublisher) :
Expand All @@ -33,7 +34,7 @@ internal class BehandlingForkastetRiver(rapid: RapidsConnection, private val sis
val vedtaksperiodeId = packet["vedtaksperiodeId"].asText().toUUID()
val behandlingId = packet["behandlingId"].asText().toUUID()
val tidspunkt = packet["@opprettet"].asLocalDateTime().atZone(ZoneId.of("Europe/Oslo")).toOffsetDateTime()
sisPublisher.send(vedtaksperiodeId, lagBehandlingStatus(vedtaksperiodeId, behandlingId, tidspunkt, "BEHANDLES_UTENFOR_SPEIL"))
sisPublisher.send(vedtaksperiodeId, Behandlingstatusmelding.behandlingstatus(vedtaksperiodeId, behandlingId, tidspunkt, BEHANDLES_UTENFOR_SPEIL))
}

private companion object {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import no.nav.helse.rapids_rivers.RapidsConnection
import no.nav.helse.rapids_rivers.River
import no.nav.helse.rapids_rivers.asLocalDateTime
import no.nav.helse.rapids_rivers.toUUID
import no.nav.helse.sporbar.sis.Behandlingstatusmelding.Behandlingstatustype.FERDIG
import org.intellij.lang.annotations.Language
import org.slf4j.LoggerFactory

Expand All @@ -36,7 +37,7 @@ internal class BehandlingLukketRiver(rapid: RapidsConnection, private val sisPub
val vedtaksperiodeId = packet["vedtaksperiodeId"].asText().toUUID()
val behandlingId = packet["behandlingId"].asText().toUUID()
val tidspunkt = packet["@opprettet"].asLocalDateTime().atZone(ZoneId.of("Europe/Oslo")).toOffsetDateTime()
sisPublisher.send(vedtaksperiodeId, lagBehandlingStatus(vedtaksperiodeId, behandlingId, tidspunkt, "FERDIG"))
sisPublisher.send(vedtaksperiodeId, Behandlingstatusmelding.behandlingstatus(vedtaksperiodeId, behandlingId, tidspunkt, FERDIG))
}

private companion object {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import no.nav.helse.rapids_rivers.River
import no.nav.helse.rapids_rivers.asLocalDateTime
import no.nav.helse.rapids_rivers.toUUID
import no.nav.helse.sporbar.DokumentDao
import no.nav.helse.sporbar.sis.Behandlingstatusmelding.Behandlingstatustype.VENTER_PÅ_ARBEIDSGIVER
import org.intellij.lang.annotations.Language
import org.slf4j.LoggerFactory

Expand Down Expand Up @@ -40,20 +41,8 @@ internal class BehandlingOpprettetRiver(rapid: RapidsConnection, private val dok
val søknad = dokumentDao.finn(listOf(internSøknadId)).firstOrNull() ?: return
val søknadId = søknad.dokumentId
val tidspunkt = packet["@opprettet"].asLocalDateTime().atZone(ZoneId.of("Europe/Oslo")).toOffsetDateTime()
sisPublisher.send(vedtaksperiodeId, lagBehandlingOpprettet(vedtaksperiodeId, behandlingId, tidspunkt, søknadId))
sisPublisher.send(vedtaksperiodeId, lagBehandlingStatus(vedtaksperiodeId, behandlingId, tidspunkt, "VENTER_PÅ_ARBEIDSGIVER"))
}

private fun lagBehandlingOpprettet(vedtaksperiodeId: UUID, behandlingId: UUID, tidspunkt: OffsetDateTime, søknadId: UUID): String {
@Language("JSON")
val melding = """{
"vedtaksperiodeId": "$vedtaksperiodeId",
"behandlingId": "$behandlingId",
"tidspunkt": "$tidspunkt",
"status": "OPPRETTET",
"eksternSøknadId": "$søknadId"
}"""
return melding
sisPublisher.send(vedtaksperiodeId, Behandlingstatusmelding.behandlingOpprettet(vedtaksperiodeId, behandlingId, tidspunkt, søknadId))
sisPublisher.send(vedtaksperiodeId, Behandlingstatusmelding(vedtaksperiodeId, behandlingId, tidspunkt, VENTER_PÅ_ARBEIDSGIVER))
}

private companion object {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package no.nav.helse.sporbar.sis

import java.time.OffsetDateTime
import java.util.UUID

data class Behandlingstatusmelding(
val vedtaksperiodeId: UUID,
val behandlingId: UUID,
val tidspunkt: OffsetDateTime,
val status: Behandlingstatustype,
val eksternSøknadId: UUID? = null
) {
enum class Behandlingstatustype {
OPPRETTET,
VENTER_PÅ_ARBEIDSGIVER,
VENTER_PÅ_SAKSBEHANDLER,
FERDIG,
BEHANDLES_UTENFOR_SPEIL
}

companion object {
fun behandlingOpprettet(vedtaksperiodeId: UUID, behandlingId: UUID, tidspunkt: OffsetDateTime, eksternSøknadId: UUID) =
Behandlingstatusmelding(vedtaksperiodeId, behandlingId, tidspunkt, Behandlingstatustype.OPPRETTET, eksternSøknadId)
fun behandlingstatus(vedtaksperiodeId: UUID, behandlingId: UUID, tidspunkt: OffsetDateTime, status: Behandlingstatustype) =
Behandlingstatusmelding(vedtaksperiodeId, behandlingId, tidspunkt, status, null)
}
}
16 changes: 0 additions & 16 deletions src/main/kotlin/no/nav/helse/sporbar/sis/LagBehandlingStatus.kt

This file was deleted.

14 changes: 10 additions & 4 deletions src/main/kotlin/no/nav/helse/sporbar/sis/SisPublisher.kt
Original file line number Diff line number Diff line change
@@ -1,21 +1,27 @@
package no.nav.helse.sporbar.sis

import com.fasterxml.jackson.databind.SerializationFeature
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
import java.util.UUID
import org.apache.kafka.clients.producer.KafkaProducer
import org.apache.kafka.clients.producer.ProducerRecord
import org.slf4j.LoggerFactory

interface SisPublisher {
fun send(vedtaksperiodeId: UUID, melding: String)
fun send(vedtaksperiodeId: UUID, melding: Behandlingstatusmelding)
}

class KafkaSisPublisher(private val producer: KafkaProducer<String, String>, private val topicName: String = "tbd.sis"): SisPublisher {
private companion object {
private val mapper = jacksonObjectMapper()
.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
private val sikkerLogg = LoggerFactory.getLogger("tjenestekall")
private val Behandlingstatusmelding.json: String get() = mapper.writeValueAsString(this)
}

override fun send(vedtaksperiodeId: UUID, melding: String) {
producer.send(ProducerRecord(topicName, vedtaksperiodeId.toString(), melding))
sikkerLogg.info("Sender $melding")
override fun send(vedtaksperiodeId: UUID, melding: Behandlingstatusmelding) {
val meldingJson = melding.json
producer.send(ProducerRecord(topicName, vedtaksperiodeId.toString(), meldingJson))
sikkerLogg.info("Sender $meldingJson\nfra $melding")
}
}
Original file line number Diff line number Diff line change
@@ -1,17 +1,15 @@
package no.nav.helse.sporbar.sis

import com.fasterxml.jackson.databind.JsonNode
import java.time.OffsetDateTime
import java.time.ZoneId
import java.util.UUID
import no.nav.helse.rapids_rivers.JsonMessage
import no.nav.helse.rapids_rivers.MessageContext
import no.nav.helse.rapids_rivers.MessageProblems
import no.nav.helse.rapids_rivers.RapidsConnection
import no.nav.helse.rapids_rivers.River
import no.nav.helse.rapids_rivers.asLocalDateTime
import no.nav.helse.rapids_rivers.toUUID
import org.intellij.lang.annotations.Language
import no.nav.helse.sporbar.sis.Behandlingstatusmelding.Behandlingstatustype.VENTER_PÅ_SAKSBEHANDLER
import org.slf4j.LoggerFactory

internal class VedtaksperiodeVenterRiver(rapid: RapidsConnection, private val sisPublisher: SisPublisher) :
Expand All @@ -37,7 +35,7 @@ internal class VedtaksperiodeVenterRiver(rapid: RapidsConnection, private val si
val vedtaksperiodeId = packet["vedtaksperiodeId"].asText().toUUID()
val behandlingId = packet["behandlingId"].asText().toUUID()
val tidspunkt = packet["@opprettet"].asLocalDateTime().atZone(ZoneId.of("Europe/Oslo")).toOffsetDateTime()
sisPublisher.send(vedtaksperiodeId, lagBehandlingStatus(vedtaksperiodeId, behandlingId, tidspunkt, "VENTER_PÅ_SAKSBEHANDLER"))
sisPublisher.send(vedtaksperiodeId, Behandlingstatusmelding.behandlingstatus(vedtaksperiodeId, behandlingId, tidspunkt, VENTER_PÅ_SAKSBEHANDLER))
}

private companion object {
Expand Down
22 changes: 12 additions & 10 deletions src/test/kotlin/no/nav/helse/sporbar/BehandlingstatusTest.kt
Original file line number Diff line number Diff line change
@@ -1,12 +1,17 @@
package no.nav.helse.sporbar

import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
import java.time.LocalDateTime
import java.util.UUID
import no.nav.helse.rapids_rivers.testsupport.TestRapid
import no.nav.helse.sporbar.sis.BehandlingForkastetRiver
import no.nav.helse.sporbar.sis.BehandlingLukketRiver
import no.nav.helse.sporbar.sis.BehandlingOpprettetRiver
import no.nav.helse.sporbar.sis.Behandlingstatusmelding
import no.nav.helse.sporbar.sis.Behandlingstatusmelding.Behandlingstatustype.BEHANDLES_UTENFOR_SPEIL
import no.nav.helse.sporbar.sis.Behandlingstatusmelding.Behandlingstatustype.FERDIG
import no.nav.helse.sporbar.sis.Behandlingstatusmelding.Behandlingstatustype.OPPRETTET
import no.nav.helse.sporbar.sis.Behandlingstatusmelding.Behandlingstatustype.VENTER_PÅ_ARBEIDSGIVER
import no.nav.helse.sporbar.sis.Behandlingstatusmelding.Behandlingstatustype.VENTER_PÅ_SAKSBEHANDLER
import no.nav.helse.sporbar.sis.SisPublisher
import no.nav.helse.sporbar.sis.VedtaksperiodeVenterRiver
import org.intellij.lang.annotations.Language
Expand Down Expand Up @@ -43,7 +48,7 @@ class BehandlingstatusTest {
sendBehandlingLukket()

assertEquals(4, sisPublisher.sendteMeldinger.size)
assertEquals(listOf("OPPRETTET", "VENTER_PÅ_ARBEIDSGIVER", "VENTER_PÅ_SAKSBEHANDLER", "FERDIG"), sisPublisher.sendteStatuser)
assertEquals(listOf(OPPRETTET, VENTER_PÅ_ARBEIDSGIVER, VENTER_PÅ_SAKSBEHANDLER, FERDIG), sisPublisher.sendteStatuser)
}

@Test
Expand All @@ -54,7 +59,7 @@ class BehandlingstatusTest {
sendBehandlingForkastet()

assertEquals(3, sisPublisher.sendteMeldinger.size)
assertEquals(listOf("OPPRETTET", "VENTER_PÅ_ARBEIDSGIVER", "BEHANDLES_UTENFOR_SPEIL"), sisPublisher.sendteStatuser)
assertEquals(listOf(OPPRETTET, VENTER_PÅ_ARBEIDSGIVER, BEHANDLES_UTENFOR_SPEIL), sisPublisher.sendteStatuser)
}

private fun sendSøknad(søknadId: UUID) {
Expand Down Expand Up @@ -123,14 +128,11 @@ class BehandlingstatusTest {
}

private class TestSisPublisher: SisPublisher {
val sendteMeldinger = mutableListOf<String>()
val sendteStatuser = mutableListOf<String>()
override fun send(vedtaksperiodeId: UUID, melding: String) {
val sendteMeldinger = mutableListOf<Behandlingstatusmelding>()
val sendteStatuser = mutableListOf<Behandlingstatusmelding.Behandlingstatustype>()
override fun send(vedtaksperiodeId: UUID, melding: Behandlingstatusmelding) {
sendteMeldinger.add(melding)
sendteStatuser.add(mapper.readTree(melding).path("status").asText())
}
private companion object {
private val mapper = jacksonObjectMapper()
sendteStatuser.add(melding.status)
}
}

Expand Down

0 comments on commit e5f3f03

Please sign in to comment.