Skip to content

Commit

Permalink
Merge pull request #1872 from digitalfabrik/1865-custom-application-c…
Browse files Browse the repository at this point in the history
…reated-confirmation-mail

1865: Custom application created confirmation mail
  • Loading branch information
f1sh1918 authored Jan 27, 2025
2 parents 1d19749 + aa4621f commit ee262ff
Show file tree
Hide file tree
Showing 3 changed files with 71 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ class EakApplicationMutationService {

if (isPreVerified) {
applicationHandler.setApplicationVerificationToPreVerifiedNow(verificationEntities)
applicationHandler.sendPreVerifiedApplicationMails(applicationEntity, verificationEntities, dataFetcherResultBuilder)
} else {
applicationHandler.sendApplicationMails(applicationEntity, verificationEntities, dataFetcherResultBuilder)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,30 @@ class ApplicationHandler(
Mailer.sendNotificationForApplicationMails(project, backendConfig, projectConfig, regionId)
}

fun sendPreVerifiedApplicationMails(
applicationEntity: ApplicationEntity,
verificationEntities: List<ApplicationVerificationEntity>,
dataFetcherResultBuilder: DataFetcherResult.Builder<Boolean>
) {
val backendConfig = context.backendConfiguration
val projectConfig = backendConfig.projects.first { it.id == project }

for (applicationVerification in verificationEntities) {
try {
Mailer.sendApplicationMailToContactPerson(
backendConfig,
projectConfig,
applicationVerification.contactName,
application.personalData,
applicationEntity.accessKey
)
} catch (exception: MailNotSentException) {
dataFetcherResultBuilder.error(exception.toError())
}
}
Mailer.sendNotificationForApplicationMails(project, backendConfig, projectConfig, regionId)
}

fun validateAttachmentTypes() {
val allowedContentTypes = setOf("application/pdf", "image/png", "image/jpeg")
val maxFileSizeBytes = 5 * 1000 * 1000
Expand Down
62 changes: 46 additions & 16 deletions backend/src/main/kotlin/app/ehrenamtskarte/backend/mail/Mailer.kt
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,16 @@ import java.net.URLEncoder
import java.nio.charset.StandardCharsets

object Mailer {
private const val DO_NOT_ANSWER_MESSAGE =
"Dies ist eine automatisierte Nachricht. Bitte antworten Sie nicht auf diese Email."
private fun EmailBody.finalInformationParagraph(projectConfig: ProjectConfig) {
p {
+"Bitte beachten Sie, dass dies eine automatisierte Nachricht ist. Antworten auf diese E-Mail werden nicht gelesen."
br()
br()
+"Mit freundlichen Grüßen"
br()
+"- ${projectConfig.administrationName}"
}
}

private fun EmailBody.adjustNotificationsParagraph(projectConfig: ProjectConfig) {
p {
Expand Down Expand Up @@ -98,8 +106,7 @@ object Mailer {
p { +"ein neuer Antrag liegt in ${projectConfig.administrationName} vor." }
viewApplicationsParagraph(projectConfig)
adjustNotificationsParagraph(projectConfig)
p { +DO_NOT_ANSWER_MESSAGE }
p { +"- ${projectConfig.administrationName}" }
finalInformationParagraph(projectConfig)
}

for (recipient: AdministratorEntity in recipients) {
Expand Down Expand Up @@ -129,8 +136,7 @@ object Mailer {
p { +"ein Antrag wurde verifiziert." }
viewApplicationsParagraph(projectConfig)
adjustNotificationsParagraph(projectConfig)
p { +DO_NOT_ANSWER_MESSAGE }
p { +"- ${projectConfig.administrationName}" }
finalInformationParagraph(projectConfig)
}

for (recipient: AdministratorEntity in recipients) {
Expand Down Expand Up @@ -169,8 +175,7 @@ object Mailer {
br()
link(verificationLink)
}
p { +DO_NOT_ANSWER_MESSAGE }
p { +"- ${projectConfig.administrationName}" }
finalInformationParagraph(projectConfig)
}

sendMail(
Expand Down Expand Up @@ -199,8 +204,36 @@ object Mailer {
link(URL("${projectConfig.administrationBaseUrl}/antrag-einsehen/${urlEncode(accessKey)}"))
}
p { +"Bei Rückfragen zum Bearbeitungsstand wenden Sie sich bitte an Ihr örtliches Landratsamt bzw. die Verwaltung Ihrer kreisfreien Stadt." }
p { +DO_NOT_ANSWER_MESSAGE }
p { +"- ${projectConfig.administrationName}" }
finalInformationParagraph(projectConfig)
}
sendMail(
backendConfig,
projectConfig.smtp,
projectConfig.administrationName,
personalData.emailAddress.email,
subject,
message
)
}

fun sendApplicationMailToContactPerson(
backendConfig: BackendConfiguration,
projectConfig: ProjectConfig,
contactPerson: String,
personalData: PersonalData,
accessKey: String
) {
val subject = "Antrag erfolgreich eingereicht"
val message = emailBody {
p { +"Sehr geehrte/r $contactPerson," }
p { +"Ihr Antrag auf die Bayerische Ehrenamtskarte für ${personalData.forenames.shortText} ${personalData.surname.shortText} wurde erfolgreich eingereicht." }
p {
+"Den aktuellen Status Ihres Antrags können sie jederzeit unter folgendem Link einsehen. Dort haben Sie auch die Möglichkeit, Ihren Antrag bei Bedarf zurückzuziehen:"
br()
link(URL("${projectConfig.administrationBaseUrl}/antrag-einsehen/${urlEncode(accessKey)}"))
}
p { +"Bei Rückfragen wenden Sie sich bitte direkt an Ihr zuständiges Landratsamt oder die Verwaltung Ihrer kreisfreien Stadt." }
finalInformationParagraph(projectConfig)
}
sendMail(
backendConfig,
Expand Down Expand Up @@ -230,8 +263,7 @@ object Mailer {
link(URL("${projectConfig.administrationBaseUrl}/reset-password?email=$encodedRecipient&token=$encodedResetKey"))
}
p { +"Dieser Link ist 24 Stunden gültig." }
p { +DO_NOT_ANSWER_MESSAGE }
p { +"- ${projectConfig.administrationName}" }
finalInformationParagraph(projectConfig)
}

sendMail(
Expand Down Expand Up @@ -266,8 +298,7 @@ object Mailer {
link(URL(passwordResetLink))
}
p { +"Dieser Link ist 24 Stunden gültig." }
p { +DO_NOT_ANSWER_MESSAGE }
p { +"- ${projectConfig.administrationName}" }
finalInformationParagraph(projectConfig)
}

sendMail(
Expand Down Expand Up @@ -304,8 +335,7 @@ object Mailer {
+"Hinweis: Die Vorab-Aktivierung wird nicht von allen Endgeräten unterstützt. "
+"Falls der Vorgang fehlschlägt, warten Sie bitte auf das offizielle Schreiben."
}
p { +DO_NOT_ANSWER_MESSAGE }
p { +"- ${projectConfig.administrationName}" }
finalInformationParagraph(projectConfig)
}

sendMail(
Expand Down

0 comments on commit ee262ff

Please sign in to comment.