Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/opprydninger etter migrering 2 #4569

Merged
merged 3 commits into from
Nov 1, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -25,55 +25,29 @@ enum class Tiltakskode {
VARIG_TILRETTELAGT_ARBEID_SKJERMET -> "VASV"
}
}

companion object {
fun fromArenaKode(arenaKode: String): Tiltakskode? {
return when (arenaKode) {
"ARBFORB" -> ARBEIDSFORBEREDENDE_TRENING
"ARBRRHDAG" -> ARBEIDSRETTET_REHABILITERING
"AVKLARAG" -> AVKLARING
"DIGIOPPARB" -> DIGITALT_OPPFOLGINGSTILTAK
"GRUFAGYRKE" -> GRUPPE_FAG_OG_YRKESOPPLAERING
"GRUPPEAMO" -> GRUPPE_ARBEIDSMARKEDSOPPLAERING
"INDOPPFAG" -> OPPFOLGING
"JOBBK" -> JOBBKLUBB
"VASV" -> VARIG_TILRETTELAGT_ARBEID_SKJERMET
else -> null
}
}

fun fromArenaKodeOrFail(arenaKode: String): Tiltakskode {
return requireNotNull(fromArenaKode(arenaKode)) {
"Tiltakskode er ikke definert for $arenaKode"
}
}
}
}

