Skip to content

Commit

Permalink
OY-4605 Huomioi myos yksiloityVTJ
Browse files Browse the repository at this point in the history
  • Loading branch information
tomikat committed Feb 5, 2024
1 parent 1ddfc28 commit e19d7a5
Show file tree
Hide file tree
Showing 6 changed files with 38 additions and 15 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@ import fi.vm.sade.valintatulosservice.valintarekisteri.domain.{HakemusOid, HakuO

case class Hakutoive(oid: HakukohdeOid, tarjoajaOid: String, nimi: String, tarjoajaNimi: String)
case class Hakemus(oid: HakemusOid, hakuOid: HakuOid, henkiloOid: String, asiointikieli: String, toiveet: List[Hakutoive], henkilotiedot: Henkilotiedot, maksuvelvollisuudet: Map[String, String])
case class Henkilotiedot(kutsumanimi: Option[String], email: Option[String], hasHetu: Boolean, kansalaisuudet: List[String], yksiloity: Option[Boolean] = None)
case class Henkilotiedot(kutsumanimi: Option[String], email: Option[String], hasHetu: Boolean, kansalaisuudet: List[String], yksiloity: Option[Boolean] = None, yksiloityVTJ: Option[Boolean] = None)
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,8 @@ class AtaruHakemusEnricher(config: VtsAppConfig,
email = Some(hakemus.email),
hasHetu = henkilo.hetu.isDefined,
henkilo.kansalaisuudet.getOrElse(List()),
yksiloity = henkilo.yksiloity
yksiloity = henkilo.yksiloity,
yksiloityVTJ = henkilo.yksiloityVTJ
),
maksuvelvollisuudet = hakemus.paymentObligations
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,8 @@ case class Henkilo(oid: HakijaOid,
etunimet: Option[String],
kansalaisuudet: Option[List[String]],
syntymaaika: Option[String],
yksiloity: Option[Boolean] = None)
yksiloity: Option[Boolean] = None,
yksiloityVTJ: Option[Boolean] = None)

