@@ -8,6 +8,7 @@ import arrow.core.right
8
8
import behandling.klage.domain.KlageId
9
9
import dokument.domain.Dokument
10
10
import dokument.domain.brev.BrevService
11
+ import dokument.domain.hendelser.DokumentHendelseRepo
11
12
import dokument.domain.journalføring.ErTilknyttetSak
12
13
import dokument.domain.journalføring.KunneIkkeSjekkeTilknytningTilSak
13
14
import dokument.domain.journalføring.QueryJournalpostClient
@@ -21,6 +22,7 @@ import no.nav.su.se.bakover.domain.klage.AvsluttetKlage
21
22
import no.nav.su.se.bakover.domain.klage.AvvistKlage
22
23
import no.nav.su.se.bakover.domain.klage.IverksattAvvistKlage
23
24
import no.nav.su.se.bakover.domain.klage.KanBekrefteKlagevurdering
25
+ import no.nav.su.se.bakover.domain.klage.KanGenerereBrevutkast
24
26
import no.nav.su.se.bakover.domain.klage.KanLeggeTilFritekstTilAvvistBrev
25
27
import no.nav.su.se.bakover.domain.klage.Klage
26
28
import no.nav.su.se.bakover.domain.klage.KlageClient
@@ -30,6 +32,7 @@ import no.nav.su.se.bakover.domain.klage.KlageTilAttestering
30
32
import no.nav.su.se.bakover.domain.klage.KunneIkkeAvslutteKlage
31
33
import no.nav.su.se.bakover.domain.klage.KunneIkkeBekrefteKlagesteg
32
34
import no.nav.su.se.bakover.domain.klage.KunneIkkeIverksetteAvvistKlage
35
+ import no.nav.su.se.bakover.domain.klage.KunneIkkeLageBrevKommandoForKlage
33
36
import no.nav.su.se.bakover.domain.klage.KunneIkkeLeggeTilFritekstForAvvist
34
37
import no.nav.su.se.bakover.domain.klage.KunneIkkeOppretteKlage
35
38
import no.nav.su.se.bakover.domain.klage.KunneIkkeOversendeKlage
@@ -57,6 +60,8 @@ import no.nav.su.se.bakover.oppgave.domain.Oppgavetype
57
60
import no.nav.su.se.bakover.vedtak.application.VedtakService
58
61
import org.slf4j.LoggerFactory
59
62
import java.time.Clock
63
+ import java.time.LocalDate
64
+ import java.util.UUID
60
65
61
66
class KlageServiceImpl (
62
67
private val sakService : SakService ,
@@ -67,6 +72,7 @@ class KlageServiceImpl(
67
72
private val sessionFactory : SessionFactory ,
68
73
private val oppgaveService : OppgaveService ,
69
74
private val queryJournalpostClient : QueryJournalpostClient ,
75
+ private val dokumentHendelseRepo : DokumentHendelseRepo ,
70
76
val clock : Clock ,
71
77
) : KlageService {
72
78
@@ -135,7 +141,8 @@ class KlageServiceImpl(
135
141
throw RuntimeException (" Fant ikke sak med id ${command.sakId} " )
136
142
}
137
143
command.vedtakId?.let {
138
- val vedtak = sak.hentVedtakForId(command.vedtakId) ? : return KunneIkkeVilk årsvurdereKlage.FantIkkeVedtak .left()
144
+ val vedtak =
145
+ sak.hentVedtakForId(command.vedtakId) ? : return KunneIkkeVilk årsvurdereKlage.FantIkkeVedtak .left()
139
146
if (! vedtak.skalSendeBrev) {
140
147
// Dersom vi ikke har sendt ut et vedtaksbrev, kan det ikke beklages.
141
148
return KunneIkkeVilk årsvurdereKlage.VedtakSkalIkkeSendeBrev .left()
@@ -248,7 +255,7 @@ class KlageServiceImpl(
248
255
} ? : OppdaterOppgaveInfo .TilordnetRessurs .IkkeTilordneRessurs ,
249
256
),
250
257
).mapLeft {
251
- log.error(" Feil ved oppdatering av oppgave ${klage.oppgaveId} , for klage ${klage.id} . Feilen var $it " )
258
+ log.error(" Send klagebehandling til attestering: Feil ved oppdatering av oppgave ${klage.oppgaveId} , for klage ${klage.id} . Feilen var $it " )
252
259
}
253
260
}
254
261
}
@@ -272,26 +279,38 @@ class KlageServiceImpl(
272
279
tilordnetRessurs = OppdaterOppgaveInfo .TilordnetRessurs .NavIdent (klage.saksbehandler.navIdent),
273
280
),
274
281
).mapLeft {
275
- log.error(" Feil ved oppdatering av oppgave ${klage.oppgaveId} , for klage ${klage.id} . Feilen var $it " )
282
+ log.error(" Underkjenn klagebehandling: Feil ved oppdatering av oppgave ${klage.oppgaveId} , for klage ${klage.id} . Feilen var $it " )
276
283
}
277
284
}
278
285
}
279
286
280
287
override fun oversend (
288
+ sakId : UUID ,
281
289
klageId : KlageId ,
282
290
attestant : NavIdentBruker .Attestant ,
283
291
): Either <KunneIkkeOversendeKlage , OversendtKlage > {
284
- val klage = (klageRepo.hentKlage(klageId) ? : return KunneIkkeOversendeKlage .FantIkkeKlage .left()).let {
285
- it as ? KlageTilAttestering .Vurdert ? : return KunneIkkeOversendeKlage .UgyldigTilstand (it::class )
286
- .left()
287
- }
292
+ val sak = sakService.hentSak(sakId)
293
+ .getOrElse {
294
+ throw java.lang.IllegalStateException (" Kunne ikke generere brevutkast for sak. Fant ikke sak med id $sakId og klageId $klageId " )
295
+ }
296
+
297
+ val klage = (
298
+ sak.hentKlage(klageId)
299
+ ? : run {
300
+ log.error(" Kunne ikke generere brevutkast for sak. Fant ikke klage med id $klageId på sak $sakId " )
301
+ return KunneIkkeOversendeKlage .FantIkkeKlage .left()
302
+ }
288
303
304
+ ).let {
305
+ (it as ? KlageTilAttestering .Vurdert ) ? : return KunneIkkeOversendeKlage .UgyldigTilstand (it::class ).left()
306
+ }
307
+ val vedtakId = klage.vilkårsvurderinger.vedtakId
289
308
val oversendtKlage =
290
309
klage.oversend(Attestering .Iverksatt (attestant = attestant, opprettet = Tidspunkt .now(clock)))
291
310
.getOrElse { return it.left() }
292
311
293
312
val dokument = oversendtKlage.genererOversendelsesbrev(
294
- hentVedtaksbrevDato = { klageRepo.hentVedtaksbrevDatoSomDetKlagesPå(klage.id ) },
313
+ hentVedtaksbrevDato = { hentVedtaksbrevDatoForKlage(sakId, vedtakId, klageId ) },
295
314
).getOrElse {
296
315
return KunneIkkeOversendeKlage .KunneIkkeLageBrevRequest (it).left()
297
316
}.let {
@@ -390,20 +409,49 @@ class KlageServiceImpl(
390
409
}
391
410
392
411
override fun brevutkast (
412
+ sakId : UUID ,
393
413
klageId : KlageId ,
394
414
ident : NavIdentBruker ,
395
415
): Either <KunneIkkeLageBrevutkast , PdfA > {
416
+ val sak = sakService.hentSak(sakId)
417
+ .getOrElse { throw IllegalStateException (" Kunne ikke generere brevutkast for sak. Fant ikke sak med id $sakId og klageId $klageId " ) }
418
+ val klage = sak.hentKlage(klageId)
419
+ ? : run {
420
+ log.error(" Kunne ikke generere brevutkast for sak. Fant ikke klage med id $klageId på sak $sakId " )
421
+ return KunneIkkeLageBrevutkast .FantIkkeKlage .left()
422
+ }
423
+ (klage as ? KanGenerereBrevutkast ) ? : return KunneIkkeLageBrevutkast .FeilVedBrevRequest (
424
+ KunneIkkeLageBrevKommandoForKlage .UgyldigTilstand (fra = klage::class ),
425
+ ).left()
426
+ val vedtakId = klage.vilkårsvurderinger?.vedtakId ? : return KunneIkkeLageBrevutkast .FeilVedBrevRequest (KunneIkkeLageBrevKommandoForKlage .UgyldigTilstand (klage::class )).left()
427
+ val vedtaksbrevdato = hentVedtaksbrevDatoForKlage(sakId, vedtakId, klageId)
428
+ ? : run {
429
+ log.error(" Kunne ikke generere brevutkast for sak. Fant ikke vedtaksbrevdato for sak $sakId og vedtakId $vedtakId " )
430
+ return KunneIkkeLageBrevutkast .FeilVedBrevRequest (KunneIkkeLageBrevKommandoForKlage .FeilVedHentingAvVedtaksbrevDato )
431
+ .left()
432
+ }
396
433
return genererBrevutkastForKlage(
397
434
klageId = klageId,
398
435
ident = ident,
399
- hentKlage = { klageRepo.hentKlage(klageId) },
400
- hentVedtaksbrevDato = { klageRepo.hentVedtaksbrevDatoSomDetKlagesPå(klageId) },
436
+ hentKlage = { klage },
437
+ hentVedtaksbrevDato = { vedtaksbrevdato },
401
438
genererPdf = {
402
439
brevService.lagDokument(command = it).map { it.generertDokument }
403
440
},
404
441
)
405
442
}
406
443
444
+ private fun hentVedtaksbrevDatoForKlage (
445
+ sakId : UUID ,
446
+ vedtakId : UUID ,
447
+ klageId : KlageId ,
448
+ ): LocalDate ? {
449
+ return (
450
+ klageRepo.hentVedtaksbrevDatoSomDetKlagesPå(klageId)
451
+ ? : dokumentHendelseRepo.hentVedtaksbrevdatoForSakOgVedtakId(sakId, vedtakId)
452
+ )
453
+ }
454
+
407
455
override fun avslutt (
408
456
klageId : KlageId ,
409
457
saksbehandler : NavIdentBruker .Saksbehandler ,
0 commit comments