object Tiltakskoder {
/**
* Tiltakskoder for de forhåndsgodkjente og anskaffede tiltakene, kalt "gruppetilak" (av oss i hvert fall), og som
* skal migreres fra Arena som del av P4.
*/
val GruppetiltakArenaKoder = listOf(
private val GruppetiltakArenaKoder = listOf(
"ARBFORB",
"ARBRRHDAG",
"AVKLARAG",
"DIGIOPPARB",
"GRUFAGYRKE",
"GRUPPEAMO",
"INDJOBSTOT",
"INDOPPFAG",
"IPSUNG",
"JOBBK",
"UTVAOONAV",
"VASV",
)

/**
* Tiltakskoder for de gruppetiltak som er i egen regi, og som administreres i Sanity ikke i admin-flate
* Tiltakskoder for tiltak i egen regi (regi av Nav), og som foreløpig administreres i Sanity ikke i admin-flate.
*/
val EgenRegiTiltak = listOf(
private val EgenRegiTiltak = listOf(
"INDJOBSTOT",
"IPSUNG",
"UTVAOONAV",
Expand All @@ -83,28 +57,13 @@ object Tiltakskoder {
* Tiltakskoder som, enn så lenge, blir antatt å ha en felles oppstartsdato for alle deltakere.
* Disse har blitt referert til som "kurs" av komet.
*/
val TiltakMedFellesOppstart = listOf(
private val TiltakMedFellesOppstart = listOf(
Tiltakskode.GRUPPE_ARBEIDSMARKEDSOPPLAERING,
Tiltakskode.JOBBKLUBB,
Tiltakskode.GRUPPE_FAG_OG_YRKESOPPLAERING,
)

/**
* Tiltakskoder der Komet har tatt eierskap til deltakelsene.
*/
val AmtTiltak = listOf(
"ARBFORB",
"ARBRRHDAG",
"AVKLARAG",
"DIGIOPPARB",
"GRUFAGYRKE",
"GRUPPEAMO",
"INDOPPFAG",
"JOBBK",
"VASV",
)

val TiltakMedAvtalerFraMulighetsrommet = listOf(
private val ForhaandsgodkjentTiltak = listOf(
Tiltakskode.ARBEIDSFORBEREDENDE_TRENING,
Tiltakskode.VARIG_TILRETTELAGT_ARBEID_SKJERMET,
)
Expand All @@ -121,11 +80,7 @@ object Tiltakskoder {
return tiltakskode in TiltakMedFellesOppstart
}

fun isAmtTiltak(arenaKode: String): Boolean {
return arenaKode in AmtTiltak
}

fun isTiltakMedAvtalerFraMulighetsrommet(tiltakskode: Tiltakskode?): Boolean {
return tiltakskode in TiltakMedAvtalerFraMulighetsrommet
fun isForhaandsgodkjentTiltak(tiltakskode: Tiltakskode?): Boolean {
return tiltakskode in ForhaandsgodkjentTiltak
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -305,10 +305,6 @@ private fun services(appConfig: AppConfig) = module {
get(),
get(),
get(),
get(),
get(),
get(),
get(),
)
}
single {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -477,7 +477,7 @@ class AvtaleRepository(private val db: Database) {
return tx.run(queryOf(query, mapOf("id" to id, "tidspunkt" to tidspunkt, "aarsak" to aarsak.name)).asUpdate)
}

fun setArrangorUnderenhet(tx: Session, avtaleId: UUID, arrangorId: UUID) {
private fun setArrangorUnderenhet(tx: Session, avtaleId: UUID, arrangorId: UUID) {
@Language("PostgreSQL")
val query = """
insert into avtale_arrangor_underenhet (avtale_id, arrangor_id)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,6 @@ import no.nav.mulighetsrommet.database.utils.Pagination
import no.nav.mulighetsrommet.database.utils.mapPaginated
import no.nav.mulighetsrommet.domain.Tiltakskode
import no.nav.mulighetsrommet.domain.constants.ArenaMigrering
import no.nav.mulighetsrommet.domain.dbo.ArenaTiltaksgjennomforingDbo
import no.nav.mulighetsrommet.domain.dbo.Avslutningsstatus
import no.nav.mulighetsrommet.domain.dbo.TiltaksgjennomforingOppstartstype
import no.nav.mulighetsrommet.domain.dto.*
import no.nav.mulighetsrommet.serialization.json.JsonIgnoreUnknownKeys
Expand Down Expand Up @@ -282,85 +280,6 @@ class TiltaksgjennomforingRepository(private val db: Database) {
}
}

fun upsertArenaTiltaksgjennomforing(tiltaksgjennomforing: ArenaTiltaksgjennomforingDbo) {
db.transaction { upsertArenaTiltaksgjennomforing(tiltaksgjennomforing, it) }
}

fun upsertArenaTiltaksgjennomforing(tiltaksgjennomforing: ArenaTiltaksgjennomforingDbo, tx: Session) {
logger.info("Lagrer tiltaksgjennomføring fra Arena id=${tiltaksgjennomforing.id}")

val arrangorId = queryOf(
"select id from arrangor where organisasjonsnummer = ?",
tiltaksgjennomforing.arrangorOrganisasjonsnummer,
)
.map { it.uuid("id") }
.asSingle
.let { requireNotNull(db.run(it)) }

@Language("PostgreSQL")
val query = """
insert into tiltaksgjennomforing (
id,
navn,
tiltakstype_id,
tiltaksnummer,
arrangor_id,
arena_ansvarlig_enhet,
start_dato,
slutt_dato,
apent_for_innsok,
antall_plasser,
avtale_id,
oppstart,
opphav,
deltidsprosent,
avbrutt_tidspunkt,
avbrutt_aarsak
)
values (
:id::uuid,
:navn,
:tiltakstype_id::uuid,
:tiltaksnummer,
:arrangor_id,
:arena_ansvarlig_enhet,
:start_dato,
:slutt_dato,
:apent_for_innsok,
:antall_plasser,
:avtale_id,
(select case
when arena_kode in ('GRUPPEAMO', 'JOBBK', 'GRUFAGYRKE') then 'FELLES'
else 'LOPENDE'
end::tiltaksgjennomforing_oppstartstype
from tiltakstype
where tiltakstype.id = :tiltakstype_id::uuid),
:opphav::opphav,
:deltidsprosent,
:avbrutt_tidspunkt,
:avbrutt_aarsak
)
on conflict (id)
do update set navn = excluded.navn,
tiltakstype_id = excluded.tiltakstype_id,
tiltaksnummer = excluded.tiltaksnummer,
arrangor_id = excluded.arrangor_id,
arena_ansvarlig_enhet = excluded.arena_ansvarlig_enhet,
start_dato = excluded.start_dato,
slutt_dato = excluded.slutt_dato,
apent_for_innsok = excluded.apent_for_innsok,
antall_plasser = excluded.antall_plasser,
avtale_id = excluded.avtale_id,
oppstart = coalesce(tiltaksgjennomforing.oppstart, excluded.oppstart),
opphav = coalesce(tiltaksgjennomforing.opphav, excluded.opphav),
deltidsprosent = excluded.deltidsprosent,
avbrutt_tidspunkt = excluded.avbrutt_tidspunkt,
avbrutt_aarsak = excluded.avbrutt_aarsak
""".trimIndent()

queryOf(query, tiltaksgjennomforing.toSqlParameters(arrangorId)).asExecute.let { tx.run(it) }
}

fun updateArenaData(id: UUID, tiltaksnummer: String, arenaAnsvarligEnhet: String?, tx: Session) {
logger.info("Oppdaterer tiltaksgjennomføring med Arena data id=$id")

Expand Down Expand Up @@ -686,32 +605,6 @@ class TiltaksgjennomforingRepository(private val db: Database) {
"tilgjengelig_for_arrangor_fra_dato" to tilgjengeligForArrangorFraOgMedDato,
)

private fun ArenaTiltaksgjennomforingDbo.toSqlParameters(arrangorId: UUID) = mapOf(
"opphav" to ArenaMigrering.Opphav.ARENA.name,
"id" to id,
"navn" to navn,
"tiltakstype_id" to tiltakstypeId,
"tiltaksnummer" to tiltaksnummer,
"arrangor_id" to arrangorId,
"start_dato" to startDato,
"arena_ansvarlig_enhet" to arenaAnsvarligEnhet,
"slutt_dato" to sluttDato,
"apent_for_innsok" to apentForInnsok,
"antall_plasser" to antallPlasser,
"avtale_id" to avtaleId,
"deltidsprosent" to deltidsprosent,
"avbrutt_tidspunkt" to when (avslutningsstatus) {
Avslutningsstatus.AVLYST -> startDato.atStartOfDay().minusDays(1)
Avslutningsstatus.AVBRUTT -> startDato.atStartOfDay()
Avslutningsstatus.AVSLUTTET -> null
Avslutningsstatus.IKKE_AVSLUTTET -> null
},
"avbrutt_aarsak" to when (avslutningsstatus) {
Avslutningsstatus.AVLYST, Avslutningsstatus.AVBRUTT -> AvbruttAarsak.AvbruttIArena.name
Avslutningsstatus.AVSLUTTET, Avslutningsstatus.IKKE_AVSLUTTET -> null
},
)

private fun Row.toTiltaksgjennomforingDto(): TiltaksgjennomforingDto {
val administratorer = stringOrNull("administratorer_json")
?.let { Json.decodeFromString<List<TiltaksgjennomforingDto.Administrator>>(it) }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,6 @@ fun Route.arenaAdapterRoutes() {
call.respond(arenaAdapterService.upsertAvtale(dbo))
}

delete("avtale/{id}") {
val id = call.parameters.getOrFail<UUID>("id")

arenaAdapterService.removeAvtale(id)
call.response.status(HttpStatusCode.OK)
}

put("tiltaksgjennomforing") {
val tiltaksgjennomforing = call.receive<ArenaTiltaksgjennomforingDbo>()

Expand All @@ -38,13 +31,6 @@ fun Route.arenaAdapterRoutes() {
call.respond(UpsertTiltaksgjennomforingResponse(sanityId))
}

delete("tiltaksgjennomforing/{id}") {
val id = call.parameters.getOrFail<UUID>("id")

arenaAdapterService.removeTiltaksgjennomforing(id)
call.response.status(HttpStatusCode.OK)
}

delete("sanity/tiltaksgjennomforing/{sanityId}") {
val sanityId = call.parameters.getOrFail<UUID>("sanityId")

Expand Down
Loading