Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/OY-4825' into MERGE__OY-415__OY-…
Browse files Browse the repository at this point in the history
…4836__OY-4825
  • Loading branch information
marjakari committed May 15, 2024
2 parents 0e99b2d + 064e8e5 commit 45faf94
Show file tree
Hide file tree
Showing 7 changed files with 9,244 additions and 145 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -52,10 +52,6 @@ class KoskiDataHandler(

implicit val localDateOrdering: Ordering[LocalDate] = _ compareTo _

private def loytyykoHylattyja(suoritus: KoskiSuoritus): Boolean = {
suoritus.osasuoritukset.exists(_.arviointi.exists(_.hyväksytty.contains(false)))
}

private def shouldSaveSuoritus(
henkiloOid: String,
suoritus: KoskiSuoritus,
Expand Down Expand Up @@ -379,13 +375,6 @@ class KoskiDataHandler(
}
}

private def arvosanaForSuoritus(
arvosana: Arvosana,
s: Suoritus with Identified[UUID]
): Arvosana = {
arvosana.copy(suoritus = s.id)
}

private def saveArvosana(arvosana: Arvosana): Future[Any] = {
(arvosanaRekisteri ? arvosana).recoverWith { case t: AskTimeoutException =>
logger.error(
Expand All @@ -396,14 +385,6 @@ class KoskiDataHandler(
}
}

private def arvosanaToInsertResource(
arvosana: Arvosana,
suoritus: Suoritus with Identified[UUID],
personOidsWithAliases: PersonOidsWithAliases
) = {
InsertResource[UUID, Arvosana](arvosanaForSuoritus(arvosana, suoritus), personOidsWithAliases)
}

private def getAliases(personOidsWithAliases: PersonOidsWithAliases): Set[String] = {
// assuming that there is only one personOid in the structure
personOidsWithAliases.aliasesByPersonOids.values.head
Expand Down Expand Up @@ -908,8 +889,3 @@ case class SuoritusLuokka(
lasnaDate: LocalDate,
luokkataso: Option[String] = None
)

case class MultipleSuoritusException(henkiloOid: String, myontaja: String, komo: String)
extends Exception(
s"Multiple suoritus found for henkilo $henkiloOid by myontaja $myontaja with komo $komo."
)
Original file line number Diff line number Diff line change
Expand Up @@ -329,13 +329,40 @@ class KoskiSuoritusArvosanaParser {
}
}

private def isFailedNinthGrade(suoritukset: Seq[KoskiSuoritus]): Boolean = {
private def hasFailedNinthGrade(suoritukset: Seq[KoskiSuoritus]): Boolean = {
val ysiluokat = suoritukset.filter(_.koulutusmoduuli.isNinthGrade())
val failed = ysiluokat.exists(_.jääLuokalle.getOrElse(false))
val succeeded = ysiluokat.exists(_.jääLuokalle.getOrElse(false) == false)
// tämä taitaa olla turha koska uusittuna läpäisty 9-luokka ei oletettavasti näy 9-luokan suorituksena
// vaan päättötodistuksena
val succeeded = ysiluokat.exists(!_.jääLuokalle.getOrElse(false))
failed && !succeeded
}

private def isFailedNinthGrade(suoritus: KoskiSuoritus): Boolean = {
val ysiluokka = suoritus.koulutusmoduuli.isNinthGrade()
val jaaluokalle = suoritus.jääLuokalle.getOrElse(false)
ysiluokka && jaaluokalle
}

private def hasVahvistettuPerusopetus(suoritukset: Seq[KoskiSuoritus]): Boolean = {
val vahvistettuPerusopetus = suoritukset
.filter(_.isPerusopetuksenoppimaara())
.filter(s =>
s.vahvistus.isDefined &&
s.vahvistus.exists(v => {
val valmistumispaiva = parseLocalDate(v.päivä)
!valmistumispaiva.isAfter(KoskiUtil.deadlineDate)
})
)
!vahvistettuPerusopetus.isEmpty
}
private def isValmisPerusopetus(opiskeluoikeus: KoskiOpiskeluoikeus): Boolean = {
opiskeluoikeus.tyyppi.exists(
_.koodiarvo == "perusopetus"
) && opiskeluoikeus.tila.opiskeluoikeusjaksot.exists(jakso =>
jakso.tila.koodiarvo.contentEquals("valmistunut")
)
}
private def perusopetuksenArvosanatSisaltavatNelosia(arvosanat: Seq[Arvosana]): Boolean = {
arvosanat.exists(a =>
a.arvio match {
Expand All @@ -352,7 +379,10 @@ class KoskiSuoritusArvosanaParser {
opiskeluoikeus: KoskiOpiskeluoikeus
): Seq[SuoritusArvosanat] = {
var result = Seq[SuoritusArvosanat]()
val failedNinthGrade = isFailedNinthGrade(suoritukset)
val valmisPerusopetus = isValmisPerusopetus(opiskeluoikeus)
val vahvistettuPerusopetuksenOppimaara = hasVahvistettuPerusopetus(suoritukset)
val failedNinthGrade =
hasFailedNinthGrade(suoritukset) && !(valmisPerusopetus || vahvistettuPerusopetuksenOppimaara)
var lahdeArvot: Map[String, String] = Map[String, String]()
lahdeArvot += ("last modified" -> System.currentTimeMillis().toString)
for {
Expand Down Expand Up @@ -409,8 +439,8 @@ class KoskiSuoritusArvosanaParser {
suorituksenValmistumispäivä = valmistuminen.valmistumisPaiva,
isAikuistenPerusopetus = isAikuistenPerusopetus
)

if (failedNinthGrade) {
// ei tuoda luokalle jäädyn 9-luokan arvosanoja
if (isFailedNinthGrade(suoritus)) {
as = Seq.empty
}

Expand Down Expand Up @@ -553,7 +583,7 @@ class KoskiSuoritusArvosanaParser {

case Oids.perusopetusKomoOid =>
val arvosanoissaNelosia = perusopetuksenArvosanatSisaltavatNelosia(arvosanat)
if (failedNinthGrade || suoritus.jääLuokalle.contains(true)) {
if (failedNinthGrade) {
logger.info(
s"Perusopetuksen tilapäättely - henkilö $personOid: merkitään luokalle jääväksi merkitty perusopetuksen suoritus tilaan KESKEYTYNYT (aiempi tila $suoritusTila)"
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -204,6 +204,11 @@ case class KoskiSuoritus(
tyyppi.exists(_.koodiarvo == "aikuistenperusopetuksenoppimaara")
}

def isPerusopetuksenoppimaara(): Boolean = {
tyyppi.exists(_.koodiarvo == "perusopetuksenoppimaara") ||
tyyppi.exists(_.koodiarvo == "aikuistenperusopetuksenoppimaara")
}

def laajuusVahintaan(min: BigDecimal): Boolean = {
val sum =
if (isOpistovuosi) {
Expand Down
Loading

0 comments on commit 45faf94

Please sign in to comment.