From c9703737935e08283708c123639739cfa18fa0e2 Mon Sep 17 00:00:00 2001
From: Laura Ketola
Date: Tue, 27 Aug 2024 13:42:39 +0300
Subject: [PATCH 1/5] VKT(Backend): Combine enrollment confirmation templates
[deploy]
---
.../fi/oph/vkt/service/PaymentService.java | 12 ++-
.../service/PublicEnrollmentEmailService.java | 84 +++++++++++++++---
.../vkt/service/PublicEnrollmentService.java | 18 ++--
.../fi/oph/vkt/util/TemplateRenderer.java | 26 ------
.../enrollment-confirmation.html | 68 +++++++++++++--
.../enrollment-free-koski-confirmation.html | 79 -----------------
.../enrollment-free-user-confirmation.html | 85 -------------------
.../enrollment-to-queue-confirmation.html | 70 ---------------
...ment-to-queue-free-koski-confirmation.html | 74 ----------------
...lment-to-queue-free-user-confirmation.html | 77 -----------------
.../PublicEnrollmentEmailServiceTest.java | 64 ++++++--------
.../fi/oph/vkt/util/TemplateRendererTest.java | 26 +++++-
12 files changed, 205 insertions(+), 478 deletions(-)
delete mode 100644 backend/vkt/src/main/resources/email-templates/enrollment-free-koski-confirmation.html
delete mode 100644 backend/vkt/src/main/resources/email-templates/enrollment-free-user-confirmation.html
delete mode 100644 backend/vkt/src/main/resources/email-templates/enrollment-to-queue-confirmation.html
delete mode 100644 backend/vkt/src/main/resources/email-templates/enrollment-to-queue-free-koski-confirmation.html
delete mode 100644 backend/vkt/src/main/resources/email-templates/enrollment-to-queue-free-user-confirmation.html
diff --git a/backend/vkt/src/main/java/fi/oph/vkt/service/PaymentService.java b/backend/vkt/src/main/java/fi/oph/vkt/service/PaymentService.java
index cd7b03ced..1e36f3c6e 100644
--- a/backend/vkt/src/main/java/fi/oph/vkt/service/PaymentService.java
+++ b/backend/vkt/src/main/java/fi/oph/vkt/service/PaymentService.java
@@ -132,13 +132,23 @@ public Payment finalizePayment(final Long paymentId, final Map p
}
final Enrollment enrollment = payment.getEnrollment();
+ FreeEnrollmentDetails freeEnrollmentDetails = enrollmentRepository.countEnrollmentsByPerson(enrollment.getPerson());
+
setEnrollmentStatus(enrollment, newStatus);
payment.setPaymentStatus(newStatus);
paymentRepository.saveAndFlush(payment);
if (newStatus == PaymentStatus.OK) {
- publicEnrollmentEmailService.sendEnrollmentConfirmationEmail(enrollment);
+ if (enrollment.getFreeEnrollment() != null) {
+ publicEnrollmentEmailService.sendPartiallyFreeEnrollmentConfirmationEmail(
+ enrollment,
+ enrollment.getPerson(),
+ freeEnrollmentDetails
+ );
+ } else {
+ publicEnrollmentEmailService.sendEnrollmentConfirmationEmail(enrollment);
+ }
}
return payment;
diff --git a/backend/vkt/src/main/java/fi/oph/vkt/service/PublicEnrollmentEmailService.java b/backend/vkt/src/main/java/fi/oph/vkt/service/PublicEnrollmentEmailService.java
index 0653d7316..76c436a94 100644
--- a/backend/vkt/src/main/java/fi/oph/vkt/service/PublicEnrollmentEmailService.java
+++ b/backend/vkt/src/main/java/fi/oph/vkt/service/PublicEnrollmentEmailService.java
@@ -9,6 +9,7 @@
import fi.oph.vkt.model.ExamEvent;
import fi.oph.vkt.model.Person;
import fi.oph.vkt.model.type.ExamLanguage;
+import fi.oph.vkt.model.type.FreeEnrollmentSource;
import fi.oph.vkt.service.email.EmailAttachmentData;
import fi.oph.vkt.service.email.EmailData;
import fi.oph.vkt.service.email.EmailService;
@@ -43,6 +44,7 @@ public class PublicEnrollmentEmailService {
public void sendEnrollmentConfirmationEmail(final Enrollment enrollment) throws IOException, InterruptedException {
final Person person = enrollment.getPerson();
final Map templateParams = getEmailParams(enrollment);
+ templateParams.put("type", "enrollment");
final String recipientName = person.getFirstName() + " " + person.getLastName();
final String recipientAddress = enrollment.getEmail();
@@ -66,6 +68,7 @@ public void sendEnrollmentConfirmationEmail(final Enrollment enrollment) throws
@Transactional
public void sendEnrollmentToQueueConfirmationEmail(final Enrollment enrollment, final Person person) {
final Map templateParams = getEmailParams(enrollment);
+ templateParams.put("type", "queue");
final String recipientName = person.getFirstName() + " " + person.getLastName();
final String recipientAddress = enrollment.getEmail();
@@ -74,7 +77,8 @@ public void sendEnrollmentToQueueConfirmationEmail(final Enrollment enrollment,
LocalisationUtil.translate(localeFI, "subject.enrollment-to-queue-confirmation"),
LocalisationUtil.translate(localeSV, "subject.enrollment-to-queue-confirmation")
);
- final String body = templateRenderer.renderEnrollmentToQueueConfirmationEmailBody(templateParams);
+
+ final String body = templateRenderer.renderEnrollmentConfirmationEmailBody(templateParams);
createEmail(recipientName, recipientAddress, subject, body, List.of(), EmailType.ENROLLMENT_TO_QUEUE_CONFIRMATION);
}
@@ -103,6 +107,9 @@ private Map getEmailParams(final Enrollment enrollment) {
params.put("partialExamsFI", getEmailParamPartialExams(enrollment, localeFI));
params.put("partialExamsSV", getEmailParamPartialExams(enrollment, localeSV));
+ params.put("type", "enrollment");
+ params.put("isFree", false);
+
return params;
}
@@ -177,7 +184,7 @@ public void sendFreeEnrollmentConfirmationEmail(
final FreeEnrollmentDetails freeEnrollmentDetails
) {
final Map templateParams = getEmailParams(enrollment);
- getFreeEmailParams(templateParams, freeEnrollmentDetails);
+ getFreeEmailParams(templateParams, freeEnrollmentDetails, enrollment.getFreeEnrollment().getSource(), "enrollment");
final String recipientName = person.getFirstName() + " " + person.getLastName();
final String recipientAddress = enrollment.getEmail();
@@ -186,10 +193,7 @@ public void sendFreeEnrollmentConfirmationEmail(
LocalisationUtil.translate(localeFI, "subject.enrollment-confirmation"),
LocalisationUtil.translate(localeSV, "subject.enrollment-confirmation")
);
- final String body = templateRenderer.renderFreeEnrollmentConfirmationEmailBody(
- templateParams,
- enrollment.getFreeEnrollment().getSource()
- );
+ final String body = templateRenderer.renderEnrollmentConfirmationEmailBody(templateParams);
createEmail(recipientName, recipientAddress, subject, body, List.of(), EmailType.ENROLLMENT_CONFIRMATION);
}
@@ -201,7 +205,7 @@ public void sendFreeEnrollmentToQueueConfirmationEmail(
final FreeEnrollmentDetails freeEnrollmentDetails
) {
final Map templateParams = getEmailParams(enrollment);
- getFreeEmailParams(templateParams, freeEnrollmentDetails);
+ getFreeEmailParams(templateParams, freeEnrollmentDetails, enrollment.getFreeEnrollment().getSource(), "queue");
final String recipientName = person.getFirstName() + " " + person.getLastName();
final String recipientAddress = enrollment.getEmail();
@@ -210,15 +214,73 @@ public void sendFreeEnrollmentToQueueConfirmationEmail(
LocalisationUtil.translate(localeFI, "subject.enrollment-to-queue-confirmation"),
LocalisationUtil.translate(localeSV, "subject.enrollment-to-queue-confirmation")
);
- final String body = templateRenderer.renderFreeEnrollmentToQueueConfirmationEmailBody(
- templateParams,
- enrollment.getFreeEnrollment().getSource()
+ final String body = templateRenderer.renderEnrollmentConfirmationEmailBody(templateParams);
+
+ createEmail(recipientName, recipientAddress, subject, body, List.of(), EmailType.ENROLLMENT_TO_QUEUE_CONFIRMATION);
+ }
+
+ @Transactional
+ public void sendPartiallyFreeEnrollmentConfirmationEmail(
+ final Enrollment enrollment,
+ final Person person,
+ final FreeEnrollmentDetails freeEnrollmentDetails
+ ) throws IOException, InterruptedException {
+ final Map templateParams = getEmailParams(enrollment);
+ getFreeEmailParams(templateParams, freeEnrollmentDetails, enrollment.getFreeEnrollment().getSource(), "queue");
+ templateParams.put("isFree", "false");
+ templateParams.put("type", "enrollment");
+
+ final String recipientName = person.getFirstName() + " " + person.getLastName();
+ final String recipientAddress = enrollment.getEmail();
+ final String subject = String.format(
+ "%s | %s",
+ LocalisationUtil.translate(localeFI, "subject.enrollment-to-queue-confirmation"),
+ LocalisationUtil.translate(localeSV, "subject.enrollment-to-queue-confirmation")
+ );
+ final String body = templateRenderer.renderEnrollmentConfirmationEmailBody(templateParams);
+
+ final List attachments = environment.getRequiredProperty(
+ "app.email.sending-enabled",
+ Boolean.class
+ )
+ ? List.of(createReceiptAttachment(enrollment, localeFI), createReceiptAttachment(enrollment, localeSV))
+ : List.of(); // for local development
+
+ createEmail(recipientName, recipientAddress, subject, body, attachments, EmailType.ENROLLMENT_CONFIRMATION);
+ }
+
+ @Transactional
+ public void sendPartiallyFreeEnrollmentToQueueConfirmationEmail(
+ final Enrollment enrollment,
+ final Person person,
+ final FreeEnrollmentDetails freeEnrollmentDetails
+ ) {
+ final Map templateParams = getEmailParams(enrollment);
+ getFreeEmailParams(templateParams, freeEnrollmentDetails, enrollment.getFreeEnrollment().getSource(), "queue");
+ templateParams.put("isFree", "false");
+ templateParams.put("type", "queue");
+
+ final String recipientName = person.getFirstName() + " " + person.getLastName();
+ final String recipientAddress = enrollment.getEmail();
+ final String subject = String.format(
+ "%s | %s",
+ LocalisationUtil.translate(localeFI, "subject.enrollment-to-queue-confirmation"),
+ LocalisationUtil.translate(localeSV, "subject.enrollment-to-queue-confirmation")
);
+ final String body = templateRenderer.renderEnrollmentConfirmationEmailBody(templateParams);
createEmail(recipientName, recipientAddress, subject, body, List.of(), EmailType.ENROLLMENT_TO_QUEUE_CONFIRMATION);
}
- public void getFreeEmailParams(Map params, FreeEnrollmentDetails details) {
+ public void getFreeEmailParams(
+ Map params,
+ FreeEnrollmentDetails details,
+ FreeEnrollmentSource source,
+ String type
+ ) {
+ params.put("isFree", true);
+ params.put("type", type);
+ params.put("source", source.name());
params.put(
"freeExamsLeftFI",
String.format(
diff --git a/backend/vkt/src/main/java/fi/oph/vkt/service/PublicEnrollmentService.java b/backend/vkt/src/main/java/fi/oph/vkt/service/PublicEnrollmentService.java
index 2b555b2bf..1ad23030f 100644
--- a/backend/vkt/src/main/java/fi/oph/vkt/service/PublicEnrollmentService.java
+++ b/backend/vkt/src/main/java/fi/oph/vkt/service/PublicEnrollmentService.java
@@ -492,11 +492,19 @@ public PublicEnrollmentDTO createEnrollmentToQueue(
);
if (freeEnrollmentDetails != null && freeEnrollment != null) {
- publicEnrollmentEmailService.sendFreeEnrollmentToQueueConfirmationEmail(
- enrollment,
- person,
- freeEnrollmentDetails
- );
+ if (freeEnrollmentDetails.textualSkillCount() == 0 || freeEnrollmentDetails.oralSkillCount() == 0) {
+ publicEnrollmentEmailService.sendPartiallyFreeEnrollmentToQueueConfirmationEmail(
+ enrollment,
+ person,
+ freeEnrollmentDetails
+ );
+ } else {
+ publicEnrollmentEmailService.sendFreeEnrollmentToQueueConfirmationEmail(
+ enrollment,
+ person,
+ freeEnrollmentDetails
+ );
+ }
} else {
publicEnrollmentEmailService.sendEnrollmentToQueueConfirmationEmail(enrollment, person);
}
diff --git a/backend/vkt/src/main/java/fi/oph/vkt/util/TemplateRenderer.java b/backend/vkt/src/main/java/fi/oph/vkt/util/TemplateRenderer.java
index ccdecf804..853dbb34d 100644
--- a/backend/vkt/src/main/java/fi/oph/vkt/util/TemplateRenderer.java
+++ b/backend/vkt/src/main/java/fi/oph/vkt/util/TemplateRenderer.java
@@ -15,36 +15,10 @@ public class TemplateRenderer {
private final TemplateEngine templateEngine;
- public String renderFreeEnrollmentConfirmationEmailBody(
- final Map params,
- FreeEnrollmentSource source
- ) {
- if (source.equals(FreeEnrollmentSource.KOSKI)) {
- return renderTemplate("enrollment-free-koski-confirmation", params, Optional.empty());
- } else {
- return renderTemplate("enrollment-free-user-confirmation", params, Optional.empty());
- }
- }
-
public String renderEnrollmentConfirmationEmailBody(final Map params) {
return renderTemplate("enrollment-confirmation", params, Optional.empty());
}
- public String renderEnrollmentToQueueConfirmationEmailBody(final Map params) {
- return renderTemplate("enrollment-to-queue-confirmation", params, Optional.empty());
- }
-
- public String renderFreeEnrollmentToQueueConfirmationEmailBody(
- final Map params,
- FreeEnrollmentSource source
- ) {
- if (source.equals(FreeEnrollmentSource.KOSKI)) {
- return renderTemplate("enrollment-to-queue-free-koski-confirmation", params, Optional.empty());
- } else {
- return renderTemplate("enrollment-to-queue-free-user-confirmation", params, Optional.empty());
- }
- }
-
public String renderReceipt(final Locale locale, final Map params) {
return renderTemplate("receipt", params, Optional.of(locale));
}
diff --git a/backend/vkt/src/main/resources/email-templates/enrollment-confirmation.html b/backend/vkt/src/main/resources/email-templates/enrollment-confirmation.html
index 98f2285f6..85324b38c 100644
--- a/backend/vkt/src/main/resources/email-templates/enrollment-confirmation.html
+++ b/backend/vkt/src/main/resources/email-templates/enrollment-confirmation.html
@@ -1,21 +1,46 @@
-
+
Hei,
-
- Olet ilmoittautunut Valtionhallinnon kielitutkintoon. Ohessa tiedot ilmoittautumisestasi. Liitteenä myös maksukuitti suomeksi ja ruotsiksi.
-
+
+ Olet ilmoittautunut Valtionhallinnon kielitutkintoon. Ohessa tiedot ilmoittautumisestasi. Liitteenä myös maksukuitti suomeksi ja ruotsiksi.
+
+
+ Olet ilmoittautunut jonotuspaikalle Valtionhallinnon kielitutkintoon. Olemme sinuun yhteydessä, mikäli tutkintotilaisuuteen vapautuu paikkoja. Ohessa tiedot ilmoittautumisestasi.
+
+
+ Olet ilmoittautunut Valtionhallinnon kielitutkintoon. Tietojemme mukaan olet oikeutettu maksuttomaan tutkintoon. Ohessa tiedot ilmoittautumisestasi.
+
+
+ Olet ilmoittautunut Valtionhallinnon kielitutkintoon. Olet ilmoittanut ilmoittautumislomakkeella, että olet oikeutettu maksuttomaan tutkintoon ja lisännyt todistusasiakirjoja.
+ Virkailija tarkastaa, täyttävätkö asiakirjat maksuttomuuden ehdot. Asiakirjat tarkastetaan mahdollisimman pian.
+ Jos ehdot täyttyvät, tutkinto on maksuton ja saat sähköpostilla vahvistuksen ilmoittautumisesta.
+ Jos ehdot eivät täyty, tutkinto on maksullinen ja saat sähköpostilla maksulinkin tutkintomaksun maksamista varten.
+ Ohessa tiedot ilmoittautumisestasi.
+
+
+ Olet ilmoittautunut jonotuspaikalle Valtionhallinnon kielitutkintoon. Olemme sinuun yhteydessä, mikäli tutkintotilaisuuteen vapautuu paikkoja.
+ Tietojemme mukaan olet oikeutettu maksuttomaan tutkintoon. Jos saat paikan tutkintoon, sinun ei tarvitse maksaa tutkintomaksua. Ohessa tiedot ilmoittautumisestasi.
+
+
+ Olet ilmoittautunut jonotuspaikalle Valtionhallinnon kielitutkintoon. Olemme sinuun yhteydessä, mikäli tutkintotilaisuuteen vapautuu paikkoja.
+ Olet ilmoittanut ilmoittautumislomakkeella, että olet oikeutettu maksuttomaan tutkintoon ja lisännyt todistusasiakirjoja. Jos saat paikan tutkintoon, virkailija tarkastaa, täyttävätkö asiakirjat maksuttomuuden ehdot.
+ Jos ehdot täyttyvät, tutkinto on maksuton ja saat sähköpostilla vahvistuksen ilmoittautumisesta.
+ Jos ehdot eivät täyty, tutkinto on maksullinen ja saat sähköpostilla maksulinkin tutkintomaksun maksamista varten.
+ Ohessa tiedot ilmoittautumisestasi.
+
Tutkinnon kieli:
Tutkinnon taso:
Tutkintopäivä:
- Oikeutettu maksuttomaan tutkintoon: Ei
+ Oikeutettu maksuttomaan tutkintoon: Ei
Valitsemasi taidot:
Valitsemasi osakokeet:
+ Maksuttomia tutkintokertoja jäljellä:
@@ -41,18 +66,43 @@
Hej,
-
- Du har anmält dig till Språkexamen för statsförvaltningen (VKT). Uppgifter om din anmälan hittar du nedan. Bifogat finns även kvittot för din examensavgift på finska och på svenska.
-
+
+ Du har anmält dig till Språkexamen för statsförvaltningen (VKT). Uppgifter om din anmälan hittar du nedan. Bifogat finns även kvittot för din examensavgift på finska och på svenska.
+
+
+ Du har en plats i kön för Språkexamen för statsförvaltningen (VKT). Vi kommer att kontakta dig om platser blir lediga. Uppgifter om din anmälan hittar du nedan.
+
+
+ Du har anmält dig till Språkexamen för statsförvaltningen (VKT). Enligt våra uppgifter har du rätt till avgiftsfri examen. Uppgifter om din anmälan hittar du nedan.
+
+
+ Du har anmält dig till Språkexamen för statsförvaltningen (VKT).
+ Du har uppgett på anmälningsblanketten att du har rätt till avgiftsfri examen och bifogat intyg. Dina intyg granskas vid Utbildningsstyrelsen så fort som möjligt.
+ Om du har rätt till avgiftsfri examen får du en bekräftelse på din anmälan per e-post.
+ Om du inte har rätt till avgiftsfri examen, får du en länk för att betala examensavgiften.
+ Uppgifter om din anmälan hittar du nedan.
+
+
+ Du har en plats i kön för Språkexamen för statsförvaltningen (VKT). Vi kommer att kontakta dig om platser blir lediga.
+ Enligt våra uppgifter har du rätt till avgiftsfri examen. Ifall du får plats vid examenstillfället behöver du inte betala examensavgift. Uppgifter om din anmälan hittar du nedan.
+
+
+ Du har en plats i kön för Språkexamen för statsförvaltningen (VKT). Vi kontaktar dig om platser blir lediga.
+ Du har uppgett på anmälningsblanketten att du har rätt till avgiftsfri examen och bifogat intyg. Om du får en plats vid examenstillfället granskas dina intyg vid Utbildningsstyrelsen.
+ Ifall du har rätt till avgiftsfri examen får du en bekräftelse på din anmälan per e-post.
+ Om du inte har rätt till avgiftsfri examen, får du en länk för att betala examensavgiften.
+ Uppgifter om din anmälan hittar du nedan.
+
Examensspråk:
Examensnivå:
Examensdatum:
- Rätt till avgiftsfri examen: Nej
+ Rätt till avgiftsfri examen: Nej
Förmågor som du har valt:
Delprov som du har valt:
+ Antal avgiftsfria examina kvar:
Information om examenstillfället
diff --git a/backend/vkt/src/main/resources/email-templates/enrollment-free-koski-confirmation.html b/backend/vkt/src/main/resources/email-templates/enrollment-free-koski-confirmation.html
deleted file mode 100644
index c127c1d9a..000000000
--- a/backend/vkt/src/main/resources/email-templates/enrollment-free-koski-confirmation.html
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-
-
- Hei,
-
-
- Olet ilmoittautunut Valtionhallinnon kielitutkintoon. Tietojemme mukaan olet oikeutettu maksuttomaan tutkintoon. Ohessa tiedot ilmoittautumisestasi.
-
-
-
-
- Tutkinnon kieli:
- Tutkinnon taso:
- Tutkintopäivä:
- Oikeutettu maksuttomaan tutkintoon: Kyllä
- Valitsemasi taidot:
- Valitsemasi osakokeet:
- Maksuttomia tutkintokertoja jäljellä:
-
-
-
- Tietoa tutkintotilaisuudesta
-
- Tutkintotilaisuus järjestetään Opetushallituksen tiloissa osoitteessa Hakaniemenranta 6, 00530 Helsinki.
- Tutkinnon suorittamiseen kannattaa varata koko päivä. Tutkintotilaisuus alkaa klo 9.00 kirjallisen taidon tutkinnolla ja jatkuu iltapäivällä suullisen taidon tutkinnolla. Tutkinnon päättymisaika riippuu tutkintoon osallistuvien määrästä. Saat tarkemmat ohjeet tutkintopäivän kulusta viikkoa ennen tutkintopäivää.
- Jos sinulla on kysyttävää tutkinnosta, voit lähettää meille sähköpostia osoitteeseen kielitutkinnot@oph.fi. Ilmoitathan viipymättä, jos et pysty osallistumaan tutkintoon.
-
- Lisätietoa tutkinnosta löydät Opetushallituksen verkkopalvelusta:
- Valtionhallinnon kielitutkinnot (VKT)
-
-
-
-
- Älä vastaa tähän viestiin - viesti on lähetetty automaattisesti.
-
-
- Ystävällisin terveisin
- Opetushallitus
-
-
-
- Hej,
-
-
- Du har anmält dig till Språkexamen för statsförvaltningen (VKT). Enligt våra uppgifter har du rätt till avgiftsfri examen. Uppgifter om din anmälan hittar du nedan.
-
-
-
-
- Examensspråk:
- Examensnivå:
- Examensdatum:
- Rätt till avgiftsfri examen: Ja
- Förmågor som du har valt:
- Delprov som du har valt:
- Antal avgiftsfria examina kvar:
-
-
- Information om examenstillfället
-
- Examenstillfället ordnas vid Utbildningsstyrelsen på adressen Hagnäskajen 6, 00530 Helsingfors.
- Du bör reservera hela dagen för examen. Examenstillfället börjar klockan 9.00 med delprovet i skriftlig färdighet och fortsätter på eftermiddagen med delprovet i muntlig färdighet. Deltagarantalet avgör när examenstillfället slutar. Du får närmare anvisningar om examensdagens program en vecka före examensdagen.
- Om du har frågor om examen, kan du kontakta oss per e-post på adressen kielitutkinnot@oph.fi. Vänligen meddela omedelbart om du inte kan delta i examen.
-
- Närmare information om examen finns på Utbildningsstyrelsens webbplats:
- Språkexamina för statsförvaltningen (VKT)
-
-
-
-
- Svara inte på detta meddelande, det har skickats automatiskt.
-
-
- Med vänlig hälsning
- Utbildningsstyrelsen
-
-
-
diff --git a/backend/vkt/src/main/resources/email-templates/enrollment-free-user-confirmation.html b/backend/vkt/src/main/resources/email-templates/enrollment-free-user-confirmation.html
deleted file mode 100644
index 4b83b417e..000000000
--- a/backend/vkt/src/main/resources/email-templates/enrollment-free-user-confirmation.html
+++ /dev/null
@@ -1,85 +0,0 @@
-
-
-
-
- Hei,
-
-
- Olet ilmoittautunut Valtionhallinnon kielitutkintoon. Olet ilmoittanut ilmoittautumislomakkeella, että olet oikeutettu maksuttomaan tutkintoon ja lisännyt todistusasiakirjoja.
-
- Virkailija tarkastaa, täyttävätkö asiakirjat maksuttomuuden ehdot. Asiakirjat tarkastetaan mahdollisimman pian.
- Jos ehdot täyttyvät, tutkinto on maksuton ja saat sähköpostilla vahvistuksen ilmoittautumisesta.
- Jos ehdot eivät täyty, tutkinto on maksullinen ja saat sähköpostilla maksulinkin tutkintomaksun maksamista varten.
- Ohessa tiedot ilmoittautumisestasi.
-
-
-
-
- Tutkinnon kieli:
- Tutkinnon taso:
- Tutkintopäivä:
- Oikeutettu maksuttomaan tutkintoon: Virkailija tarkastaa
- Valitsemasi taidot:
- Valitsemasi osakokeet:
- Maksuttomia tutkintokertoja jäljellä:
-
-
- Tietoa tutkintotilaisuudesta
-
- Tutkintotilaisuus järjestetään Opetushallituksen tiloissa osoitteessa Hakaniemenranta 6, 00530 Helsinki.
- Tutkinnon suorittamiseen kannattaa varata koko päivä. Tutkintotilaisuus alkaa klo 9.00 kirjallisen taidon tutkinnolla ja jatkuu iltapäivällä suullisen taidon tutkinnolla. Tutkinnon päättymisaika riippuu tutkintoon osallistuvien määrästä. Saat tarkemmat ohjeet tutkintopäivän kulusta viikkoa ennen tutkintopäivää.
- Jos sinulla on kysyttävää tutkinnosta, voit lähettää meille sähköpostia osoitteeseen kielitutkinnot@oph.fi. Ilmoitathan viipymättä, jos et pysty osallistumaan tutkintoon.
-
- Lisätietoa tutkinnosta löydät Opetushallituksen verkkopalvelusta:
- Valtionhallinnon kielitutkinnot (VKT)
-
-
-
-
- Älä vastaa tähän viestiin - viesti on lähetetty automaattisesti.
-
-
- Ystävällisin terveisin
- Opetushallitus
-
-
-
- Hej,
-
- Du har anmält dig till Språkexamen för statsförvaltningen (VKT).
- Du har uppgett på anmälningsblanketten att du har rätt till avgiftsfri examen och bifogat intyg. Dina intyg granskas vid Utbildningsstyrelsen så fort som möjligt.
- Om du har rätt till avgiftsfri examen får du en bekräftelse på din anmälan per e-post.
- Om du inte har rätt till avgiftsfri examen, får du en länk för att betala examensavgiften.
- Uppgifter om din anmälan hittar du nedan.
-
-
-
- Examensspråk:
- Examensnivå:
- Examensdatum:
- Rätt till avgiftsfri examen: Granskas vid Utbildningstyrelsen
- Förmågor som du har valt:
- Delprov som du har valt:
- Antal avgiftsfria examina kvar:
-
-
- Information om examenstillfället
-
- Examenstillfället ordnas vid Utbildningsstyrelsen på adressen Hagnäskajen 6, 00530 Helsingfors.
- Du bör reservera hela dagen för examen. Examenstillfället börjar klockan 9.00 med delprovet i skriftlig färdighet och fortsätter på eftermiddagen med delprovet i muntlig färdighet. Deltagarantalet avgör när examenstillfället slutar. Du får närmare anvisningar om examensdagens program en vecka före examensdagen.
- Om du har frågor om examen, kan du kontakta oss per e-post på adressen kielitutkinnot@oph.fi. Vänligen meddela omedelbart om du inte kan delta i examen.
-
- Närmare information om examen finns på Utbildningsstyrelsens webbplats:
- Språkexamina för statsförvaltningen (VKT)
-
-
-
-
- Svara inte på detta meddelande, det har skickats automatiskt.
-
-
- Med vänlig hälsning
- Utbildningsstyrelsen
-
-
-
diff --git a/backend/vkt/src/main/resources/email-templates/enrollment-to-queue-confirmation.html b/backend/vkt/src/main/resources/email-templates/enrollment-to-queue-confirmation.html
deleted file mode 100644
index 397c3c9f1..000000000
--- a/backend/vkt/src/main/resources/email-templates/enrollment-to-queue-confirmation.html
+++ /dev/null
@@ -1,70 +0,0 @@
-
-
-
-
- Hei,
-
-
- Olet ilmoittautunut jonotuspaikalle Valtionhallinnon kielitutkintoon. Olemme sinuun yhteydessä, mikäli tutkintotilaisuuteen vapautuu paikkoja. Ohessa tiedot ilmoittautumisestasi.
-
-
-
-
- Tutkinnon kieli:
- Tutkinnon taso:
- Tutkintopäivä:
- Oikeutettu maksuttomaan tutkintoon: Ei
- Valitsemasi taidot:
- Valitsemasi osakokeet:
-
-
-
- Jos sinulla on kysyttävää tutkinnosta, voit lähettää meille sähköpostia osoitteeseen kielitutkinnot@oph.fi. Ilmoitathan viipymättä, jos et pysty osallistumaan tutkintoon.
-
- Lisätietoa tutkinnosta löydät Opetushallituksen verkkopalvelusta:
- Valtionhallinnon kielitutkinnot (VKT)
-
-
-
-
- Älä vastaa tähän viestiin - viesti on lähetetty automaattisesti.
-
-
- Ystävällisin terveisin
- Opetushallitus
-
-
-
- Hej,
-
-
- Du har en plats i kön för Språkexamen för statsförvaltningen (VKT). Vi kommer att kontakta dig om platser blir lediga. Uppgifter om din anmälan hittar du nedan.
-
-
-
-
- Examensspråk:
- Examensnivå:
- Examensdatum:
- Rätt till avgiftsfri examen: Nej
- Förmågor som du har valt:
- Delprov som du har valt:
-
-
-
- Om du har frågor om examen, kan du kontakta oss per e-post på adressen kielitutkinnot@oph.fi. Vänligen meddela omedelbart om du inte kan delta i examen.
-
- Närmare information om examen finns på Utbildningsstyrelsens webbplats:
- Språkexamina för statsförvaltningen (VKT)
-
-
-
-
- Svara inte på detta meddelande, det har skickats automatiskt.
-
-
- Med vänlig hälsning
- Utbildningsstyrelsen
-
-
-
diff --git a/backend/vkt/src/main/resources/email-templates/enrollment-to-queue-free-koski-confirmation.html b/backend/vkt/src/main/resources/email-templates/enrollment-to-queue-free-koski-confirmation.html
deleted file mode 100644
index 1b878e52d..000000000
--- a/backend/vkt/src/main/resources/email-templates/enrollment-to-queue-free-koski-confirmation.html
+++ /dev/null
@@ -1,74 +0,0 @@
-
-
-
-
- Hei,
-
- Olet ilmoittautunut jonotuspaikalle Valtionhallinnon kielitutkintoon. Olemme sinuun yhteydessä, mikäli tutkintotilaisuuteen vapautuu paikkoja.
- Tietojemme mukaan olet oikeutettu maksuttomaan tutkintoon. Jos saat paikan tutkintoon, sinun ei tarvitse maksaa tutkintomaksua. Ohessa tiedot ilmoittautumisestasi.
-
-
-
- Tutkinnon kieli:
- Tutkinnon taso:
- Tutkintopäivä:
- Oikeutettu maksuttomaan tutkintoon: Kyllä
- Valitsemasi taidot:
- Valitsemasi osakokeet:
- Maksuttomia tutkintokertoja jäljellä:
-
-
-
- Jos sinulla on kysyttävää tutkinnosta, voit lähettää meille sähköpostia osoitteeseen kielitutkinnot@oph.fi. Ilmoitathan viipymättä, jos et pysty osallistumaan tutkintoon.
-
- Lisätietoa tutkinnosta löydät Opetushallituksen verkkopalvelusta:
- Valtionhallinnon kielitutkinnot (VKT)
-
-
-
-
- Älä vastaa tähän viestiin - viesti on lähetetty automaattisesti.
-
-
- Ystävällisin terveisin
- Opetushallitus
-
-
-
- Hej,
-
-
- Du har en plats i kön för Språkexamen för statsförvaltningen (VKT). Vi kommer att kontakta dig om platser blir lediga.
-
-
- Enligt våra uppgifter har du rätt till avgiftsfri examen. Ifall du får plats vid examenstillfället behöver du inte betala examensavgift. Uppgifter om din anmälan hittar du nedan.
-
-
-
-
- Examensspråk:
- Examensnivå:
- Examensdatum:
- Rätt till avgiftsfri examen: Ja
- Förmågor som du har valt:
- Delprov som du har valt:
- Antal avgiftsfria examina kvar:
-
-
-
- Om du har frågor om examen, kan du kontakta oss per e-post på adressen kielitutkinnot@oph.fi. Vänligen meddela omedelbart om du inte kan delta i examen.
-
- Närmare information om examen finns på Utbildningsstyrelsens webbplats:
- Språkexamina för statsförvaltningen (VKT)
-
-
-
-
- Svara inte på detta meddelande, det har skickats automatiskt.
-
-
- Med vänlig hälsning
- Utbildningsstyrelsen
-
-
-
diff --git a/backend/vkt/src/main/resources/email-templates/enrollment-to-queue-free-user-confirmation.html b/backend/vkt/src/main/resources/email-templates/enrollment-to-queue-free-user-confirmation.html
deleted file mode 100644
index a0628b59e..000000000
--- a/backend/vkt/src/main/resources/email-templates/enrollment-to-queue-free-user-confirmation.html
+++ /dev/null
@@ -1,77 +0,0 @@
-
-
-
-
- Hei,
-
- Olet ilmoittautunut jonotuspaikalle Valtionhallinnon kielitutkintoon. Olemme sinuun yhteydessä, mikäli tutkintotilaisuuteen vapautuu paikkoja.
- Olet ilmoittanut ilmoittautumislomakkeella, että olet oikeutettu maksuttomaan tutkintoon ja lisännyt todistusasiakirjoja. Jos saat paikan tutkintoon, virkailija tarkastaa, täyttävätkö asiakirjat maksuttomuuden ehdot.
- Jos ehdot täyttyvät, tutkinto on maksuton ja saat sähköpostilla vahvistuksen ilmoittautumisesta.
- Jos ehdot eivät täyty, tutkinto on maksullinen ja saat sähköpostilla maksulinkin tutkintomaksun maksamista varten.
- Ohessa tiedot ilmoittautumisestasi.
-
-
-
- Tutkinnon kieli:
- Tutkinnon taso:
- Tutkintopäivä:
- Oikeutettu maksuttomaan tutkintoon: Virkailija tarkastaa
- Valitsemasi taidot:
- Valitsemasi osakokeet:
- Maksuttomia tutkintokertoja jäljellä:
-
-
-
- Jos sinulla on kysyttävää tutkinnosta, voit lähettää meille sähköpostia osoitteeseen kielitutkinnot@oph.fi. Ilmoitathan viipymättä, jos et pysty osallistumaan tutkintoon.
-
- Lisätietoa tutkinnosta löydät Opetushallituksen verkkopalvelusta:
- Valtionhallinnon kielitutkinnot (VKT)
-
-
-
-
- Älä vastaa tähän viestiin - viesti on lähetetty automaattisesti.
-
-
- Ystävällisin terveisin
- Opetushallitus
-
-
-
- Hej,
-
- Du har en plats i kön för Språkexamen för statsförvaltningen (VKT). Vi kontaktar dig om platser blir lediga.
- Du har uppgett på anmälningsblanketten att du har rätt till avgiftsfri examen och bifogat intyg. Om du får en plats vid examenstillfället granskas dina intyg vid Utbildningsstyrelsen.
- Ifall du har rätt till avgiftsfri examen får du en bekräftelse på din anmälan per e-post.
- Om du inte har rätt till avgiftsfri examen, får du en länk för att betala examensavgiften.
- Uppgifter om din anmälan hittar du nedan.
-
-
-
-
- Examensspråk:
- Examensnivå:
- Examensdatum:
- Rätt till avgiftsfri examen: Granskas på Utbildningstyrelsen
- Förmågor som du har valt:
- Delprov som du har valt:
- Antal avgiftsfria examina kvar:
-
-
-
- Om du har frågor om examen, kan du kontakta oss per e-post på adressen kielitutkinnot@oph.fi. Vänligen meddela omedelbart om du inte kan delta i examen.
-
- Närmare information om examen finns på Utbildningsstyrelsens webbplats:
- Språkexamina för statsförvaltningen (VKT)
-
-
-
-
- Svara inte på detta meddelande, det har skickats automatiskt.
-
-
- Med vänlig hälsning
- Utbildningsstyrelsen
-
-
-
diff --git a/backend/vkt/src/test/java/fi/oph/vkt/service/PublicEnrollmentEmailServiceTest.java b/backend/vkt/src/test/java/fi/oph/vkt/service/PublicEnrollmentEmailServiceTest.java
index 8cf7cf7a9..9cbfa7ea1 100644
--- a/backend/vkt/src/test/java/fi/oph/vkt/service/PublicEnrollmentEmailServiceTest.java
+++ b/backend/vkt/src/test/java/fi/oph/vkt/service/PublicEnrollmentEmailServiceTest.java
@@ -112,25 +112,18 @@ public void testSendEnrollmentConfirmationEmail() throws IOException, Interrupte
entityManager.persist(person);
entityManager.persist(enrollment);
- final Map expectedTemplateParams = Map.of(
- "examLanguageFI",
- "suomi",
- "examLanguageSV",
- "finska",
- "examLevelFI",
- "erinomainen taito",
- "examLevelSV",
- "utmärkta språkkunskaper",
- "examDate",
- "12.03.2025",
- "skillsFI",
- "suullinen taito",
- "skillsSV",
- "förmåga att använda finska i tal",
- "partialExamsFI",
- "puhuminen, puheen ymmärtäminen",
- "partialExamsSV",
- "muntlig färdighet, hörförståelse"
+ final Map expectedTemplateParams = Map.ofEntries(
+ Map.entry("examLanguageFI", "suomi"),
+ Map.entry("examLanguageSV", "finska"),
+ Map.entry("examLevelFI", "erinomainen taito"),
+ Map.entry("examLevelSV", "utmärkta språkkunskaper"),
+ Map.entry("examDate", "12.03.2025"),
+ Map.entry("skillsFI", "suullinen taito"),
+ Map.entry("skillsSV", "förmåga att använda finska i tal"),
+ Map.entry("partialExamsFI", "puhuminen, puheen ymmärtäminen"),
+ Map.entry("partialExamsSV", "muntlig färdighet, hörförståelse"),
+ Map.entry("type", "enrollment"),
+ Map.entry("isFree", false)
);
when(environment.getRequiredProperty("app.email.sending-enabled", Boolean.class)).thenReturn(true);
@@ -188,28 +181,21 @@ public void testSendEnrollmentToQueueConfirmationEmail() {
entityManager.persist(person);
entityManager.persist(enrollment);
- final Map expectedTemplateParams = Map.of(
- "examLanguageFI",
- "ruotsi",
- "examLanguageSV",
- "svenska",
- "examLevelFI",
- "erinomainen taito",
- "examLevelSV",
- "utmärkta språkkunskaper",
- "examDate",
- "12.03.2025",
- "skillsFI",
- "kirjallinen taito, ymmärtämisen taito",
- "skillsSV",
- "förmåga att använda svenska i skrift, förmåga att förstå svenska",
- "partialExamsFI",
- "kirjoittaminen, tekstin ymmärtäminen, puheen ymmärtäminen",
- "partialExamsSV",
- "skriftlig färdighet, läsförståelse, hörförståelse"
+ final Map expectedTemplateParams = Map.ofEntries(
+ Map.entry("examLanguageFI", "ruotsi"),
+ Map.entry("examLanguageSV", "svenska"),
+ Map.entry("examLevelFI", "erinomainen taito"),
+ Map.entry("examLevelSV", "utmärkta språkkunskaper"),
+ Map.entry("examDate", "12.03.2025"),
+ Map.entry("skillsFI", "kirjallinen taito, ymmärtämisen taito"),
+ Map.entry("skillsSV", "förmåga att använda svenska i skrift, förmåga att förstå svenska"),
+ Map.entry("partialExamsFI", "kirjoittaminen, tekstin ymmärtäminen, puheen ymmärtäminen"),
+ Map.entry("partialExamsSV", "skriftlig färdighet, läsförståelse, hörförståelse"),
+ Map.entry("type", "queue"),
+ Map.entry("isFree", false)
);
- when(templateRenderer.renderEnrollmentToQueueConfirmationEmailBody(expectedTemplateParams))
+ when(templateRenderer.renderEnrollmentConfirmationEmailBody(expectedTemplateParams))
.thenReturn("enrollment-to-queue");
publicEnrollmentEmailService.sendEnrollmentToQueueConfirmationEmail(enrollment, person);
diff --git a/backend/vkt/src/test/java/fi/oph/vkt/util/TemplateRendererTest.java b/backend/vkt/src/test/java/fi/oph/vkt/util/TemplateRendererTest.java
index e108c8d8b..cc141cb91 100644
--- a/backend/vkt/src/test/java/fi/oph/vkt/util/TemplateRendererTest.java
+++ b/backend/vkt/src/test/java/fi/oph/vkt/util/TemplateRendererTest.java
@@ -5,6 +5,7 @@
import static org.junit.jupiter.api.Assertions.assertTrue;
import jakarta.annotation.Resource;
+import java.util.HashMap;
import java.util.Map;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
@@ -24,15 +25,32 @@ public void testRenderEnrollmentConfirmation() {
assertCommonEnrollmentConfirmationEmailContent(content);
assertTrue(content.contains("maksukuitti"));
+ assertFalse(content.contains("oikeutettu maksuttomaan"));
}
@Test
public void testRenderEnrollmentToQueueConfirmation() {
final Map params = getCommonEnrollmentConfirmationParams();
- final String content = templateRenderer.renderEnrollmentToQueueConfirmationEmailBody(params);
+ final HashMap queueParams = new HashMap(params);
+ queueParams.put("type", "queue");
+ final String content = templateRenderer.renderEnrollmentConfirmationEmailBody(queueParams);
assertCommonEnrollmentConfirmationEmailContent(content);
assertFalse(content.contains("maksukuitti"));
+ assertFalse(content.contains("oikeutettu maksuttomaan"));
+ }
+
+ @Test
+ public void testRenderFreeEnrollmentConfirmation() {
+ final Map params = getCommonEnrollmentConfirmationParams();
+ final HashMap queueParams = new HashMap(params);
+ queueParams.put("isFree", true);
+ queueParams.put("source", "KOSKI");
+ final String content = templateRenderer.renderEnrollmentConfirmationEmailBody(queueParams);
+
+ assertCommonEnrollmentConfirmationEmailContent(content);
+ assertFalse(content.contains("maksukuitti"));
+ assertTrue(content.contains("oikeutettu maksuttomaan"));
}
private Map getCommonEnrollmentConfirmationParams() {
@@ -48,7 +66,11 @@ private Map getCommonEnrollmentConfirmationParams() {
"partialExamsFI",
"kirjoittaminen, tekstin ymmärtäminen, puhuminen",
"examLanguageSV",
- "finska"
+ "finska",
+ "type",
+ "enrollment",
+ "isFree",
+ false
);
}
From dc1cf4752c94d728867216fea91c9005b2a5cc15 Mon Sep 17 00:00:00 2001
From: Laura Ketola
Date: Fri, 13 Sep 2024 16:01:42 +0300
Subject: [PATCH 2/5] VKT(Backend): Improve building free enrollment email
contents
---
.../service/PublicEnrollmentEmailService.java | 49 +++++++++++++------
.../enrollment-confirmation.html | 4 +-
2 files changed, 35 insertions(+), 18 deletions(-)
diff --git a/backend/vkt/src/main/java/fi/oph/vkt/service/PublicEnrollmentEmailService.java b/backend/vkt/src/main/java/fi/oph/vkt/service/PublicEnrollmentEmailService.java
index 76c436a94..000362087 100644
--- a/backend/vkt/src/main/java/fi/oph/vkt/service/PublicEnrollmentEmailService.java
+++ b/backend/vkt/src/main/java/fi/oph/vkt/service/PublicEnrollmentEmailService.java
@@ -183,8 +183,12 @@ public void sendFreeEnrollmentConfirmationEmail(
final Person person,
final FreeEnrollmentDetails freeEnrollmentDetails
) {
- final Map templateParams = getEmailParams(enrollment);
- getFreeEmailParams(templateParams, freeEnrollmentDetails, enrollment.getFreeEnrollment().getSource(), "enrollment");
+ final Map templateParams = withFreeEmailParams(
+ getEmailParams(enrollment),
+ freeEnrollmentDetails,
+ enrollment.getFreeEnrollment().getSource(),
+ "enrollment"
+ );
final String recipientName = person.getFirstName() + " " + person.getLastName();
final String recipientAddress = enrollment.getEmail();
@@ -204,8 +208,12 @@ public void sendFreeEnrollmentToQueueConfirmationEmail(
final Person person,
final FreeEnrollmentDetails freeEnrollmentDetails
) {
- final Map templateParams = getEmailParams(enrollment);
- getFreeEmailParams(templateParams, freeEnrollmentDetails, enrollment.getFreeEnrollment().getSource(), "queue");
+ final Map templateParams = withFreeEmailParams(
+ getEmailParams(enrollment),
+ freeEnrollmentDetails,
+ enrollment.getFreeEnrollment().getSource(),
+ "queue"
+ );
final String recipientName = person.getFirstName() + " " + person.getLastName();
final String recipientAddress = enrollment.getEmail();
@@ -225,10 +233,13 @@ public void sendPartiallyFreeEnrollmentConfirmationEmail(
final Person person,
final FreeEnrollmentDetails freeEnrollmentDetails
) throws IOException, InterruptedException {
- final Map templateParams = getEmailParams(enrollment);
- getFreeEmailParams(templateParams, freeEnrollmentDetails, enrollment.getFreeEnrollment().getSource(), "queue");
+ final Map templateParams = withFreeEmailParams(
+ getEmailParams(enrollment),
+ freeEnrollmentDetails,
+ enrollment.getFreeEnrollment().getSource(),
+ "enrollment"
+ );
templateParams.put("isFree", "false");
- templateParams.put("type", "enrollment");
final String recipientName = person.getFirstName() + " " + person.getLastName();
final String recipientAddress = enrollment.getEmail();
@@ -255,10 +266,13 @@ public void sendPartiallyFreeEnrollmentToQueueConfirmationEmail(
final Person person,
final FreeEnrollmentDetails freeEnrollmentDetails
) {
- final Map templateParams = getEmailParams(enrollment);
- getFreeEmailParams(templateParams, freeEnrollmentDetails, enrollment.getFreeEnrollment().getSource(), "queue");
+ final Map templateParams = withFreeEmailParams(
+ getEmailParams(enrollment),
+ freeEnrollmentDetails,
+ enrollment.getFreeEnrollment().getSource(),
+ "queue"
+ );
templateParams.put("isFree", "false");
- templateParams.put("type", "queue");
final String recipientName = person.getFirstName() + " " + person.getLastName();
final String recipientAddress = enrollment.getEmail();
@@ -272,16 +286,17 @@ public void sendPartiallyFreeEnrollmentToQueueConfirmationEmail(
createEmail(recipientName, recipientAddress, subject, body, List.of(), EmailType.ENROLLMENT_TO_QUEUE_CONFIRMATION);
}
- public void getFreeEmailParams(
+ public Map withFreeEmailParams(
Map params,
FreeEnrollmentDetails details,
FreeEnrollmentSource source,
String type
) {
- params.put("isFree", true);
- params.put("type", type);
- params.put("source", source.name());
- params.put(
+ Map freeParams = new HashMap<>(params);
+ freeParams.put("isFree", true);
+ freeParams.put("type", type);
+ freeParams.put("source", source.name());
+ freeParams.put(
"freeExamsLeftFI",
String.format(
"%s: %s/3. %s: %s/3",
@@ -291,7 +306,7 @@ public void getFreeEmailParams(
EnrollmentUtil.getFreeExamsLeft(details.oralSkillCount())
)
);
- params.put(
+ freeParams.put(
"freeExamsLeftSV",
String.format(
"%s: %s/3. %s: %s/3",
@@ -301,5 +316,7 @@ public void getFreeEmailParams(
EnrollmentUtil.getFreeExamsLeft(details.oralSkillCount())
)
);
+
+ return freeParams;
}
}
diff --git a/backend/vkt/src/main/resources/email-templates/enrollment-confirmation.html b/backend/vkt/src/main/resources/email-templates/enrollment-confirmation.html
index 85324b38c..4c2b6315a 100644
--- a/backend/vkt/src/main/resources/email-templates/enrollment-confirmation.html
+++ b/backend/vkt/src/main/resources/email-templates/enrollment-confirmation.html
@@ -40,7 +40,7 @@
Oikeutettu maksuttomaan tutkintoon: Ei
Valitsemasi taidot:
Valitsemasi osakokeet:
- Maksuttomia tutkintokertoja jäljellä:
+ Maksuttomia tutkintokertoja jäljellä:
@@ -102,7 +102,7 @@
Rätt till avgiftsfri examen: Nej
Förmågor som du har valt:
Delprov som du har valt:
- Antal avgiftsfria examina kvar:
+ Antal avgiftsfria examina kvar:
Information om examenstillfället
From 82afbbe0d7473d0ed81383cdbf9f587be3201d32 Mon Sep 17 00:00:00 2001
From: Laura Ketola
Date: Tue, 16 Jan 2024 12:46:03 +0200
Subject: [PATCH 3/5] YKI:VKT:AKR(Frontend): Improve stepper accessibility
[deploy]
---
.../akr/public/i18n/en-GB/translation.json | 2 +
.../akr/public/i18n/fi-FI/translation.json | 2 +
.../akr/public/i18n/sv-SE/translation.json | 2 +
.../contactRequest/ContactRequestStepper.tsx | 42 ++++---
.../akr/src/pages/ContactRequestPage.tsx | 6 +-
.../vkt/public/i18n/fi-FI/public.json | 1 +
.../vkt/public/i18n/sv-SE/public.json | 1 +
.../PublicEnrollmentPhoneGrid.tsx | 2 +-
.../PublicEnrollmentStepper.tsx | 62 ++++++----
.../yki/public/i18n/en-GB/public.json | 2 +
.../yki/public/i18n/fi-FI/public.json | 2 +
.../yki/public/i18n/sv-SE/public.json | 2 +
.../PublicRegistrationStepper.tsx | 53 +++++----
.../InitRegistrationPage.test.tsx.snap | 108 +++++++++++++++---
14 files changed, 207 insertions(+), 80 deletions(-)
diff --git a/frontend/packages/akr/public/i18n/en-GB/translation.json b/frontend/packages/akr/public/i18n/en-GB/translation.json
index 221d17364..d135f995a 100644
--- a/frontend/packages/akr/public/i18n/en-GB/translation.json
+++ b/frontend/packages/akr/public/i18n/en-GB/translation.json
@@ -196,6 +196,8 @@
"steps": {
"active": "Active",
"completed": "Completed",
+ "ariaLabel": "Contact request steps",
+ "phaseNumber": "{{current}} of {{total}}",
"Done": "Complete!",
"FillContactDetails": "Fill in contact details",
"PreviewAndSend": "Preview and send",
diff --git a/frontend/packages/akr/public/i18n/fi-FI/translation.json b/frontend/packages/akr/public/i18n/fi-FI/translation.json
index 902cb4d35..8b0c52111 100644
--- a/frontend/packages/akr/public/i18n/fi-FI/translation.json
+++ b/frontend/packages/akr/public/i18n/fi-FI/translation.json
@@ -213,6 +213,8 @@
"recipients": "Vastaanottajat",
"steps": {
"active": "Aktiivinen",
+ "ariaLabel": "Yhteydenottopyynnön vaiheet",
+ "phaseNumber": "{{current}} kautta {{total}}",
"completed": "Suoritettu",
"Done": "Valmis!",
"FillContactDetails": "Täytä yhteystietosi",
diff --git a/frontend/packages/akr/public/i18n/sv-SE/translation.json b/frontend/packages/akr/public/i18n/sv-SE/translation.json
index 204840e3f..194cd534e 100644
--- a/frontend/packages/akr/public/i18n/sv-SE/translation.json
+++ b/frontend/packages/akr/public/i18n/sv-SE/translation.json
@@ -196,6 +196,8 @@
"steps": {
"active": "Aktiv",
"completed": "Utfört",
+ "ariaLabel": "Kontaktförfrågans faser",
+ "phaseNumber": "{{current}} av {{total}}",
"Done": "Klart!",
"FillContactDetails": "Fyll i kontaktuppgifter",
"PreviewAndSend": "Förhandsgranska och sänd",
diff --git a/frontend/packages/akr/src/components/contactRequest/ContactRequestStepper.tsx b/frontend/packages/akr/src/components/contactRequest/ContactRequestStepper.tsx
index 1d04aa930..c3b9263ec 100644
--- a/frontend/packages/akr/src/components/contactRequest/ContactRequestStepper.tsx
+++ b/frontend/packages/akr/src/components/contactRequest/ContactRequestStepper.tsx
@@ -1,4 +1,5 @@
-import { Step, StepLabel, Stepper } from '@mui/material';
+import { Step, StepLabel, Stepper, Typography } from '@mui/material';
+import { visuallyHidden } from '@mui/utils';
import { CircularStepper } from 'shared/components';
import { useWindowProperties } from 'shared/hooks';
@@ -22,40 +23,49 @@ export const ContactRequestStepper = () => {
const value = activeStep * (100 / maxStep);
const stepAriaLabel = (step: number) => {
const phaseDescription = t(ContactRequestFormStep[step]);
- const phaseNumberPart = `${step}/${maxStep}`;
+ const phaseNumberPart = t('phaseNumber', {
+ current: step,
+ total: maxStep,
+ });
if (step < activeStep) {
return `${phasePrefix} ${phaseNumberPart}, ${t(
'completed',
)}: ${phaseDescription}`;
- } else if (step == activeStep) {
- return `${phasePrefix} ${phaseNumberPart}, ${t(
- 'active',
- )}: ${phaseDescription}`;
} else {
return `${phasePrefix} ${phaseNumberPart}: ${phaseDescription}`;
}
};
+
const text = `${activeStep}/${maxStep}`;
+ const ariaText = t('phaseNumber', {
+ current: activeStep,
+ total: maxStep,
+ });
- const ariaLabel = `${translateCommon('phase')} ${text}: ${t(
- ContactRequestFormStep[activeStep],
- )}`;
+ const ariaLabel = `${translateCommon('phase')} ${ariaText}`;
return isPhone ? (
-
+
+
+ {ariaLabel}
+
) : (
{stepNumbers.map((v) => (
{
: undefined
}
>
- {t(ContactRequestFormStep[v])}
+ {t(ContactRequestFormStep[v])}
))}
diff --git a/frontend/packages/akr/src/pages/ContactRequestPage.tsx b/frontend/packages/akr/src/pages/ContactRequestPage.tsx
index 636cc85b4..dbf19cc50 100644
--- a/frontend/packages/akr/src/pages/ContactRequestPage.tsx
+++ b/frontend/packages/akr/src/pages/ContactRequestPage.tsx
@@ -1,4 +1,4 @@
-import { Grid, Paper } from '@mui/material';
+import { Grid, Paper, Typography } from '@mui/material';
import { useEffect, useState } from 'react';
import { H1, HeaderSeparator, Text } from 'shared/components';
import { useWindowProperties } from 'shared/hooks';
@@ -61,7 +61,9 @@ export const ContactRequestPage = () => {
-
{t(`steps.${ContactRequestFormStep[activeStep]}`)}
+
+ {t(`steps.${ContactRequestFormStep[activeStep]}`)}
+
{ContactRequestFormStep[nextStep] && (
{translateCommon('next')}:{' '}
diff --git a/frontend/packages/vkt/public/i18n/fi-FI/public.json b/frontend/packages/vkt/public/i18n/fi-FI/public.json
index e2e59e47e..c762e73b2 100644
--- a/frontend/packages/vkt/public/i18n/fi-FI/public.json
+++ b/frontend/packages/vkt/public/i18n/fi-FI/public.json
@@ -79,6 +79,7 @@
"stepper": {
"active": "Aktiivinen",
"completed": "Suoritettu",
+ "label": "Ilmoittautumisen vaiheet",
"phase": "Vaihe",
"phaseNumber": "{{current}} kautta {{total}}",
"phases": "Ilmoittautumisen vaiheet",
diff --git a/frontend/packages/vkt/public/i18n/sv-SE/public.json b/frontend/packages/vkt/public/i18n/sv-SE/public.json
index f730dbcb2..2185e83bb 100644
--- a/frontend/packages/vkt/public/i18n/sv-SE/public.json
+++ b/frontend/packages/vkt/public/i18n/sv-SE/public.json
@@ -78,6 +78,7 @@
"stepper": {
"active": "Aktiv",
"completed": "Utfört",
+ "label": "Anmälningens faser",
"phase": "Fas",
"phaseNumber": "{{current}} av {{total}}",
"phases": "Anmälningens faser",
diff --git a/frontend/packages/vkt/src/components/publicEnrollment/PublicEnrollmentPhoneGrid.tsx b/frontend/packages/vkt/src/components/publicEnrollment/PublicEnrollmentPhoneGrid.tsx
index 93792a7a4..f94dc251d 100644
--- a/frontend/packages/vkt/src/components/publicEnrollment/PublicEnrollmentPhoneGrid.tsx
+++ b/frontend/packages/vkt/src/components/publicEnrollment/PublicEnrollmentPhoneGrid.tsx
@@ -88,7 +88,7 @@ export const PublicEnrollmentPhoneGrid = ({
const getMobileStepperHeading = () => {
const heading = (
-
+
{t(`stepHeading.common.${PublicEnrollmentFormStep[activeStep]}`)}
);
diff --git a/frontend/packages/vkt/src/components/publicEnrollment/PublicEnrollmentStepper.tsx b/frontend/packages/vkt/src/components/publicEnrollment/PublicEnrollmentStepper.tsx
index 7cc156c60..71e86890d 100644
--- a/frontend/packages/vkt/src/components/publicEnrollment/PublicEnrollmentStepper.tsx
+++ b/frontend/packages/vkt/src/components/publicEnrollment/PublicEnrollmentStepper.tsx
@@ -1,4 +1,6 @@
-import { Step, StepLabel, Stepper } from '@mui/material';
+import { Step, StepLabel, Stepper, Typography } from '@mui/material';
+import { visuallyHidden } from '@mui/utils';
+import { useEffect } from 'react';
import { CircularStepper } from 'shared/components';
import { Color } from 'shared/enums';
import { useWindowProperties } from 'shared/hooks';
@@ -28,11 +30,12 @@ export const PublicEnrollmentStepper = ({
return t(`step.${PublicEnrollmentFormStep[step]}`);
};
- const getStepAriaLabel = (stepNumber: number, stepIndex: number) => {
+ const getPhaseDescription = (stepNumber: number) => {
const part = t('phaseNumber', {
- current: stepIndex + 1,
- total: steps.length,
+ current: stepNumber,
+ total: doneStepNumber,
});
+
const statusText = isStepCompleted(stepNumber) ? t('completed') : '';
const partStatus = statusText ? `${part}, ${statusText}` : part;
@@ -63,29 +66,42 @@ export const PublicEnrollmentStepper = ({
const stepValue = Math.min(activeStep, doneStepNumber);
+ const currentStep = `${t('currentStep')}: ${getDescription(stepValue)}.`;
+ const nextStep =
+ stepValue + 1 <= doneStepNumber
+ ? `${t('nextStep')}: ${getDescription(stepValue + 1)}.`
+ : '';
+
const mobileStepValue = stepValue * (100 / doneStepNumber);
const mobilePhaseText = `${stepValue}/${doneStepNumber}`;
- const mobileAriaLabel = `${t('phase')} ${mobilePhaseText}: ${t(
- `step.${PublicEnrollmentFormStep[activeStep]}`,
- )}`;
+ const mobileAriaLabel = `${getPhaseDescription(stepValue)}
+ ${currentStep}
+ ${nextStep}`;
return isPhone ? (
-
+
+
+
+ {getPhaseDescription(stepValue)}
+
+
) : (
{steps.map((step, index) => (
- {/* eslint-disable jsx-a11y/aria-role */}
- {/* eslint-enable */}
- {getDescription(step)}
+
+ {getPhaseDescription(step)}
+
+ {getDescription(step)}
))}
diff --git a/frontend/packages/yki/public/i18n/en-GB/public.json b/frontend/packages/yki/public/i18n/en-GB/public.json
index d7d6ffbd3..986ee2a7c 100644
--- a/frontend/packages/yki/public/i18n/en-GB/public.json
+++ b/frontend/packages/yki/public/i18n/en-GB/public.json
@@ -252,8 +252,10 @@
"stepper": {
"active": "Active",
"completed": "Completed",
+ "label": "Registration steps",
"paymentAborted": "Payment was cancelled",
"phase": "Phase",
+ "phaseNumber": "{{current}} of {{total}}",
"step": {
"Done": "Done",
"Identify": "Identify",
diff --git a/frontend/packages/yki/public/i18n/fi-FI/public.json b/frontend/packages/yki/public/i18n/fi-FI/public.json
index c47ec756e..116990156 100644
--- a/frontend/packages/yki/public/i18n/fi-FI/public.json
+++ b/frontend/packages/yki/public/i18n/fi-FI/public.json
@@ -252,8 +252,10 @@
"stepper": {
"active": "Aktiivinen",
"completed": "Suoritettu",
+ "label": "Ilmoittautumisen vaiheet",
"paymentAborted": "Maksu keskeytyi",
"phase": "Vaihe",
+ "phaseNumber": "{{current}} kautta {{total}}",
"step": {
"Done": "Valmis",
"Identify": "Tunnistaudu",
diff --git a/frontend/packages/yki/public/i18n/sv-SE/public.json b/frontend/packages/yki/public/i18n/sv-SE/public.json
index 146424de0..f35feb2fc 100644
--- a/frontend/packages/yki/public/i18n/sv-SE/public.json
+++ b/frontend/packages/yki/public/i18n/sv-SE/public.json
@@ -252,8 +252,10 @@
"stepper": {
"active": "Aktiv",
"completed": "Genomförd",
+ "label": "Anmälningens faser",
"paymentAborted": "Betalningen kunde inte genomföras",
"phase": "Skede",
+ "phaseNumber": "{{current}} av {{total}}",
"step": {
"Done": "Färdig",
"Identify": "Identifiera dig",
diff --git a/frontend/packages/yki/src/components/registration/PublicRegistrationStepper.tsx b/frontend/packages/yki/src/components/registration/PublicRegistrationStepper.tsx
index f089e3b6b..82bf124f6 100644
--- a/frontend/packages/yki/src/components/registration/PublicRegistrationStepper.tsx
+++ b/frontend/packages/yki/src/components/registration/PublicRegistrationStepper.tsx
@@ -1,6 +1,7 @@
-import { Step, StepLabel, Stepper } from '@mui/material';
+import { Step, StepLabel, Stepper, Typography } from '@mui/material';
+import { visuallyHidden } from '@mui/utils';
import { useSearchParams } from 'react-router-dom';
-import { CircularStepper, H2, Text } from 'shared/components';
+import { CircularStepper, Text } from 'shared/components';
import { APIResponseStatus, Color } from 'shared/enums';
import { useWindowProperties } from 'shared/hooks';
@@ -38,14 +39,6 @@ export const PublicRegistrationStepper = () => {
.map(Number)
.filter((i) => i <= doneStepNumber);
- const getStatusText = (stepNumber: number) => {
- if (stepNumber < activeStep) {
- return t('completed');
- } else if (stepNumber === activeStep) {
- return t('active');
- }
- };
-
const getDescription = (stepNumber: number) => {
return t(`step.${PublicRegistrationFormStep[stepNumber]}`);
};
@@ -60,9 +53,16 @@ export const PublicRegistrationStepper = () => {
}
};
- const getStepAriaLabel = (stepNumber: number) => {
- const part = `${stepNumber}/${stepNumbers.length}`;
- const statusText = getStatusText(stepNumber);
+ const isStepCompleted = (step: number) => {
+ return step < activeStep;
+ };
+
+ const getPhaseDescription = (stepNumber: number) => {
+ const part = t('phaseNumber', {
+ current: stepNumber,
+ total: stepNumbers.length,
+ });
+ const statusText = isStepCompleted(stepNumber) ? t('completed') : '';
const partStatus = statusText ? `${part}, ${statusText}` : part;
return `${t('phase')} ${partStatus}: ${getDescription(stepNumber)}`;
@@ -74,23 +74,29 @@ export const PublicRegistrationStepper = () => {
: Math.min(activeStep, doneStepNumber);
const mobileStepValue = stepValue * (100 / doneStepNumber);
- const mobilePhaseText = `${stepValue}/${doneStepNumber}`;
- const mobileAriaLabel = `${t('phase')} ${mobilePhaseText}: ${getDescription(
- stepValue,
- )}`;
+ const phaseText = `${stepValue}/${doneStepNumber}`;
+ const mobileAriaLabel = `${getPhaseDescription(stepValue)}`;
if (isPhone) {
return (
-
+
+
{mobileAriaLabel}
-
{getDescription(stepValue)}
+
+ {getDescription(stepValue)}
+
{!isError && {getNextInformation(stepValue)}}
@@ -99,13 +105,15 @@ export const PublicRegistrationStepper = () => {
return (
{stepNumbers.map((i) => (
{
: undefined
}
>
- {getDescription(i)}
+ {getPhaseDescription(i)}
+ {getDescription(i)}
))}
diff --git a/frontend/packages/yki/src/tests/jest/components/registration/__snapshots__/InitRegistrationPage.test.tsx.snap b/frontend/packages/yki/src/tests/jest/components/registration/__snapshots__/InitRegistrationPage.test.tsx.snap
index e0232b90d..3cdf24c04 100644
--- a/frontend/packages/yki/src/tests/jest/components/registration/__snapshots__/InitRegistrationPage.test.tsx.snap
+++ b/frontend/packages/yki/src/tests/jest/components/registration/__snapshots__/InitRegistrationPage.test.tsx.snap
@@ -644,13 +644,15 @@ exports[`InitRegistrationPage should prompt user to first identify if post-admis
className="rows gapped-xxl"
>
- step.Identify
+
+ phase phaseNumber: step.Identify
+
+
+ step.Identify
+
@@ -700,7 +711,7 @@ exports[`InitRegistrationPage should prompt user to first identify if post-admis
className="MuiStep-root MuiStep-horizontal css-1bw0nnu-MuiStep-root"
>
- step.Register
+
+ phase phaseNumber: step.Register
+
+
+ step.Register
+
@@ -750,7 +770,7 @@ exports[`InitRegistrationPage should prompt user to first identify if post-admis
className="MuiStep-root MuiStep-horizontal css-1bw0nnu-MuiStep-root"
>
- step.Payment
+
+ phase phaseNumber: step.Payment
+
+
+ step.Payment
+
@@ -800,7 +829,7 @@ exports[`InitRegistrationPage should prompt user to first identify if post-admis
className="MuiStep-root MuiStep-horizontal css-1bw0nnu-MuiStep-root"
>
- step.Done
+
+ phase phaseNumber: step.Done
+
+
+ step.Done
+
@@ -1123,13 +1161,15 @@ exports[`InitRegistrationPage should prompt user to first identify if regular ad
className="rows gapped-xxl"
>
- step.Identify
+
+ phase phaseNumber: step.Identify
+
+
+ step.Identify
+
@@ -1179,7 +1228,7 @@ exports[`InitRegistrationPage should prompt user to first identify if regular ad
className="MuiStep-root MuiStep-horizontal css-1bw0nnu-MuiStep-root"
>
- step.Register
+
+ phase phaseNumber: step.Register
+
+
+ step.Register
+
@@ -1229,7 +1287,7 @@ exports[`InitRegistrationPage should prompt user to first identify if regular ad
className="MuiStep-root MuiStep-horizontal css-1bw0nnu-MuiStep-root"
>
- step.Payment
+
+ phase phaseNumber: step.Payment
+
+
+ step.Payment
+
@@ -1279,7 +1346,7 @@ exports[`InitRegistrationPage should prompt user to first identify if regular ad
className="MuiStep-root MuiStep-horizontal css-1bw0nnu-MuiStep-root"
>
- step.Done
+
+ phase phaseNumber: step.Done
+
+
+ step.Done
+
From e816f1690400226395f8c6178c3a2866beedf9e5 Mon Sep 17 00:00:00 2001
From: Laura Ketola
Date: Mon, 16 Sep 2024 15:30:43 +0300
Subject: [PATCH 4/5] AKR:OTR:VKT:YKI(Frontend): Improve CircularStepper
accessibility [deploy]
---
frontend/packages/akr/package.json | 2 +-
.../contactRequest/ContactRequestStepper.tsx | 5 +----
frontend/packages/otr/package.json | 2 +-
frontend/packages/shared/CHANGELOG.MD | 4 ++++
frontend/packages/shared/package.json | 2 +-
.../CircularStepper/CircularStepper.tsx | 7 ++++++-
frontend/packages/vkt/package.json | 2 +-
.../publicEnrollment/PublicEnrollmentStepper.tsx | 15 +--------------
frontend/packages/yki/package.json | 2 +-
.../registration/PublicRegistrationStepper.tsx | 4 +---
.../InitRegistrationPage.test.tsx.snap | 16 ++++++++--------
frontend/yarn.lock | 10 +++++-----
12 files changed, 31 insertions(+), 40 deletions(-)
diff --git a/frontend/packages/akr/package.json b/frontend/packages/akr/package.json
index 9188583f1..8d0808214 100644
--- a/frontend/packages/akr/package.json
+++ b/frontend/packages/akr/package.json
@@ -22,6 +22,6 @@
"akr:tslint": "yarn g:tsc --pretty --noEmit"
},
"dependencies": {
- "shared": "npm:@opetushallitus/kieli-ja-kaantajatutkinnot.shared@1.11.1"
+ "shared": "npm:@opetushallitus/kieli-ja-kaantajatutkinnot.shared@1.11.2"
}
}
diff --git a/frontend/packages/akr/src/components/contactRequest/ContactRequestStepper.tsx b/frontend/packages/akr/src/components/contactRequest/ContactRequestStepper.tsx
index c3b9263ec..c343ab7a6 100644
--- a/frontend/packages/akr/src/components/contactRequest/ContactRequestStepper.tsx
+++ b/frontend/packages/akr/src/components/contactRequest/ContactRequestStepper.tsx
@@ -1,5 +1,4 @@
-import { Step, StepLabel, Stepper, Typography } from '@mui/material';
-import { visuallyHidden } from '@mui/utils';
+import { Step, StepLabel, Stepper } from '@mui/material';
import { CircularStepper } from 'shared/components';
import { useWindowProperties } from 'shared/hooks';
@@ -48,12 +47,10 @@ export const ContactRequestStepper = () => {
- {ariaLabel}
) : (
-
+
{phaseText}
+
{ariaLabel}
);
};
diff --git a/frontend/packages/vkt/package.json b/frontend/packages/vkt/package.json
index 1b2cd5fd7..bb1b526e4 100644
--- a/frontend/packages/vkt/package.json
+++ b/frontend/packages/vkt/package.json
@@ -26,6 +26,6 @@
},
"dependencies": {
"reduxjs-toolkit-persist": "^7.2.1",
- "shared": "npm:@opetushallitus/kieli-ja-kaantajatutkinnot.shared@1.11.1"
+ "shared": "npm:@opetushallitus/kieli-ja-kaantajatutkinnot.shared@1.11.2"
}
}
diff --git a/frontend/packages/vkt/src/components/publicEnrollment/PublicEnrollmentStepper.tsx b/frontend/packages/vkt/src/components/publicEnrollment/PublicEnrollmentStepper.tsx
index 71e86890d..1f5f5670c 100644
--- a/frontend/packages/vkt/src/components/publicEnrollment/PublicEnrollmentStepper.tsx
+++ b/frontend/packages/vkt/src/components/publicEnrollment/PublicEnrollmentStepper.tsx
@@ -66,24 +66,14 @@ export const PublicEnrollmentStepper = ({
const stepValue = Math.min(activeStep, doneStepNumber);
- const currentStep = `${t('currentStep')}: ${getDescription(stepValue)}.`;
- const nextStep =
- stepValue + 1 <= doneStepNumber
- ? `${t('nextStep')}: ${getDescription(stepValue + 1)}.`
- : '';
-
const mobileStepValue = stepValue * (100 / doneStepNumber);
const mobilePhaseText = `${stepValue}/${doneStepNumber}`;
- const mobileAriaLabel = `${getPhaseDescription(stepValue)}
- ${currentStep}
- ${nextStep}`;
return isPhone ? (
-
- {getPhaseDescription(stepValue)}
-
) : (
{
>
- {mobileAriaLabel}
-
+
{getDescription(stepValue)}
{!isError && {getNextInformation(stepValue)}}
diff --git a/frontend/packages/yki/src/tests/jest/components/registration/__snapshots__/InitRegistrationPage.test.tsx.snap b/frontend/packages/yki/src/tests/jest/components/registration/__snapshots__/InitRegistrationPage.test.tsx.snap
index 3cdf24c04..f9198a832 100644
--- a/frontend/packages/yki/src/tests/jest/components/registration/__snapshots__/InitRegistrationPage.test.tsx.snap
+++ b/frontend/packages/yki/src/tests/jest/components/registration/__snapshots__/InitRegistrationPage.test.tsx.snap
@@ -687,7 +687,7 @@ exports[`InitRegistrationPage should prompt user to first identify if post-admis
className="MuiStepLabel-label Mui-active css-1hv8oq8-MuiStepLabel-label"
>
phase phaseNumber: step.Identify
@@ -746,7 +746,7 @@ exports[`InitRegistrationPage should prompt user to first identify if post-admis
className="MuiStepLabel-label Mui-disabled css-1hv8oq8-MuiStepLabel-label"
>
phase phaseNumber: step.Register
@@ -805,7 +805,7 @@ exports[`InitRegistrationPage should prompt user to first identify if post-admis
className="MuiStepLabel-label Mui-disabled css-1hv8oq8-MuiStepLabel-label"
>
phase phaseNumber: step.Payment
@@ -864,7 +864,7 @@ exports[`InitRegistrationPage should prompt user to first identify if post-admis
className="MuiStepLabel-label Mui-disabled css-1hv8oq8-MuiStepLabel-label"
>
phase phaseNumber: step.Done
@@ -1204,7 +1204,7 @@ exports[`InitRegistrationPage should prompt user to first identify if regular ad
className="MuiStepLabel-label Mui-active css-1hv8oq8-MuiStepLabel-label"
>
phase phaseNumber: step.Identify
@@ -1263,7 +1263,7 @@ exports[`InitRegistrationPage should prompt user to first identify if regular ad
className="MuiStepLabel-label Mui-disabled css-1hv8oq8-MuiStepLabel-label"
>
phase phaseNumber: step.Register
@@ -1322,7 +1322,7 @@ exports[`InitRegistrationPage should prompt user to first identify if regular ad
className="MuiStepLabel-label Mui-disabled css-1hv8oq8-MuiStepLabel-label"
>
phase phaseNumber: step.Payment
@@ -1381,7 +1381,7 @@ exports[`InitRegistrationPage should prompt user to first identify if regular ad
className="MuiStepLabel-label Mui-disabled css-1hv8oq8-MuiStepLabel-label"
>
phase phaseNumber: step.Done
diff --git a/frontend/yarn.lock b/frontend/yarn.lock
index 48d990b32..b1de415d7 100644
--- a/frontend/yarn.lock
+++ b/frontend/yarn.lock
@@ -2588,7 +2588,7 @@ __metadata:
version: 0.0.0-use.local
resolution: "@opetushallitus/kieli-ja-kaantajatutkinnot.akr@workspace:packages/akr"
dependencies:
- shared: "npm:@opetushallitus/kieli-ja-kaantajatutkinnot.shared@1.11.1"
+ shared: "npm:@opetushallitus/kieli-ja-kaantajatutkinnot.shared@1.11.2"
languageName: unknown
linkType: soft
@@ -2596,7 +2596,7 @@ __metadata:
version: 0.0.0-use.local
resolution: "@opetushallitus/kieli-ja-kaantajatutkinnot.otr@workspace:packages/otr"
dependencies:
- shared: "npm:@opetushallitus/kieli-ja-kaantajatutkinnot.shared@1.11.1"
+ shared: "npm:@opetushallitus/kieli-ja-kaantajatutkinnot.shared@1.11.2"
languageName: unknown
linkType: soft
@@ -2689,7 +2689,7 @@ __metadata:
languageName: unknown
linkType: soft
-"@opetushallitus/kieli-ja-kaantajatutkinnot.shared@workspace:packages/shared, shared@npm:@opetushallitus/kieli-ja-kaantajatutkinnot.shared@1.11.1":
+"@opetushallitus/kieli-ja-kaantajatutkinnot.shared@workspace:packages/shared, shared@npm:@opetushallitus/kieli-ja-kaantajatutkinnot.shared@1.11.2":
version: 0.0.0-use.local
resolution: "@opetushallitus/kieli-ja-kaantajatutkinnot.shared@workspace:packages/shared"
languageName: unknown
@@ -2700,7 +2700,7 @@ __metadata:
resolution: "@opetushallitus/kieli-ja-kaantajatutkinnot.vkt@workspace:packages/vkt"
dependencies:
reduxjs-toolkit-persist: "npm:^7.2.1"
- shared: "npm:@opetushallitus/kieli-ja-kaantajatutkinnot.shared@1.11.1"
+ shared: "npm:@opetushallitus/kieli-ja-kaantajatutkinnot.shared@1.11.2"
languageName: unknown
linkType: soft
@@ -2709,7 +2709,7 @@ __metadata:
resolution: "@opetushallitus/kieli-ja-kaantajatutkinnot.yki@workspace:packages/yki"
dependencies:
multer: "npm:^1.4.5-lts.1"
- shared: "npm:@opetushallitus/kieli-ja-kaantajatutkinnot.shared@1.11.1"
+ shared: "npm:@opetushallitus/kieli-ja-kaantajatutkinnot.shared@1.11.2"
languageName: unknown
linkType: soft
From a48d02d2209e32fab834123df3fbe9e478facddc Mon Sep 17 00:00:00 2001
From: Laura Ketola
Date: Fri, 27 Sep 2024 10:19:44 +0300
Subject: [PATCH 5/5] VKT(Backend): Fix partially free enrollment email subject
---
.../java/fi/oph/vkt/service/PublicEnrollmentEmailService.java | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/backend/vkt/src/main/java/fi/oph/vkt/service/PublicEnrollmentEmailService.java b/backend/vkt/src/main/java/fi/oph/vkt/service/PublicEnrollmentEmailService.java
index 000362087..806fdbb18 100644
--- a/backend/vkt/src/main/java/fi/oph/vkt/service/PublicEnrollmentEmailService.java
+++ b/backend/vkt/src/main/java/fi/oph/vkt/service/PublicEnrollmentEmailService.java
@@ -245,8 +245,8 @@ public void sendPartiallyFreeEnrollmentConfirmationEmail(
final String recipientAddress = enrollment.getEmail();
final String subject = String.format(
"%s | %s",
- LocalisationUtil.translate(localeFI, "subject.enrollment-to-queue-confirmation"),
- LocalisationUtil.translate(localeSV, "subject.enrollment-to-queue-confirmation")
+ LocalisationUtil.translate(localeFI, "subject.enrollment-confirmation"),
+ LocalisationUtil.translate(localeSV, "subject.enrollment-confirmation")
);
final String body = templateRenderer.renderEnrollmentConfirmationEmailBody(templateParams);