Skip to content

Commit

Permalink
Handle avvist-melding personoppgave and set behandlerdialog-oppgave f…
Browse files Browse the repository at this point in the history
…ield
  • Loading branch information
eirikdahlen committed Jul 25, 2023
1 parent 3a49d65 commit e71296c
Show file tree
Hide file tree
Showing 17 changed files with 165 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -43,4 +43,5 @@ fun Aktivitetskrav.toPersonOversiktStatus() = PersonOversiktStatus(
aktivitetskravVurderingFrist = this.vurderingFrist,
behandlerdialogSvarUbehandlet = false,
behandlerdialogUbesvartUbehandlet = false,
behandlerdialogAvvistUbehandlet = false,
)
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ const val queryGetPersonerWithOppgaveAndOldEnhet =
OR ((aktivitetskrav = 'NY' OR aktivitetskrav = 'AVVENT') AND aktivitetskrav_stoppunkt > '2023-03-10')
OR behandlerdialog_svar_ubehandlet = 't'
OR behandlerdialog_ubesvart_ubehandlet = 't'
OR behandlerdialog_avvist_ubehandlet = 't'
)
AND (tildelt_enhet_updated_at IS NULL OR tildelt_enhet_updated_at <= NOW() - INTERVAL '24 HOURS')
ORDER BY tildelt_enhet_updated_at ASC
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ const val queryPersonOppfolgingstilfelleVirksomhetNoVirksomhetsnavnList =
OR ((aktivitetskrav = 'NY' OR aktivitetskrav = 'AVVENT') AND aktivitetskrav_stoppunkt > '2023-03-10')
OR behandlerdialog_svar_ubehandlet = 't'
OR behandlerdialog_ubesvart_ubehandlet = 't'
OR behandlerdialog_avvist_ubehandlet = 't'
)
ORDER BY PERSON_OPPFOLGINGSTILFELLE_VIRKSOMHET.created_at ASC
LIMIT 1000
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,4 +30,5 @@ fun KafkaDialogmotekandidatEndring.toPersonOversiktStatus() = PersonOversiktStat
aktivitetskravVurderingFrist = null,
behandlerdialogSvarUbehandlet = false,
behandlerdialogUbesvartUbehandlet = false,
behandlerdialogAvvistUbehandlet = false,
)
Original file line number Diff line number Diff line change
Expand Up @@ -50,5 +50,6 @@ data class DialogmoteStatusendring private constructor(
aktivitetskravVurderingFrist = null,
behandlerdialogSvarUbehandlet = false,
behandlerdialogUbesvartUbehandlet = false,
behandlerdialogAvvistUbehandlet = false,
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ fun KafkaOppfolgingstilfellePerson.toPersonOversiktStatus(
aktivitetskravVurderingFrist = null,
behandlerdialogSvarUbehandlet = false,
behandlerdialogUbesvartUbehandlet = false,
behandlerdialogAvvistUbehandlet = false,
)

// TODO: Hent latest oppfolgingstilfelle fra this
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,10 @@ class PersonoppgavehendelseService(
connection.updatePersonOversiktStatusBehandlerdialogUbesvart(isUbehandlet, personident)
OversikthendelseType.BEHANDLERDIALOG_MELDING_UBESVART_BEHANDLET ->
connection.updatePersonOversiktStatusBehandlerdialogUbesvart(isBehandlet, personident)
OversikthendelseType.BEHANDLERDIALOG_MELDING_AVVIST_MOTTATT ->
connection.updatePersonOversiktStatusBehandlerdialogAvvist(isUbehandlet, personident)
OversikthendelseType.BEHANDLERDIALOG_MELDING_AVVIST_BEHANDLET ->
connection.updatePersonOversiktStatusBehandlerdialogAvvist(isBehandlet, personident)
}

COUNT_KAFKA_CONSUMER_PERSONOPPGAVEHENDELSE_UPDATED_PERSONOVERSIKT_STATUS.increment()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -189,6 +189,25 @@ fun Connection.updatePersonOversiktStatusBehandlerdialogUbesvart(
}
}

const val queryUpdatePersonOversiktStatusBehandlerdialogAvvist =
"""
UPDATE PERSON_OVERSIKT_STATUS
SET behandlerdialog_avvist_ubehandlet = ?, sist_endret = ?
WHERE fnr = ?
"""

