Skip to content

Commit

Permalink
raportoinnin kantakyselyt fiksattu, luontiaika lähetyksille kyselyihin
Browse files Browse the repository at this point in the history
  • Loading branch information
marjakari committed Jan 15, 2024
1 parent 8206909 commit 9e56db1
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 23 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,8 @@ class SecurityConfiguration {
.securityMatcher("/login")
.csrf(c => c.disable())
.formLogin(c => {
c.defaultSuccessUrl(APIConstants.HEALTHCHECK_PATH)
// c.defaultSuccessUrl(APIConstants.HEALTHCHECK_PATH)
c.defaultSuccessUrl("http://localhost:3000/lahetykset")
})
.build()
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package fi.oph.viestinvalitys.vastaanotto.model

import fi.oph.viestinvalitys.vastaanotto.model.Lahetys.*
import fi.oph.viestinvalitys.vastaanotto.model.LahetysImpl.{LAHETYS_PRIORITEETTI_KORKEA, LAHETYS_PRIORITEETTI_NORMAALI}
import fi.oph.viestinvalitys.vastaanotto.model.Viesti.*
import fi.oph.viestinvalitys.vastaanotto.model.ViestiImpl.*
import org.apache.commons.validator.routines.EmailValidator
Expand Down Expand Up @@ -414,7 +415,6 @@ object ViestiValidator:
validateLahetysTunniste(viesti.getLahetysTunniste, lahetysMetadata, identiteetti),
validateMetadata(viesti.getMetadata),
validateKayttooikeusRajoitukset(viesti.getKayttooikeusRajoitukset),
LahetysValidator.validateLahettavaPalvelu(viesti.getLahettavaPalvelu),

// validoidaan kenttien väliset suhteet
validateKorkeaPrioriteetti(viesti.getPrioriteetti, viesti.getVastaanottajat, lahetysMetadata),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@ class LahetysResource {
if (lahetys.isEmpty)
return ResponseEntity.status(HttpStatus.GONE).build()

val lahetyksenOikeudet = kantaOperaatiot.getLahetyksenKayttooikeudet(lahetys.get.tunniste)
val lahetyksenOikeudet : Set[String] = kantaOperaatiot.getLahetystenKayttooikeudet(Seq(lahetys.get.tunniste)).getOrElse(lahetys.get.tunniste, Set.empty)
val onLukuOikeudet = securityOperaatiot.onOikeusKatsellaEntiteetti(lahetys.get.omistaja, lahetyksenOikeudet)
if (!onLukuOikeudet)
return ResponseEntity.status(HttpStatus.FORBIDDEN).build()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,10 +72,10 @@ class KantaOperaatiot(db: JdbcBackend.JdbcDatabaseDef) {
def getLahetys(tunniste: UUID): Option[Lahetys] =
Await.result(db.run(
sql"""
SELECT tunniste, otsikko, omistaja, lahettavapalvelu, lahettavanvirkailijanoid, lahettajannimi, lahettajansahkoposti, replyto, prioriteetti, luotu
SELECT tunniste, otsikko, omistaja, lahettavapalvelu, lahettavanvirkailijanoid, lahettajannimi, lahettajansahkoposti, replyto, prioriteetti, to_json(luotu::timestamptz)#>>'{}'
FROM lahetykset
WHERE tunniste=${tunniste.toString}::uuid
""".as[(String, String, String, String, String, String, String, String, String)].headOption), DB_TIMEOUT)
""".as[(String, String, String, String, String, String, String, String, String, String)].headOption), DB_TIMEOUT)
.map((tunniste, otsikko, omistaja, lahettavapalvelu, lahettavanVirkailijanOid, lahettajanNimi, lahettajanSahkoposti, replyto, prioriteetti, luotu) =>
Lahetys(UUID.fromString(tunniste), otsikko, omistaja, lahettavapalvelu, Option.apply(lahettavanVirkailijanOid),
Kontakti(Option.apply(lahettajanNimi), lahettajanSahkoposti), Option.apply(replyto), Prioriteetti.valueOf(prioriteetti), Instant.parse(luotu)))
Expand All @@ -88,10 +88,11 @@ class KantaOperaatiot(db: JdbcBackend.JdbcDatabaseDef) {
def getLahetykset(): Seq[Lahetys] =
Await.result(db.run(
sql"""
SELECT tunniste, otsikko, omistaja, lahettavapalvelu, to_json(luotu::timestamptz)#>>'{}'
SELECT tunniste, otsikko, omistaja, lahettavapalvelu, lahettavanVirkailijanOid, lahettajanNimi, lahettajanSahkoposti, replyto, prioriteetti, to_json(luotu::timestamptz)#>>'{}'
FROM lahetykset
""".as[(String, String, String, String, String)]), DB_TIMEOUT)
.map((tunniste, otsikko, omistaja, lahettavapalvelu, luotu) => Lahetys(UUID.fromString(tunniste), otsikko, omistaja, lahettavapalvelu, Instant.parse(luotu)))
""".as[(String, String, String, String, String, String, String, String, String, String)]), DB_TIMEOUT)
.map((tunniste, otsikko, omistaja, lahettavapalvelu, lahettavanVirkailijanOid, lahettajanNimi, lahettajanSahkoposti, replyTo, prioriteetti, luotu) =>
Lahetys(UUID.fromString(tunniste), otsikko, omistaja, lahettavapalvelu, Option.apply(lahettavanVirkailijanOid), Kontakti(Option.apply(lahettajanNimi), lahettajanSahkoposti), Option.apply(replyTo), Prioriteetti.valueOf(prioriteetti), Instant.parse(luotu)))


/**
Expand Down Expand Up @@ -319,8 +320,8 @@ class KantaOperaatiot(db: JdbcBackend.JdbcDatabaseDef) {
DBIO.sequence(Seq(viestitLiitteetInsertActions, vastaanottajaInsertActions, vastaanottajanSiirtymaActions))
})

Await.result(db.run(DBIO.sequence(Seq(lahetysInsertAction, kayttooikeusInsertActions, viestiInsertAction, metadataInsertActions, maskitInsertActions, liiteRelatedInsertActions)).transactionally), DB_TIMEOUT)
(Viesti(viestiTunniste, finalLahetysTunniste, otsikko, sisalto, sisallonTyyppi, kielet, maskit, lahettavanVirkailijanOID, lahettaja, replyTo, omistaja, prioriteetti), vastaanottajaEntiteetit)
Await.result(db.run(DBIO.sequence(Seq(lahetysInsertAction, viestiInsertAction, kayttooikeusInsertActions, metadataInsertActions, maskitInsertActions, liiteRelatedInsertActions)).transactionally), DB_TIMEOUT)
(this.getViestit(Seq(viestiTunniste)).find(v => true).get, vastaanottajaEntiteetit)
}

/**
Expand Down Expand Up @@ -408,30 +409,41 @@ class KantaOperaatiot(db: JdbcBackend.JdbcDatabaseDef) {

val viestitQuery =
sql"""
SELECT tunniste, lahetys_tunniste, otsikko, sisalto, sisallontyyppi, kielet_fi, kielet_sv, kielet_en, lahettavanvirkailijanoid,
lahettajannimi, lahettajansahkoposti, replyto, lahettavapalvelu, omistaja, prioriteetti
SELECT viestit.tunniste, lahetys_tunniste, viestit.otsikko, sisalto, sisallontyyppi, kielet_fi, kielet_sv, kielet_en, replyto, viestit.omistaja, viestit.prioriteetti,
lahettavapalvelu, lahettavanvirkailijanoid, lahettajannimi, lahettajansahkoposti
FROM viestit
WHERE lahetystunniste = ${lahetystunniste.toString}::uuid
JOIN lahetykset ON viestit.lahetys_tunniste=lahetykset.tunniste
WHERE viestit.lahetys_tunniste = ${lahetystunniste.toString}::uuid
"""
.as[(String, String, String, String, String, Boolean, Boolean, Boolean, String, String, String, String, String, String, String)]

val maskitQuery =
sql"""
SELECT m.viesti_tunniste, m.salaisuus, m.maski
FROM maskit m, viestit v
WHERE m.viesti_tunniste=v.tunniste and v.lahetys_tunniste = ${lahetystunniste.toString}::uuid
"""
.as[(String, String, String)]
SELECT viesti_tunniste, salaisuus, maski
FROM maskit
WHERE viesti_tunniste IN (SELECT viesti_tunniste FROM viestit WHERE lahetys_tunniste=${lahetystunniste.toString}::uuid)
"""
.as[(String, String, String)]
val maskit: Map[String, Map[String, Option[String]]] = Await.result(db.run(maskitQuery), DB_TIMEOUT)
.groupBy((viestiTunniste, salaisuus, maski) => viestiTunniste)
.map((viestiTunniste, maskit) => viestiTunniste -> maskit.map((viestiTunniste, salaisuus, maski) => salaisuus -> Option.apply(maski)).toMap)

Await.result(db.run(viestitQuery), DB_TIMEOUT)
.map((tunniste, lahetysTunniste, otsikko, sisalto, sisallonTyyppi, kieletFi, kieletSv, kieletEn, lahettavanVirkailijanOid,
lahettajanNimi, lahettajanSahkoposti, replyTo, lahettavaPalvelu, omistaja, prioriteetti)
=> Viesti(UUID.fromString(tunniste), UUID.fromString(lahetysTunniste), otsikko, sisalto, SisallonTyyppi.valueOf(sisallonTyyppi),
toKielet(kieletFi, kieletSv, kieletEn), maskit.get(tunniste).getOrElse(Map.empty), Option.apply(lahettavanVirkailijanOid), Kontakti(Option.apply(lahettajanNimi), lahettajanSahkoposti),
Option.apply(replyTo), Option.apply(lahettavaPalvelu), omistaja, Prioriteetti.valueOf(prioriteetti)))
.map((tunniste, lahetysTunniste, otsikko, sisalto, sisallonTyyppi, kieletFi, kieletSv, kieletEn, replyTo, omistaja, prioriteetti, lahettavapalvelu, lahettavanvirkailijanoid, lahettajannimi, lahettajansahkoposti)
=> Viesti(
tunniste = UUID.fromString(tunniste),
lahetys_tunniste = UUID.fromString(lahetysTunniste),
otsikko = otsikko,
sisalto = sisalto,
sisallonTyyppi = SisallonTyyppi.valueOf(sisallonTyyppi),
kielet = toKielet(kieletFi, kieletSv, kieletEn),
maskit = maskit.get(tunniste).getOrElse(Map.empty),
lahettavaPalvelu = lahettavapalvelu,
lahettavanVirkailijanOID = Option.apply(lahettavanvirkailijanoid),
lahettaja = Kontakti(Option.apply(lahettajannimi), lahettajansahkoposti),
replyTo = Option.apply(replyTo),
omistaja = omistaja,
prioriteetti = Prioriteetti.valueOf(prioriteetti)))


def getViestinLiitteet(viestiTunnisteet: Seq[UUID]): Map[UUID, Seq[Liite]] =
Expand Down

0 comments on commit 9e56db1

Please sign in to comment.