Skip to content

Commit

Permalink
Älä salli arviointia "Hylätty" ammatillisen tutkinnon osasuorituksiin
Browse files Browse the repository at this point in the history
  • Loading branch information
ilkkahanninen committed Oct 10, 2024
1 parent 3138b3d commit 94806e3
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 21 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -813,10 +813,10 @@ object AmmatillinenExampleData {
vahvistus = vahvistus(date(2016, 1, 1), stadinAmmattiopisto, Some(helsinki)),
keskiarvo = Some(4.0),
osasuoritukset = Some(List(
pakollinenTutkinnonOsanSuoritus("100832", "Kasvun tukeminen ja ohjaus", ammatillisetTutkinnonOsat, hylätty, 20).copy(
pakollinenTutkinnonOsanSuoritus("100832", "Kasvun tukeminen ja ohjaus", ammatillisetTutkinnonOsat, h2, 20).copy(
arviointi = Some(List(
AmmatillinenArviointi(arvosana = hylätty, date(2015, 1, 1)),
AmmatillinenArviointi(arvosana = hyväksytty, date(2016, 1, 1))
AmmatillinenArviointi(arvosana = h2, date(2015, 1, 1)),
AmmatillinenArviointi(arvosana = k3, date(2016, 1, 1))
)),
vahvistus = vahvistusValinnaisellaTittelillä(date(2016, 1, 1), stadinAmmattiopisto),
tunnustettu = Some(tunnustettu.copy(
Expand All @@ -826,24 +826,24 @@ object AmmatillinenExampleData {
näyttö(date(2016, 1, 1), "Muksulan päiväkodin ympäristövaikutusten arvioiminen ja ympäristön kunnostustöiden\ntekeminen sekä mittauksien tekeminen ja näytteiden ottaminen", "Muksulan päiväkoti, Kaarinan kunta", Some(näytönArviointi))
)
),
tutkinnonOsanSuoritus("100833", "Hoito ja huolenpito", ammatillisetTutkinnonOsat, hylätty, laajuus = Some(30), pakollinen = false).copy(
tutkinnonOsanSuoritus("100833", "Hoito ja huolenpito", ammatillisetTutkinnonOsat, h2, laajuus = Some(30), pakollinen = false).copy(
arviointi = Some(List(
AmmatillinenArviointi(arvosana = hylätty, date(2015, 1, 1)),
AmmatillinenArviointi(arvosana = hyväksytty, date(2016, 1, 1))
AmmatillinenArviointi(arvosana = h2, date(2015, 1, 1)),
AmmatillinenArviointi(arvosana = k3, date(2016, 1, 1))
)),
vahvistus = vahvistusValinnaisellaTittelillä(date(2016, 1, 1), stadinAmmattiopisto),
),
pakollinenTutkinnonOsanSuoritus("100834", "Kuntoutumisen tukeminen", vapaavalintaisetTutkinnonOsat, hylätty, 2).copy(
pakollinenTutkinnonOsanSuoritus("100834", "Kuntoutumisen tukeminen", vapaavalintaisetTutkinnonOsat, h2, 2).copy(
arviointi = Some(List(
AmmatillinenArviointi(arvosana = hylätty, date(2015, 1, 1)),
AmmatillinenArviointi(arvosana = hyväksytty, date(2016, 1, 1))
AmmatillinenArviointi(arvosana = h2, date(2015, 1, 1)),
AmmatillinenArviointi(arvosana = k3, date(2016, 1, 1))
)),
vahvistus = vahvistusValinnaisellaTittelillä(date(2016, 1, 1), stadinAmmattiopisto)
),
pakollinenTutkinnonOsanSuoritus("100835", "Asiakaspalvelu ja tietohallinta", yksilöllisestiLaajentavatTutkinnonOsat, hylätty, 2).copy(
pakollinenTutkinnonOsanSuoritus("100835", "Asiakaspalvelu ja tietohallinta", yksilöllisestiLaajentavatTutkinnonOsat, h2, 2).copy(
arviointi = Some(List(
AmmatillinenArviointi(arvosana = hylätty, date(2015, 1, 1)),
AmmatillinenArviointi(arvosana = hyväksytty, date(2016, 1, 1))
AmmatillinenArviointi(arvosana = h2, date(2015, 1, 1)),
AmmatillinenArviointi(arvosana = k3, date(2016, 1, 1))
)),
vahvistus = vahvistusValinnaisellaTittelillä(date(2016, 1, 1), stadinAmmattiopisto)
),
Expand All @@ -855,17 +855,17 @@ object AmmatillinenExampleData {
kieli = Koodistokoodiviite("AI1", "oppiaineaidinkielijakirjallisuus"),
laajuus = Some(LaajuusOsaamispisteissä(5))),
arviointi = Some(List(
AmmatillinenArviointi(arvosana = hylätty, date(2015, 1, 1)),
AmmatillinenArviointi(arvosana = hyväksytty, date(2016, 1, 1))
AmmatillinenArviointi(arvosana = h2, date(2015, 1, 1)),
AmmatillinenArviointi(arvosana = k3, date(2016, 1, 1))
))),
YhteisenTutkinnonOsanOsaAlueenSuoritus(
koulutusmoduuli = AmmatillisenTutkinnonÄidinkieli(Koodistokoodiviite("AI", "ammatillisenoppiaineet"),
pakollinen = false,
kieli = Koodistokoodiviite("AI1", "oppiaineaidinkielijakirjallisuus"),
laajuus = Some(LaajuusOsaamispisteissä(3))),
arviointi = Some(List(
AmmatillinenArviointi(arvosana = hylätty, date(2015, 1, 1)),
AmmatillinenArviointi(arvosana = hyväksytty, date(2016, 1, 1))
AmmatillinenArviointi(arvosana = h2, date(2015, 1, 1)),
AmmatillinenArviointi(arvosana = k3, date(2016, 1, 1))
)),
tunnustettu = Some(tunnustettu.copy(
rahoituksenPiirissä = true
Expand All @@ -876,8 +876,8 @@ object AmmatillinenExampleData {
kieli = Koodistokoodiviite("SV", "kielivalikoima"),
laajuus = Some(LaajuusOsaamispisteissä(1))),
arviointi = Some(List(
AmmatillinenArviointi(arvosana = hylätty, date(2015, 1, 1)),
AmmatillinenArviointi(arvosana = hyväksytty, date(2016, 1, 1))
AmmatillinenArviointi(arvosana = h2, date(2015, 1, 1)),
AmmatillinenArviointi(arvosana = k3, date(2016, 1, 1))
)),
tunnustettu = Some(tunnustettu.copy(
rahoituksenPiirissä = true
Expand All @@ -888,8 +888,8 @@ object AmmatillinenExampleData {
kieli = Koodistokoodiviite("EN", "kielivalikoima"),
laajuus = Some(LaajuusOsaamispisteissä(2))),
arviointi = Some(List(
AmmatillinenArviointi(arvosana = hylätty, date(2015, 1, 1)),
AmmatillinenArviointi(arvosana = hyväksytty, date(2016, 1, 1))
AmmatillinenArviointi(arvosana = h2, date(2015, 1, 1)),
AmmatillinenArviointi(arvosana = k3, date(2016, 1, 1))
)),
tunnustettu = Some(tunnustettu.copy(
rahoituksenPiirissä = true
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,8 @@ object AmmatillinenValidation {
validateKeskeneräiselläSuorituksellaEiSaaOllaKeskiarvoa(ammatillinen),
validateKeskiarvoOlemassaJosSuoritusOnValmis(ammatillinen, isKuoriopiskeluoikeus),
validateAmmatillisenKorotus(ammatillinen),
validateKorotuksenAlkuperäinenOpiskeluoikeus(ammatillinen, henkilö, koskiOpiskeluoikeudet)
validateKorotuksenAlkuperäinenOpiskeluoikeus(ammatillinen, henkilö, koskiOpiskeluoikeudet),
validateOpiskeluoikeudenArvionnit(ammatillinen),
)
case _ => HttpStatus.ok
}
Expand Down Expand Up @@ -376,4 +377,32 @@ object AmmatillinenValidation {
.count(s => s.koulutusmoduuli.tunniste.koodiarvo == tutkinnonOsa) >= osasuoritukset.size
}
)(KoskiErrorCategory.badRequest.validation.ammatillinen.liikaaSamojaTutkinnonOsia())

private def validateOpiskeluoikeudenArvionnit(oo: AmmatillinenOpiskeluoikeus): HttpStatus =
HttpStatus.fold(oo.suoritukset.map(validatePäätasonSuorituksenArvioinnit))

private def validatePäätasonSuorituksenArvioinnit(päätasonSuoritus: AmmatillinenPäätasonSuoritus): HttpStatus =
HttpStatus.fold(päätasonSuoritus.osasuoritukset.toList.flatten.map(validateSuorituksenArviointi))

private def validateSuorituksenArviointi(suoritus: Suoritus): HttpStatus =
suoritus match {
case os: MuunAmmatillisenTutkinnonOsanSuoritus => validateArviointi(os.arviointi)
case os: YhteisenAmmatillisenTutkinnonOsanSuoritus => validateArviointi(os.arviointi)
case _ => HttpStatus.ok
}

private def validateArviointi(arvioinnit: Option[List[AmmatillinenArviointi]]): HttpStatus =
HttpStatus.fold(arvioinnit.toList.flatten.map { arviointi =>
if (hylätytArvosanat.contains(arviointi.arvosana)) {
KoskiErrorCategory.badRequest.validation.arviointi.epäsopivaArvosana("Arvosana ei voi olla hylätty")
} else {
HttpStatus.ok
}
})

private val hylätytArvosanat = List(
Koodistokoodiviite("Hylätty", "arviointiasteikkoammatillinenhyvaksyttyhylatty"),
Koodistokoodiviite("0", "arviointiasteikkoammatillinent1k3"),
Koodistokoodiviite("Hylätty", "arviointiasteikkoammatillinen15"),
)
}

0 comments on commit 94806e3

Please sign in to comment.