object Henkilo {
val henkiloReader = new Reader[Henkilo] {
Expand All @@ -46,7 +47,8 @@ object Henkilo {
Option(StringReader.read(value \ "etunimet")),
Option(kansalaisuusKoodit),
Option(StringReader.read(value \ "syntymaaika")),
Option(BooleanReader.read(value \ "yksiloity"))
Option(BooleanReader.read(value \ "yksiloity")),
Option(BooleanReader.read(value \ "yksiloityVTJ"))
)
}
}
Expand All @@ -60,7 +62,8 @@ object Henkilo {
"etunimet" -> h.etunimet.map(JString).getOrElse(JNull),
"kansalaisuus" -> h.kansalaisuudet.map(k => k.asInstanceOf[JArray]).getOrElse(JNull),
"syntymaaika" -> h.syntymaaika.map(JString).getOrElse(JNull),
"yksiloity" -> h.yksiloity.map(b => JBool(b)).getOrElse(JNull)
"yksiloity" -> h.yksiloity.map(b => JBool(b)).getOrElse(JNull),
"yksiloityVTJ" -> h.yksiloityVTJ.map(b => JBool(b)).getOrElse(JNull)
)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import java.time.Instant
import fi.vm.sade.auditlog.{Audit, Changes, Target}
import fi.vm.sade.sijoittelu.domain.ValintatuloksenTila
import fi.vm.sade.utils.slf4j.Logging
import fi.vm.sade.valintatulosservice.domain.{Hakemus, Henkilotiedot}
import fi.vm.sade.valintatulosservice.hakemus.HakemusRepository
import fi.vm.sade.valintatulosservice.ohjausparametrit.Ohjausparametrit
import fi.vm.sade.valintatulosservice.tarjonta.Haku
Expand Down Expand Up @@ -43,9 +44,9 @@ class ErillishaunValinnantulosStrategy(auditInfo: AuditInfo,
logger.warn(s"Failed to fetch hakemus ${uusi.hakemusOid}", t);
Left(ValinnantulosUpdateStatus(400, s"Hakemuksen tietojen hakeminen epäonnistui", uusi.valintatapajonoOid, uusi.hakemusOid))
}
case Right(hakemus) if hakemusRepository.isAtaruOid(uusi.hakemusOid) && !hakemus.henkilotiedot.yksiloity.getOrElse(false) =>
logger.warn(s"Hakemuksen ${uusi.hakemusOid} henkilö ${hakemus.henkiloOid} ei ole yksilöity")
Left(ValinnantulosUpdateStatus(409, s"Hakemuksen henkilö ${hakemus.henkiloOid} ei ole yksilöity", uusi.valintatapajonoOid, uusi.hakemusOid))
case Right(Hakemus(_, _, oid, _, _, Henkilotiedot(_, _, _, _, y, yVTJ), _)) if hakemusRepository.isAtaruOid(uusi.hakemusOid) && !y.getOrElse(false) && !yVTJ.getOrElse(false) =>
logger.warn(s"Hakemuksen ${uusi.hakemusOid} henkilö ${oid} ei ole yksilöity")
Left(ValinnantulosUpdateStatus(409, s"Hakemuksen henkilö ${oid} ei ole yksilöity", uusi.valintatapajonoOid, uusi.hakemusOid))
case Right(_) => Right()
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -324,7 +324,7 @@ class MailPoller(mailPollerRepository: MailPollerRepository,
mailReasons: Map[HakukohdeOid, (Option[MailReason],Boolean)],
valintatapajonoFilter: Option[ValintatapajonoOid]): Option[HakemusMailStatus] = {
hakemus match {
case Hakemus(_, _, _, asiointikieli, _, Henkilotiedot(Some(kutsumanimi), Some(email), hasHetu, _, _), _) =>
case Hakemus(_, _, _, asiointikieli, _, Henkilotiedot(Some(kutsumanimi), Some(email), hasHetu, _, _, _), _) =>
val hakukohteenToiveet = hakemuksenTulos.hakutoiveet.filter(_.hakukohdeOid == hakukohdeOid)
val filteredHakutoiveet = hakukohteenToiveet.filter(toive => valintatapajonoFilter.isEmpty || valintatapajonoFilter.get.equals(toive.valintatapajonoOid))
if (filteredHakutoiveet.size != hakukohteenToiveet.size) {
Expand All @@ -341,13 +341,13 @@ class MailPoller(mailPollerRepository: MailPollerRepository,
hakuOid = hakemuksenTulos.hakuOid,
hakukohteet = hakukohdeMailStatii
))
case Hakemus(_, _, _, _, _, Henkilotiedot(None, None, _, _, _), _) =>
case Hakemus(_, _, _, _, _, Henkilotiedot(None, None, _, _, _, _), _) =>
logger.error(s"Hakemus ${hakemus.oid} is missing hakemus.henkilotiedot.kutsumanimi and hakemus.henkilotiedot.email")
None
case Hakemus(_, _, _, _, _, Henkilotiedot(None, Some(email), _, _, _), _) =>
case Hakemus(_, _, _, _, _, Henkilotiedot(None, Some(email), _, _, _, _), _) =>
logger.error(s"Hakemus ${hakemus.oid} is missing hakemus.henkilotiedot.kutsumanimi")
None
case Hakemus(_, _, _, _, _, Henkilotiedot(Some(kutsumanimi), None, _, _, _), _) =>
case Hakemus(_, _, _, _, _, Henkilotiedot(Some(kutsumanimi), None, _, _, _, _), _) =>
logger.warn(s"Hakemus ${hakemus.oid} is missing hakemus.henkilotiedot.email")
None
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -228,21 +228,39 @@ class ValinnantulosServiceSpec extends Specification with MockitoMatchers with M
)
}
"returns 409 for missing yksiloity information" in new Mocks with Authorized with KorkeakouluErillishaku with SuccessfulVastaanotto with NoConflictingVastaanotto with TyhjatOhjausparametrit {
hakemusRepository.findHakemus(any()) returns Right(Hakemus(null, null, "1.2.3", null, null, Henkilotiedot(None, None, hasHetu = false, List.empty, None), null))
hakemusRepository.findHakemus(any()) returns Right(Hakemus(null, null, "1.2.3", null, null, Henkilotiedot(None, None, hasHetu = false, List.empty, None, None), null))
valinnantulosRepository.getValinnantuloksetForValintatapajonoDBIO(valintatapajonoOid) returns DBIO.successful(Set())
yhdenPaikanSaannos.ottanutVastaanToisenPaikanDBIO(any[Hakukohde], any[Set[Valinnantulos]]) returns DBIO.successful(Set())
service.storeValinnantuloksetAndIlmoittautumiset(valintatapajonoOid, List(valinnantulosA), Some(Instant.now()), auditInfo) mustEqual List(
ValinnantulosUpdateStatus(409, s"Hakemuksen henkilö 1.2.3 ei ole yksilöity", valintatapajonoOid, valinnantulosA.hakemusOid)
)
}
"returns 409 for not yksiloity henkilo" in new Mocks with Authorized with KorkeakouluErillishaku with SuccessfulVastaanotto with NoConflictingVastaanotto with TyhjatOhjausparametrit {
hakemusRepository.findHakemus(any()) returns Right(Hakemus(null, null, "1.2.3", null, null, Henkilotiedot(None, None, hasHetu = false, List.empty, Some(false)), null))
hakemusRepository.findHakemus(any()) returns Right(Hakemus(null, null, "1.2.3", null, null, Henkilotiedot(None, None, hasHetu = false, List.empty, Some(false), Some(false)), null))
valinnantulosRepository.getValinnantuloksetForValintatapajonoDBIO(valintatapajonoOid) returns DBIO.successful(Set())
yhdenPaikanSaannos.ottanutVastaanToisenPaikanDBIO(any[Hakukohde], any[Set[Valinnantulos]]) returns DBIO.successful(Set())
service.storeValinnantuloksetAndIlmoittautumiset(valintatapajonoOid, List(valinnantulosA), Some(Instant.now()), auditInfo) mustEqual List(
ValinnantulosUpdateStatus(409, s"Hakemuksen henkilö 1.2.3 ei ole yksilöity", valintatapajonoOid, valinnantulosA.hakemusOid)
)
}
"no status for yksiloity henkilo" in new Mocks with Authorized with KorkeakouluErillishaku with SuccessfulVastaanotto with NoConflictingVastaanotto with TyhjatOhjausparametrit {
valinnantulosRepository.getValinnantuloksetForValintatapajonoDBIO(valintatapajonoOid) returns DBIO.successful(Set(valinnantulosA.copy(valinnantila = Hyvaksytty)))
yhdenPaikanSaannos.ottanutVastaanToisenPaikanDBIO(any[Hakukohde], any[Set[Valinnantulos]]) returns DBIO.successful(Set(valinnantulosA.copy(valinnantila = Hyvaksytty)))
valinnantulosRepository.storeValinnantuloksenOhjaus(any[ValinnantuloksenOhjaus], any[Option[Instant]]) returns DBIO.successful(())
valinnantulosRepository.setHyvaksyttyJaJulkaistavissa(any[HakemusOid], any[ValintatapajonoOid], any[String], any[String]) returns DBIO.successful(())
valinnantulosRepository.deleteHyvaksyttyJaJulkaistavissaIfExists(any[String], any[HakukohdeOid], any[Option[Instant]]) returns DBIO.successful(())
hakemusRepository.findHakemus(any()) returns Right(Hakemus(null, null, null, null, null, Henkilotiedot(None, None, hasHetu = false, List.empty, Some(true), Some(false)), null))
service.storeValinnantuloksetAndIlmoittautumiset(valintatapajonoOid, List(valinnantulosA.copy(valinnantila = Hyvaksytty, julkaistavissa = Some(true))), Some(Instant.now()), auditInfo) mustEqual List()
}
"no status for yksiloityVTJ henkilo" in new Mocks with Authorized with KorkeakouluErillishaku with SuccessfulVastaanotto with NoConflictingVastaanotto with TyhjatOhjausparametrit {
valinnantulosRepository.getValinnantuloksetForValintatapajonoDBIO(valintatapajonoOid) returns DBIO.successful(Set(valinnantulosA.copy(valinnantila = Hyvaksytty)))
yhdenPaikanSaannos.ottanutVastaanToisenPaikanDBIO(any[Hakukohde], any[Set[Valinnantulos]]) returns DBIO.successful(Set(valinnantulosA.copy(valinnantila = Hyvaksytty)))
valinnantulosRepository.storeValinnantuloksenOhjaus(any[ValinnantuloksenOhjaus], any[Option[Instant]]) returns DBIO.successful(())
valinnantulosRepository.setHyvaksyttyJaJulkaistavissa(any[HakemusOid], any[ValintatapajonoOid], any[String], any[String]) returns DBIO.successful(())
valinnantulosRepository.deleteHyvaksyttyJaJulkaistavissaIfExists(any[String], any[HakukohdeOid], any[Option[Instant]]) returns DBIO.successful(())
hakemusRepository.findHakemus(any()) returns Right(Hakemus(null, null, null, null, null, Henkilotiedot(None, None, hasHetu = false, List.empty, Some(false), Some(true)), null))
service.storeValinnantuloksetAndIlmoittautumiset(valintatapajonoOid, List(valinnantulosA.copy(valinnantila = Hyvaksytty, julkaistavissa = Some(true))), Some(Instant.now()), auditInfo) mustEqual List()
}
"no status for succesfully modified valinnantulos" in new Mocks with Authorized with KorkeakouluErillishaku with SuccessfulVastaanotto with NoConflictingVastaanotto with TyhjatOhjausparametrit {
valinnantulosRepository.getValinnantuloksetForValintatapajonoDBIO(valintatapajonoOid) returns DBIO.successful(Set(valinnantulosA.copy(valinnantila = Hyvaksytty)))
yhdenPaikanSaannos.ottanutVastaanToisenPaikanDBIO(any[Hakukohde], any[Set[Valinnantulos]]) returns DBIO.successful(Set(valinnantulosA.copy(valinnantila = Hyvaksytty)))
Expand Down Expand Up @@ -489,7 +507,7 @@ class ValinnantulosServiceSpec extends Specification with MockitoMatchers with M
yhdenPaikanSaanto = null,
nimi = null))
hakemusRepository.isAtaruOid(any()) returns true
hakemusRepository.findHakemus(any()) returns Right(Hakemus(null, null, null, null, null, Henkilotiedot(None, None, hasHetu = false, List.empty, Some(true)), null))
hakemusRepository.findHakemus(any()) returns Right(Hakemus(null, null, null, null, null, Henkilotiedot(None, None, hasHetu = false, List.empty, Some(true), Some(true)), null))
}

trait ToisenAsteenHaku { this: Mocks =>
Expand Down

0 comments on commit e19d7a5

Please sign in to comment.