Skip to content

Commit

Permalink
WIP: Toteutus
Browse files Browse the repository at this point in the history
  • Loading branch information
AleksiAhtiainen committed Jan 23, 2025
1 parent 3c3c2bd commit 709add6
Show file tree
Hide file tree
Showing 2 changed files with 63 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,12 @@ class OpiskeluoikeusFacade[OPISKELUOIKEUS: TypeTag](
))
}

val onOpiskeluoikeuksiaKoskessaFut: Future[Either[HttpStatus, Boolean]] =
masterHenkilöFut
.map(_.flatMap(masterHenkilö =>
Right(opiskeluoikeusRepository.oppijallaOnOpiskeluoikeuksiaKoskessa(masterHenkilö.oid))
))

val opiskeluoikeudetFut: Future[Either[HttpStatus, Seq[OPISKELUOIKEUS]]] =
masterHenkilöFut
.map(_.flatMap(masterHenkilö =>
Expand All @@ -86,16 +92,20 @@ class OpiskeluoikeusFacade[OPISKELUOIKEUS: TypeTag](

val rawOppija = for {
henkilö <- EitherT(masterHenkilöFut)
onOpiskeluoikeuksiaKoskessa <- EitherT(onOpiskeluoikeuksiaKoskessaFut)
opiskeluoikeudet <- EitherT(opiskeluoikeudetFut)
ytrResult <- EitherT(ytrResultFut)
virtaResult <- EitherT(virtaResultFut)
} yield RawOppija(henkilö, opiskeluoikeudet ++ ytrResult ++ virtaResult)
} yield RawOppija(henkilö, onOpiskeluoikeuksiaKoskessa, opiskeluoikeudet ++ ytrResult ++ virtaResult)

try {
Futures.await(
future = rawOppija.value,
atMost = if (Environment.isUnitTestEnvironment(application.config)) { 10.seconds } else { 5.minutes }
)
) match {
case Right(o) if !o.onKoskestaLuovutettavissa => Left(notFoundResult)
case result => result
}
} catch {
case _: TimeoutException => Left(KoskiErrorCategory.unavailable())
}
Expand Down Expand Up @@ -159,5 +169,9 @@ class OpiskeluoikeusFacade[OPISKELUOIKEUS: TypeTag](

case class RawOppija[OPISKELUOIKEUS: TypeTag](
henkilö: LaajatOppijaHenkilöTiedot,
onOpiskeluoikeuksiaKoskessa: Boolean,
opiskeluoikeudet: Seq[OPISKELUOIKEUS]
)
) {
def onKoskestaLuovutettavissa: Boolean =
onOpiskeluoikeuksiaKoskessa || !opiskeluoikeudet.isEmpty
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,52 @@ class OpiskeluoikeusRepository[OPISKELUOIKEUS: TypeTag](
val db: DB,
val validatingAndResolvingExtractor: ValidatingAndResolvingExtractor
) extends QueryMethods {

def oppijallaOnOpiskeluoikeuksiaKoskessa(oppijaMasterOid: String): Boolean = {
runDbSync(SQLHelpers.concatMany(Some(
sql"""
with
haettu_oppija as (
select
oid as oppija_oid,
coalesce(master_oid, oid) as oppija_master_oid
from henkilo
where henkilo.oid = $oppijaMasterOid or henkilo.master_oid = $oppijaMasterOid
)
, linkitetty as (
select
distinct haettu_oppija.oppija_master_oid
from
haettu_oppija
inner join haettu_oppija h2 on h2.oppija_master_oid = haettu_oppija.oppija_master_oid and h2.oppija_master_oid <> h2.oppija_oid
)
, opiskeluoikeus_kaikki as (
select
haettu_oppija.oppija_master_oid,
oid as opiskeluoikeus_oid
from
opiskeluoikeus
join haettu_oppija on haettu_oppija.oppija_oid = opiskeluoikeus.oppija_oid
left join linkitetty on linkitetty.oppija_master_oid = haettu_oppija.oppija_master_oid
where mitatoity = false
)
select exists(select 1 from opiskeluoikeus_kaikki) AS "exists"
""")).as[ExistsRow])
.headOption
.map(_.exists)
.getOrElse(false)
}

private implicit def getExistsRow: GetResult[ExistsRow] = GetResult(r => {
ExistsRow(
exists = r.rs.getBoolean("exists")
)
})

case class ExistsRow(
exists: Boolean
)

def getOppijanKaikkiOpiskeluoikeudet(
palautettavatOpiskeluoikeudenTyypit: Seq[String],
oppijaMasterOid: String
Expand Down

0 comments on commit 709add6

Please sign in to comment.