fun Connection.updatePersonOversiktStatusBehandlerdialogAvvist(
isBehandlerdialogAvvistUbehandlet: Boolean,
personIdent: PersonIdent,
) {
this.prepareStatement(queryUpdatePersonOversiktStatusBehandlerdialogAvvist).use {
it.setBoolean(1, isBehandlerdialogAvvistUbehandlet)
it.setObject(2, Timestamp.from(Instant.now()))
it.setString(3, personIdent.value)
it.execute()
}
}

fun DatabaseInterface.oppdaterEnhetDersomKnytningFinnes(veilederBrukerKnytning: VeilederBrukerKnytning): Long {
var id = KNYTNING_IKKE_FUNNET

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,9 @@ const val queryCreatePersonOversiktStatus =
aktivitetskrav_sist_vurdert,
aktivitetskrav_vurdering_frist,
behandlerdialog_svar_ubehandlet,
behandlerdialog_ubesvart_ubehandlet
) VALUES (DEFAULT, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
behandlerdialog_ubesvart_ubehandlet,
behandlerdialog_avvist_ubehandlet
) VALUES (DEFAULT, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
RETURNING id
"""

Expand Down Expand Up @@ -103,6 +104,7 @@ fun Connection.createPersonOversiktStatus(
it.setObject(26, personOversiktStatus.aktivitetskravVurderingFrist)
it.setBoolean(27, personOversiktStatus.behandlerdialogSvarUbehandlet)
it.setBoolean(28, personOversiktStatus.behandlerdialogUbesvartUbehandlet)
it.setBoolean(29, personOversiktStatus.behandlerdialogAvvistUbehandlet)
it.executeQuery().toList { getInt("id") }.firstOrNull()
} ?: throw SQLException("Creating PersonOversikStatus failed, no rows affected.")

Expand Down Expand Up @@ -175,6 +177,7 @@ fun DatabaseInterface.lagreBrukerKnytningPaEnhet(veilederBrukerKnytning: Veilede
aktivitetskravVurderingFrist = null,
behandlerdialogSvarUbehandlet = false,
behandlerdialogUbesvartUbehandlet = false,
behandlerdialogAvvistUbehandlet = false,
)
this.connection.use { connection ->
connection.createPersonOversiktStatus(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ const val queryHentUbehandledePersonerTilknyttetEnhet = """
)
OR behandlerdialog_svar_ubehandlet = 't'
OR behandlerdialog_ubesvart_ubehandlet = 't'
OR behandlerdialog_avvist_ubehandlet = 't'
)
);
"""
Expand Down Expand Up @@ -113,6 +114,7 @@ fun ResultSet.toPPersonOversiktStatus(): PPersonOversiktStatus =
aktivitetskravVurderingFrist = getObject("aktivitetskrav_vurdering_frist", LocalDate::class.java),
behandlerdialogSvarUbehandlet = getObject("behandlerdialog_svar_ubehandlet") as Boolean,
behandlerdialogUbesvartUbehandlet = getObject("behandlerdialog_ubesvart_ubehandlet") as Boolean,
behandlerdialogAvvistUbehandlet = getObject("behandlerdialog_avvist_ubehandlet") as Boolean,
)

fun ResultSet.toVeilederBrukerKnytning(): VeilederBrukerKnytning =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,6 @@ enum class OversikthendelseType {
BEHANDLERDIALOG_SVAR_BEHANDLET,
BEHANDLERDIALOG_MELDING_UBESVART_MOTTATT,
BEHANDLERDIALOG_MELDING_UBESVART_BEHANDLET,
BEHANDLERDIALOG_MELDING_AVVIST_MOTTATT,
BEHANDLERDIALOG_MELDING_AVVIST_BEHANDLET,
}
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ data class PPersonOversiktStatus(
val aktivitetskravVurderingFrist: LocalDate?,
val behandlerdialogSvarUbehandlet: Boolean,
val behandlerdialogUbesvartUbehandlet: Boolean,
val behandlerdialogAvvistUbehandlet: Boolean,
)

fun PPersonOversiktStatus.toPersonOversiktStatus(
Expand All @@ -57,6 +58,7 @@ fun PPersonOversiktStatus.toPersonOversiktStatus(
aktivitetskravVurderingFrist = this.aktivitetskravVurderingFrist,
behandlerdialogSvarUbehandlet = this.behandlerdialogSvarUbehandlet,
behandlerdialogUbesvartUbehandlet = this.behandlerdialogUbesvartUbehandlet,
behandlerdialogAvvistUbehandlet = this.behandlerdialogAvvistUbehandlet,
)

fun PPersonOversiktStatus.toPersonOppfolgingstilfelle(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,12 @@ data class PersonOversiktStatus(
val aktivitetskravVurderingFrist: LocalDate?,
val behandlerdialogSvarUbehandlet: Boolean,
val behandlerdialogUbesvartUbehandlet: Boolean,
val behandlerdialogAvvistUbehandlet: Boolean,
) {
constructor(fnr: String) : this(
null, fnr = fnr, null, null, null,
null, false, null, null, null,
null, null, null, null, null, null, false, false,
null, null, null, null, null, null, false, false, false,
)
}

Expand Down Expand Up @@ -135,7 +136,9 @@ fun PersonOversiktStatus.toPersonOversiktStatusDTO(arenaCutoff: LocalDate) =
)

fun PersonOversiktStatus.hasActiveBehandlerdialogOppgave(): Boolean {
return this.behandlerdialogSvarUbehandlet || this.behandlerdialogUbesvartUbehandlet
return this.behandlerdialogSvarUbehandlet ||
this.behandlerdialogUbesvartUbehandlet ||
this.behandlerdialogAvvistUbehandlet
}

fun PersonOversiktStatus.applyHendelse(
Expand Down Expand Up @@ -181,4 +184,12 @@ fun PersonOversiktStatus.applyHendelse(
OversikthendelseType.BEHANDLERDIALOG_MELDING_UBESVART_BEHANDLET -> this.copy(
behandlerdialogUbesvartUbehandlet = false,
)

OversikthendelseType.BEHANDLERDIALOG_MELDING_AVVIST_MOTTATT -> this.copy(
behandlerdialogAvvistUbehandlet = true,
)

OversikthendelseType.BEHANDLERDIALOG_MELDING_AVVIST_BEHANDLET -> this.copy(
behandlerdialogAvvistUbehandlet = false,
)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
ALTER TABLE person_oversikt_status
ADD COLUMN behandlerdialog_avvist_ubehandlet BOOLEAN DEFAULT FALSE;


DROP INDEX IX_PERSON_OVERSIKT_STATUS_ENHETENS_OVERSIKT;

CREATE INDEX IX_PERSON_OVERSIKT_STATUS_ENHETENS_OVERSIKT
ON PERSON_OVERSIKT_STATUS (tildelt_enhet, dialogmotekandidat_generated_at)
WHERE (motebehov_ubehandlet
OR oppfolgingsplan_lps_bistand_ubehandlet
OR dialogmotesvar_ubehandlet
OR dialogmotekandidat
OR ((aktivitetskrav = 'NY' OR aktivitetskrav = 'AVVENT') AND aktivitetskrav_stoppunkt > '2023-03-10')
OR behandlerdialog_svar_ubehandlet
OR behandlerdialog_ubesvart_ubehandlet
OR behandlerdialog_avvist_ubehandlet
);

Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,37 @@ object PersonoppgavehendelseServiceSpek : Spek({
isUbehandlet.shouldBeFalse()
}

it("Create personoversiktstatus from behandlerdialog avvist mottatt hendelse") {
val behandlerdialogAvvistMottatt = KPersonoppgavehendelse(
personident = UserConstants.ARBEIDSTAKER_FNR,
hendelsetype = OversikthendelseType.BEHANDLERDIALOG_MELDING_AVVIST_MOTTATT.name,
)
mockReceiveHendelse(behandlerdialogAvvistMottatt, mockPersonoppgavehendelse)

personoppgavehendelseService.pollAndProcessRecords(kafkaConsumer = mockPersonoppgavehendelse)

val personoversiktStatuser = database.getPersonOversiktStatusList(UserConstants.ARBEIDSTAKER_FNR)
val firstStatus = personoversiktStatuser.first()
firstStatus.behandlerdialogAvvistUbehandlet.shouldBeTrue()
}

it("Update personoversiktstatus from behandlerdialog avvist behandlet hendelse") {
val behandlerdialogAvvistBehandlet = KPersonoppgavehendelse(
personident = UserConstants.ARBEIDSTAKER_FNR,
hendelsetype = OversikthendelseType.BEHANDLERDIALOG_MELDING_AVVIST_BEHANDLET.name,
)
mockReceiveHendelse(behandlerdialogAvvistBehandlet, mockPersonoppgavehendelse)
val personOversiktStatus = PersonOversiktStatus(UserConstants.ARBEIDSTAKER_FNR)
.applyHendelse(OversikthendelseType.BEHANDLERDIALOG_MELDING_AVVIST_MOTTATT)
database.createPersonOversiktStatus(personOversiktStatus)

personoppgavehendelseService.pollAndProcessRecords(kafkaConsumer = mockPersonoppgavehendelse)

val personoversiktStatuser = database.getPersonOversiktStatusList(UserConstants.ARBEIDSTAKER_FNR)
val firstStatus = personoversiktStatuser.first()
firstStatus.behandlerdialogAvvistUbehandlet.shouldBeFalse()
}

it("Ignore records with unknown hendelsetype") {
mockReceiveHendelse(unknownHendelsetype, mockPersonoppgavehendelse)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ object BehandlerdialogPersonoversiktStatusApiV2Spek : Spek({
database.connection.dropData()
}

it("return person with behandlerdialog_ubehandlet true when mottatt svar") {
it("return person with behandlerdialog_ubehandlet true when svar mottatt") {
val oversikthendelseBehandlerdialogSvarMottatt = KPersonoppgavehendelse(
UserConstants.ARBEIDSTAKER_FNR,
OversikthendelseType.BEHANDLERDIALOG_SVAR_MOTTATT.name,
Expand Down Expand Up @@ -74,7 +74,7 @@ object BehandlerdialogPersonoversiktStatusApiV2Spek : Spek({
}
}

it("return person with behandlerdialog_ubehandlet true when ubesvart melding") {
it("return person with behandlerdialog_ubehandlet true when ubesvart melding mottatt") {
val oversikthendelseBehandlerdialogUbesvartMottatt = KPersonoppgavehendelse(
UserConstants.ARBEIDSTAKER_FNR,
OversikthendelseType.BEHANDLERDIALOG_MELDING_UBESVART_MOTTATT.name,
Expand Down Expand Up @@ -148,6 +148,66 @@ object BehandlerdialogPersonoversiktStatusApiV2Spek : Spek({
personOversiktStatus.behandlerdialogUbehandlet shouldBeEqualTo true
}
}

it("return person with behandlerdialog_ubehandlet true when avvist melding mottatt") {
val oversikthendelseBehandlerdialogAvvistMottatt = KPersonoppgavehendelse(
UserConstants.ARBEIDSTAKER_FNR,
OversikthendelseType.BEHANDLERDIALOG_MELDING_AVVIST_MOTTATT.name,
)
database.connection.use {
personoppgavehendelseService.processPersonoppgavehendelse(
connection = it,
kPersonoppgavehendelse = oversikthendelseBehandlerdialogAvvistMottatt,
callId = UUID.randomUUID().toString(),
)
it.commit()
}
database.setTildeltEnhet(
ident = PersonIdent(UserConstants.ARBEIDSTAKER_FNR),
enhet = NAV_ENHET,
)

with(
handleRequest(HttpMethod.Get, url) {
addHeader(HttpHeaders.Authorization, bearerHeader(validToken))
}
) {
response.status() shouldBeEqualTo HttpStatusCode.OK

val personOversiktStatus =
objectMapper.readValue<List<PersonOversiktStatusDTO>>(response.content!!).first()
personOversiktStatus.fnr shouldBeEqualTo oversikthendelseBehandlerdialogAvvistMottatt.personident
personOversiktStatus.enhet shouldBeEqualTo behandlendeEnhetDTO().enhetId
personOversiktStatus.behandlerdialogUbehandlet shouldBeEqualTo true
}
}

it("return no person when avvist melding behandlet") {
val oversikthendelseBehandlerdialogAvvistMottatt = KPersonoppgavehendelse(
UserConstants.ARBEIDSTAKER_FNR,
OversikthendelseType.BEHANDLERDIALOG_MELDING_AVVIST_BEHANDLET.name,
)
database.connection.use {
personoppgavehendelseService.processPersonoppgavehendelse(
connection = it,
kPersonoppgavehendelse = oversikthendelseBehandlerdialogAvvistMottatt,
callId = UUID.randomUUID().toString(),
)
it.commit()
}
database.setTildeltEnhet(
ident = PersonIdent(UserConstants.ARBEIDSTAKER_FNR),
enhet = NAV_ENHET,
)

with(
handleRequest(HttpMethod.Get, url) {
addHeader(HttpHeaders.Authorization, bearerHeader(validToken))
}
) {
response.status() shouldBeEqualTo HttpStatusCode.NoContent
}
}
}
}
})
Original file line number Diff line number Diff line change
Expand Up @@ -31,4 +31,5 @@ fun generatePPersonOversiktStatus(fnr: String = UserConstants.ARBEIDSTAKER_FNR)
aktivitetskravVurderingFrist = null,
behandlerdialogSvarUbehandlet = false,
behandlerdialogUbesvartUbehandlet = false,
behandlerdialogAvvistUbehandlet = false,
)

0 comments on commit e71296c

Please sign in to comment.