Skip to content

Commit

Permalink
lese deltakere fra deltaker-v2 (#740)
Browse files Browse the repository at this point in the history
* wip: lese deltakere fra deltaker-v2

* skal ikke publisere deltakere fra komet som ikke har vurderinger

* skal ikke oppdatere status for deltakere fra komet

* hackyfix

* fikser innlesing, støtter sletting
  • Loading branch information
tiafiring authored Mar 6, 2024
1 parent 6f6450b commit c5f1327
Show file tree
Hide file tree
Showing 36 changed files with 595 additions and 136 deletions.
2 changes: 0 additions & 2 deletions .nais/nais-dev.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -115,8 +115,6 @@ spec:
value: amt.nav-bruker-personalia-v1
- name: NAV_ANSATT_PERSONALIA_TOPIC
value: amt.nav-ansatt-personalia-v1
- name: DELTAKER_ENDRET_TOPIC
value: amt.deltaker-endring-v1

gcp:
sqlInstances:
Expand Down
2 changes: 0 additions & 2 deletions .nais/nais-prod.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -115,8 +115,6 @@ spec:
value: amt.nav-bruker-personalia-v1
- name: NAV_ANSATT_PERSONALIA_TOPIC
value: amt.nav-ansatt-personalia-v1
- name: DELTAKER_ENDRET_TOPIC
value: amt.deltaker-endring-v1

gcp:
sqlInstances:
Expand Down
1 change: 0 additions & 1 deletion application/src/main/resources/application.properties
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ app.env.amtDeltakerTopic=${DELTAKER_TOPIC_V2:#{null}}
app.env.amtEndringsmeldingTopic=${ENDRINGSMELDIG_TOPIC:#{null}}
app.env.amtNavBrukerPersonaliaTopic=${NAV_BRUKER_PERSONALIA_TOPIC:#{null}}
app.env.amtNavAnsattPersonaliaTopic=${NAV_ANSATT_PERSONALIA_TOPIC:#{null}}
app.env.amtDeltakerEndringTopic=${DELTAKER_ENDRET_TOPIC:#{null}}

app.env.unleashUrl=${UNLEASH_SERVER_API_URL}/api
app.env.unleashApiToken=${UNLEASH_SERVER_API_TOKEN}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,11 @@ class AuditLoggerServiceImplTest {
endretDato = LocalDateTime.now(),
adressebeskyttelse = null,
innhold = null,
kilde = Kilde.ARENA
kilde = Kilde.ARENA,
forsteVedtakFattet = null,
historikk = null,
sistEndretAv = null,
sistEndretAvEnhet = null
)

val messageSlot = slot<CefMessage>()
Expand Down
4 changes: 4 additions & 0 deletions core/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,10 @@
<artifactId>core</artifactId>

<dependencies>
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-kotlin</artifactId>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,11 @@ data class Deltaker(
val endretDato: LocalDateTime,
val adressebeskyttelse: Adressebeskyttelse?,
val innhold: DeltakelsesInnhold?,
val kilde: Kilde
val kilde: Kilde,
val forsteVedtakFattet: LocalDate?,
val historikk: List<DeltakerHistorikk>?,
val sistEndretAv: UUID?,
val sistEndretAvEnhet: UUID?,
) {
fun harAdressebeskyttelse(): Boolean {
return adressebeskyttelse != null
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
package no.nav.amt.tiltak.core.domain.tiltak

import com.fasterxml.jackson.annotation.JsonSubTypes
import com.fasterxml.jackson.annotation.JsonTypeInfo
import java.time.LocalDate
import java.time.LocalDateTime
import java.util.UUID

data class DeltakerEndring(
val id: UUID,
val deltakerId: UUID,
val endring: Endring,
val endretAv: UUID,
val endretAvEnhet: UUID,
val endret: LocalDateTime,
) {
data class Aarsak(
val type: Type,
val beskrivelse: String? = null,
) {
init {
if (beskrivelse != null && type != Type.ANNET) {
error("Aarsak $type skal ikke ha beskrivelse")
}
}

enum class Type {
SYK, FATT_JOBB, TRENGER_ANNEN_STOTTE, UTDANNING, IKKE_MOTT, ANNET
}
}

@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type")
@JsonSubTypes(
JsonSubTypes.Type(value = Endring.EndreStartdato::class, name = "EndreStartdato"),
JsonSubTypes.Type(value = Endring.EndreSluttdato::class, name = "EndreSluttdato"),
JsonSubTypes.Type(value = Endring.EndreDeltakelsesmengde::class, name = "EndreDeltakelsesmengde"),
JsonSubTypes.Type(value = Endring.EndreBakgrunnsinformasjon::class, name = "EndreBakgrunnsinformasjon"),
JsonSubTypes.Type(value = Endring.EndreInnhold::class, name = "EndreInnhold"),
JsonSubTypes.Type(value = Endring.IkkeAktuell::class, name = "IkkeAktuell"),
JsonSubTypes.Type(value = Endring.ForlengDeltakelse::class, name = "ForlengDeltakelse"),
JsonSubTypes.Type(value = Endring.AvsluttDeltakelse::class, name = "AvsluttDeltakelse"),
JsonSubTypes.Type(value = Endring.EndreSluttarsak::class, name = "EndreSluttarsak"),
)
sealed class Endring {
data class EndreBakgrunnsinformasjon(
val bakgrunnsinformasjon: String?,
) : Endring()

data class EndreInnhold(
val innhold: List<Innhold>,
) : Endring()

data class EndreDeltakelsesmengde(
val deltakelsesprosent: Float?,
val dagerPerUke: Float?,
) : Endring()

data class EndreStartdato(
val startdato: LocalDate?,
) : Endring()

data class EndreSluttdato(
val sluttdato: LocalDate,
) : Endring()

data class ForlengDeltakelse(
val sluttdato: LocalDate,
) : Endring()

data class IkkeAktuell(
val aarsak: Aarsak?,
) : Endring()

data class AvsluttDeltakelse(
val aarsak: Aarsak,
val sluttdato: LocalDate,
) : Endring()

data class EndreSluttarsak(
val aarsak: Aarsak,
) : Endring()
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package no.nav.amt.tiltak.core.domain.tiltak

import com.fasterxml.jackson.annotation.JsonSubTypes
import com.fasterxml.jackson.annotation.JsonTypeInfo

@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type")
@JsonSubTypes(
JsonSubTypes.Type(value = DeltakerHistorikk.Endring::class, name = "Endring"),
JsonSubTypes.Type(value = DeltakerHistorikk.Vedtak::class, name = "Vedtak"),
)
sealed class DeltakerHistorikk {
data class Endring(val endring: DeltakerEndring) : DeltakerHistorikk()
data class Vedtak(val vedtak: no.nav.amt.tiltak.core.domain.tiltak.Vedtak) : DeltakerHistorikk()
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,11 @@ data class DeltakerUpsert(
val prosentStilling: Float? = null,
val innsokBegrunnelse: String?,
val innhold: DeltakelsesInnhold?,
val kilde: Kilde
val kilde: Kilde,
val forsteVedtakFattet: LocalDate?,
val historikk: List<DeltakerHistorikk>?,
val sistEndretAv: UUID?,
val sistEndretAvEnhet: UUID?,
) {
fun compareTo(deltaker: Deltaker): Boolean {
// Her kan man ikke enkelt sammenlikne hele objektet fordi sammenlikning av localdatetime må rundes av pga ms presisjon
Expand All @@ -25,6 +29,8 @@ data class DeltakerUpsert(
&& registrertDato.truncatedTo(ChronoUnit.MILLIS) == deltaker.registrertDato.truncatedTo(ChronoUnit.MILLIS)
&& dagerPerUke == deltaker.dagerPerUke && prosentStilling == deltaker.prosentStilling
&& innsokBegrunnelse == deltaker.innsokBegrunnelse && innhold == deltaker.innhold && kilde == deltaker.kilde
&& forsteVedtakFattet == deltaker.forsteVedtakFattet && sistEndretAv == deltaker.sistEndretAv
&& sistEndretAvEnhet == deltaker.sistEndretAvEnhet

return statusEquals && deltakerEquals
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package no.nav.amt.tiltak.core.domain.tiltak

import java.time.LocalDate
import java.time.LocalDateTime
import java.util.UUID

data class Vedtak(
val id: UUID,
val deltakerId: UUID,
val fattet: LocalDateTime?,
val gyldigTil: LocalDateTime?,
val deltakerVedVedtak: DeltakerVedVedtak,
val fattetAvNav: Boolean,
val opprettet: LocalDateTime,
val opprettetAv: UUID,
val opprettetAvEnhet: UUID,
val sistEndret: LocalDateTime,
val sistEndretAv: UUID,
val sistEndretAvEnhet: UUID,
)

data class DeltakerVedVedtak(
val id: UUID,
val startdato: LocalDate?,
val sluttdato: LocalDate?,
val dagerPerUke: Float?,
val deltakelsesprosent: Float?,
val bakgrunnsinformasjon: String?,
val innhold: List<Innhold>,
val status: DeltakerStatus,
)
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package no.nav.amt.tiltak.core.port
import no.nav.amt.tiltak.core.domain.tiltak.Deltaker
import no.nav.amt.tiltak.core.domain.tiltak.DeltakerStatusInsert
import no.nav.amt.tiltak.core.domain.tiltak.DeltakerUpsert
import no.nav.amt.tiltak.core.domain.tiltak.Kilde
import no.nav.amt.tiltak.core.domain.tiltak.Vurdering
import no.nav.amt.tiltak.core.domain.tiltak.Vurderingstype
import java.time.LocalDateTime
Expand All @@ -22,7 +23,7 @@ interface DeltakerService {

fun progressStatuser()

fun slettDeltaker(deltakerId: UUID)
fun slettDeltaker(deltakerId: UUID, kilde: Kilde)

fun hentDeltakereMedPersonIdent(personIdent: String): List<Deltaker>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package no.nav.amt.tiltak.data_publisher.model

import no.nav.amt.tiltak.core.domain.tiltak.Adresse
import no.nav.amt.tiltak.core.domain.tiltak.Adressebeskyttelse
import no.nav.amt.tiltak.core.domain.tiltak.DeltakerHistorikk
import no.nav.amt.tiltak.core.domain.tiltak.DeltakerStatus
import no.nav.amt.tiltak.core.domain.tiltak.Kilde
import no.nav.amt.tiltak.core.domain.tiltak.Vurdering
Expand All @@ -26,7 +27,11 @@ data class DeltakerPublishDto(
val navVeileder: DeltakerNavVeilederDto?,
val deltarPaKurs: Boolean,
val vurderingerFraArrangor: List<Vurdering>?,
val kilde: Kilde?
val kilde: Kilde?,
val forsteVedtakFattet: LocalDate?,
val historikk: List<DeltakerHistorikk>?,
val sistEndretAv: UUID?,
val sistEndretAvEnhet: UUID?,
) {
fun digest() = DigestUtils.md5DigestAsHex(JsonUtils.toJson(this).toByteArray())
}
Expand All @@ -47,6 +52,7 @@ data class Navn(
)

data class DeltakerStatusDto(
val id: UUID?,
val type: DeltakerStatus.Type,
val aarsak: DeltakerStatus.Aarsak?,
val gyldigFra: LocalDateTime,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import no.nav.amt.tiltak.common.db_utils.getUUID
import no.nav.amt.tiltak.common.json.JsonUtils
import no.nav.amt.tiltak.core.domain.tiltak.Adresse
import no.nav.amt.tiltak.core.domain.tiltak.Adressebeskyttelse
import no.nav.amt.tiltak.core.domain.tiltak.DeltakerHistorikk
import no.nav.amt.tiltak.core.domain.tiltak.DeltakerStatus
import no.nav.amt.tiltak.core.domain.tiltak.Kilde
import no.nav.amt.tiltak.core.domain.tiltak.Vurdering
Expand All @@ -33,14 +34,15 @@ import java.util.UUID
class DeltakerPublishQuery(
private val template: NamedParameterJdbcTemplate
) {

fun get(id: UUID): Result<DeltakerPublishDto> {
val deltaker = getDeltaker(id) ?: return Result.PublishTombstone()

if (deltaker.status == null) return Result.DontPublish()

val vurderinger = getVurderinger(id)

if (deltaker.kilde == Kilde.KOMET && vurderinger.isEmpty()) return Result.DontPublish()

return DeltakerPublishDto(
deltaker.id,
deltakerlisteId = deltaker.deltakerlisteId,
Expand Down Expand Up @@ -75,14 +77,19 @@ class DeltakerPublishQuery(
)
},
status = DeltakerStatusDto(
id = deltaker.statusId,
type = DeltakerStatus.Type.valueOf(deltaker.status),
aarsak = deltaker.statusAarsak?.let { DeltakerStatus.Aarsak.valueOf(it) },
gyldigFra = deltaker.statusGyldigFra!!,
opprettetDato = deltaker.statusCreatedAt!!
),
deltarPaKurs = deltaker.deltarPaKurs,
vurderingerFraArrangor = vurderinger,
kilde = deltaker.kilde
kilde = deltaker.kilde,
forsteVedtakFattet = deltaker.forsteVedtakFattet,
historikk = deltaker.historikk,
sistEndretAv = deltaker.sistEndretAv,
sistEndretAvEnhet = deltaker.sistEndretAvEnhet
).let { Result.OK(it) }
}

Expand All @@ -106,11 +113,16 @@ class DeltakerPublishQuery(
deltaker.registrert_dato,
deltaker.innsok_begrunnelse,
deltaker.kilde,
deltaker.forste_vedtak_fattet,
deltaker.historikk,
deltaker.sist_endret_av,
deltaker.sist_endret_av_enhet,
nav_enhet.navn as nav_enhet_navn,
nav_ansatt.id as nav_ansatt_id,
nav_ansatt.navn as nav_ansatt_navn,
nav_ansatt.epost as nav_ansatt_epost,
nav_ansatt.telefonnummer as nav_ansatt_telefonnummer,
status.id as status_id,
status.status as status,
status.aarsak as status_aarsak,
status.gyldig_fra as status_gyldig_fra,
Expand All @@ -121,7 +133,7 @@ class DeltakerPublishQuery(
left join bruker on deltaker.bruker_id = bruker.id
left join nav_enhet on bruker.nav_enhet_id = nav_enhet.id
left join nav_ansatt on bruker.ansvarlig_veileder_id = nav_ansatt.id
left join (select deltaker_id, status, aarsak, gyldig_fra, created_at
left join (select id, deltaker_id, status, aarsak, gyldig_fra, created_at
from deltaker_status
where aktiv is true) status on status.deltaker_id = deltaker.id
where deltaker.id = :deltakerId
Expand Down Expand Up @@ -183,12 +195,17 @@ class DeltakerPublishQuery(
val navAnsattNavn: String?,
val navAnsattEpost: String?,
val navAnsattTelefonnummer: String?,
val statusId: UUID?,
val status: String?,
val statusAarsak: String?,
val statusGyldigFra: LocalDateTime?,
val statusCreatedAt: LocalDateTime?,
val deltarPaKurs: Boolean,
val kilde: Kilde
val kilde: Kilde,
val forsteVedtakFattet: LocalDate?,
val historikk: List<DeltakerHistorikk>?,
val sistEndretAv: UUID?,
val sistEndretAvEnhet: UUID?,
) {
companion object {
val rowMapper = RowMapper { rs, _ ->
Expand All @@ -215,12 +232,19 @@ class DeltakerPublishQuery(
navAnsattNavn = rs.getNullableString("nav_ansatt_navn"),
navAnsattEpost = rs.getNullableString("nav_ansatt_epost"),
navAnsattTelefonnummer = rs.getNullableString("nav_ansatt_telefonnummer"),
statusId = rs.getNullableUUID("status_id"),
status = rs.getString("status"),
statusAarsak = rs.getNullableString("status_aarsak"),
statusGyldigFra = rs.getNullableLocalDateTime("status_gyldig_fra"),
statusCreatedAt = rs.getNullableLocalDateTime("status_opprettet_dato"),
deltarPaKurs = rs.getBoolean("er_kurs"),
kilde = Kilde.valueOf(rs.getString("kilde"))
kilde = Kilde.valueOf(rs.getString("kilde")),
forsteVedtakFattet = rs.getNullableLocalDate("forste_vedtak_fattet"),
historikk = rs.getString("historikk")?.let { h ->
JsonUtils.fromJsonString<List<String>>(h).map { JsonUtils.fromJsonString(it) }
},
sistEndretAv = rs.getNullableUUID("sist_endret_av"),
sistEndretAvEnhet = rs.getNullableUUID("sist_endret_av_enhet")
)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,5 @@ private fun createTopicProperties(): KafkaTopicProperties = KafkaTopicProperties
amtDeltakerTopic = "",
amtArrangorAnsattTopic = "",
amtNavBrukerPersonaliaTopic = "",
amtNavAnsattPersonaliaTopic = "",
amtDeltakerEndringTopic = ""
amtNavAnsattPersonaliaTopic = ""
)
Loading

0 comments on commit c5f1327

Please sign in to comment.