Skip to content

Commit

Permalink
OK-754: Lisätään apufunktio aloituspaikkamäärien laskemiselle
Browse files Browse the repository at this point in the history
  • Loading branch information
heidilm committed Dec 19, 2024
1 parent 0f94f50 commit c3a04ee
Show file tree
Hide file tree
Showing 2 changed files with 104 additions and 3 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package fi.oph.ovara.backend.utils

import fi.oph.ovara.backend.domain.{Kieli, Kielistetty, KoulutuksetToteutuksetHakukohteetResult, User}
import fi.oph.ovara.backend.domain.{Kieli, Kielistetty, Organisaatio, OrganisaationKoulutuksetToteutuksetHakukohteet, User}
import org.apache.poi.ss.util.WorkbookUtil
import org.apache.poi.xssf.usermodel.*
import org.slf4j.{Logger, LoggerFactory}
Expand Down Expand Up @@ -33,7 +33,15 @@ val KOULUTUKSET_TOTEUTUKSET_HAKUKOHTEET_COLUMN_TITLES = Map(
object ExcelWriter {
val LOG: Logger = LoggerFactory.getLogger("ExcelWriter")

def writeRaportti(queryResult: Vector[KoulutuksetToteutuksetHakukohteetResult], raporttiColumnTitles: Map[String, List[String]], user: User): XSSFWorkbook = {
def countAloituspaikat(organisaationKoulutuksetToteutuksetHakukohteet: OrganisaationKoulutuksetToteutuksetHakukohteet): Int = {
val koulutuksetToteutuksetHakukohteet = organisaationKoulutuksetToteutuksetHakukohteet.koulutuksetToteutuksetHakukohteet
koulutuksetToteutuksetHakukohteet.flatMap(kth => kth.aloituspaikat).sum
}

// TODO: userin sijaan asiointikieli parametrina?
def writeRaportti(queryResult: List[(Organisaatio, OrganisaationKoulutuksetToteutuksetHakukohteet)],
raporttiColumnTitles: Map[String, List[String]],
user: User): XSSFWorkbook = {
val asiointikieli = user.asiointikieli.getOrElse("fi")
val workbook: XSSFWorkbook = new XSSFWorkbook()
try {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,103 @@
package fi.oph.ovara.backend.utils

import fi.oph.ovara.backend.domain.{En, Fi, KoulutuksetToteutuksetHakukohteetResult, Sv, User}
import fi.oph.ovara.backend.domain.*
import org.scalatest.flatspec.AnyFlatSpec

class ExcelWriterSpec extends AnyFlatSpec {
val user: User = User(userOid = "1.2.246.562.24.60357717666", authorities = List(), asiointikieli = Some("sv"))

"countAloituspaikat" should "return 5 for one hakukohde with 5 aloituspaikkaa" in {
val organisaationKoulutuksetToteutuksetHakukohteet = OrganisaationKoulutuksetToteutuksetHakukohteet(
Some(
Organisaatio(
organisaatio_oid = "1.2.246.562.10.278170642010",
organisaatio_nimi =
Map(En -> "Oppilaitoksen nimi en", Fi -> "Oppilaitoksen nimi fi", Sv -> "Oppilaitoksen nimi sv"),
organisaatiotyypit = List("02")
)
),
Vector(
KoulutuksetToteutuksetHakukohteetResult(
hakukohdeNimi =
Map(En -> "Hakukohteen nimi en", Fi -> "Hakukohteen nimi fi", Sv -> "Hakukohteen nimi sv"),
hakukohdeOid = "1.2.246.562.20.00000000000000021565",
koulutuksenTila = Some("julkaistu"),
toteutuksenTila = Some("julkaistu"),
hakukohteenTila = Some("julkaistu"),
aloituspaikat = Some(5),
onValintakoe = Some(false),
organisaatio_oid = Some("1.2.246.562.10.278170642010"),
organisaatio_nimi =
Map(En -> "Oppilaitoksen nimi en", Fi -> "Oppilaitoksen nimi fi", Sv -> "Oppilaitoksen nimi sv"),
organisaatiotyypit = List("02")
)
)
)

assert(ExcelWriter.countAloituspaikat(organisaationKoulutuksetToteutuksetHakukohteet) == 5)
}

it should "return 35 for three hakukohde aloituspaikat summed up" in {
val kth = KoulutuksetToteutuksetHakukohteetResult(
hakukohdeNimi =
Map(En -> "Hakukohteen nimi en", Fi -> "Hakukohteen nimi fi", Sv -> "Hakukohteen nimi sv"),
hakukohdeOid = "1.2.246.562.20.00000000000000021565",
koulutuksenTila = Some("julkaistu"),
toteutuksenTila = Some("julkaistu"),
hakukohteenTila = Some("julkaistu"),
aloituspaikat = Some(5),
onValintakoe = Some(false),
organisaatio_oid = Some("1.2.246.562.10.278170642010"),
organisaatio_nimi =
Map(En -> "Oppilaitoksen nimi en", Fi -> "Oppilaitoksen nimi fi", Sv -> "Oppilaitoksen nimi sv"),
organisaatiotyypit = List("02")
)

val kth2 = kth.copy(
hakukohdeNimi =
Map(En -> "Hakukohteen 2 nimi en", Fi -> "Hakukohteen 2 nimi fi", Sv -> "Hakukohteen 2 nimi sv"),
hakukohdeOid = "1.2.246.562.20.00000000000000012345",
aloituspaikat = Some(20),
)

val kth3 = kth.copy(
hakukohdeNimi =
Map(En -> "Hakukohteen 3 nimi en", Fi -> "Hakukohteen 3 nimi fi", Sv -> "Hakukohteen 3 nimi sv"),
hakukohdeOid = "1.2.246.562.20.00000000000000025467",
aloituspaikat = Some(10),
)

val organisaationKoulutuksetToteutuksetHakukohteet = OrganisaationKoulutuksetToteutuksetHakukohteet(
Some(
Organisaatio(
organisaatio_oid = "1.2.246.562.10.278170642010",
organisaatio_nimi =
Map(En -> "Oppilaitoksen nimi en", Fi -> "Oppilaitoksen nimi fi", Sv -> "Oppilaitoksen nimi sv"),
organisaatiotyypit = List("02")
)
),
Vector(kth, kth2, kth3)
)

assert(ExcelWriter.countAloituspaikat(organisaationKoulutuksetToteutuksetHakukohteet) == 35)
}

it should "return 0 if there are no results" in {
val organisaationKoulutuksetToteutuksetHakukohteet = OrganisaationKoulutuksetToteutuksetHakukohteet(
Some(
Organisaatio(
organisaatio_oid = "1.2.246.562.10.278170642010",
organisaatio_nimi =
Map(En -> "Oppilaitoksen nimi en", Fi -> "Oppilaitoksen nimi fi", Sv -> "Oppilaitoksen nimi sv"),
organisaatiotyypit = List("02")
)
),
Vector()
)

assert(ExcelWriter.countAloituspaikat(organisaationKoulutuksetToteutuksetHakukohteet) == 0)
}

"writeExcel" should "create one sheet and set 'Yhteenveto' as the name of the sheet" in {
val results = Vector()
val wb = ExcelWriter.writeRaportti(results, KOULUTUKSET_TOTEUTUKSET_HAKUKOHTEET_COLUMN_TITLES, user)
Expand Down

0 comments on commit c3a04ee

Please sign in to comment.