feat: answer received form submissions by mail

This commit is contained in:
fromme committed 2026-09-24 16:35:31 +02:00
1 parent 19364df2db
commit aa728ddc99
22 files changed
+974 -9

No files matched your search

+73
View File
@@ -51,6 +51,74 @@ texts:
Bitte wende dich bei Rückfragen an [email protected].
application_form_received:
label: 'Eingegangenes Formular - Eingangsbestätigung'
# Only bookingUrl, which is not caller-supplied like the others: it comes from
# APPLICATION_FORM_BOOKING_URL and is substituted into the Markdown before it is parsed,
# which is what lets it be a link target (see App\Email\EmailTextRenderer). The mailer
# also passes firstName, lastName and formLabel, so an admin who adds one of those tokens
# by hand still gets it substituted - they are just not advertised, because the wording
# greets from Köln rather than by name and EmailTextCatalogTest insists every declared
# placeholder appears in the default text.
placeholders: ['bookingUrl', 'season']
subject: 'Einladung zum Team-Infocall'
headline: 'Hallo aus Köln,'
body: |-
vielen Dank für deine Bewerbung für die kommende Wintersaison {season}!
Die Teamplanung der Wintersaison läuft wieder an und um herauszufinden, wie du zu E&P Reisen passt, laden wir dich hiermit zum Team-Infocall ein.
Beim Team-Infocall erhältst du allgemeine Infos über E&P Reisen, welche Reisekonzepte und Destinationen wir anbieten und welche Jobs es dort gibt. Natürlich hast du auch die Gelegenheit offene Fragen zu stellen.
Der Termin wird ca. eine Stunde in Anspruch nehmen und mit mehreren Teilnehmenden als Videocall über Teams stattfinden. Nach der Buchung des Termins erhältst du alle Infos, um an dem Call teilzunehmen, das geht auch als Gast über einen Webbrowser.
Bitte buche dir einen passenden Termin unter [diesem Buchungslink]({bookingUrl}). Bis zu Beginn der Saison werden noch weitere Termine für eine Teilnahme online gestellt.
Folge uns doch gerne schon auf Instagram unter team_ep_reisen für kurzfristige Einsätze, relevante News und coolen Ski- und Boardcontent.
Vielleicht hast du auch Lust im Sommer schon für uns zu arbeiten? Schreibe uns gerne in einer separaten Mail 🙂
Wir freuen uns darauf, dich kennenzulernen und hoffen, dich bald in unserem Team begrüßen zu können!
application_form_follow_up:
label: 'Eingegangenes Formular - Nachfassen'
# No placeholders, same as the receipt: the wording greets from Köln, not by name, and
# EmailTextCatalogTest insists every declared placeholder appears in the default text.
#
# This wording goes stale by design - it names concrete call dates and a Bookings outage.
# It is the fallback for a fresh database only: the moment somebody edits the mail under
# /admin/system/email-text, that override wins and this block stops being sent. Maintain
# it there, not here.
placeholders: []
subject: 'Termine für die Wochenteam-Calls'
headline: 'Hallo aus Köln,'
body: |-
schön, dass du bei unserem Digitalen Infotreffen dabei warst! Ich hoffe wir konnten bereits einige deiner Fragen beantworten. Aufgrund der Fülle an Informationen habe ich ein kleines [Handout](https://PLATZHALTER-HANDOUT) zusammengestellt, damit du die wichtigsten Infos nochmal auf einen Blick hast.
Nun geht es für dich in die 2. Runde! Wir wollen dich besser kennenlernen.
## Wochenteam
Leider gibt es aktuell technische Probleme mit Bookings, sodass ihr momentan keine Termine für die Wochenteam-Calls einsehen oder buchen könnt. Deshalb organisieren wir die Anmeldung vorübergehend manuell. Hier findest du alle Termine für die Wochenteam-Calls. Wenn du an einem der Termine teilnehmen möchtest, antworte bitte einfach auf diese E-Mail und teile uns deinen Wunschtermin mit. Wir melden dich dann manuell an und senden dir rechtzeitig die Zugangsdaten für den entsprechenden Call zu. **Wichtig:** Sobald das Wochenteam-Seminar vollständig besetzt ist, werden keine weiteren Wochenteam-Calls mehr angeboten.
Folgende Termine sind möglich:
- Mi 30.9 14:30-15:15Uhr
- Fr 9.10 9:30-10:15Uhr
- Fr 16.10 14:30-15:15Uhr
- Mi 21.10 14:30-15:15Uhr
- Fr 30.10 11-11:45Uhr
## Saisonpersonal
Interessierst du dich dafür als Saisonmitarbeiter\*in (die ganze Saison) in den Bergen mitzuarbeiten? Wir haben unser Saisonpersonal für diesen Winter bereits vollständig besetzt. Bei Interesse kannst du uns gerne eine E-Mail mit deinem Interesse und dem gewünschten Zeitraum schicken – falls es durch kurzfristige Änderungen, wie z. B. Verletzungen, zu einer Ausnahme kommt, würden wir darauf zurückkommen. Um dir sicherer noch in diesem Winter einen Platz in unserem Team und in den Bergen zu ermöglichen, empfehlen wir dir, Teil unseres Wochenteams zu werden.
Wenn du in der Zwischenzeit eine Frage hast, dann kannst du dich gerne per E-Mail oder telefonisch melden! Wir freuen uns darauf, dich besser kennenzulernen. 😊
Schöne Grüße aus Köln
Eure Personalabteilung
application_rejected:
label: 'Bewerbung abgelehnt'
placeholders: ['destination']
@@ -147,6 +215,11 @@ texts:
# Descriptions shown next to the form fields. They describe the placeholder itself rather
# than any one mail, so they are shared: a name means the same thing wherever it appears.
placeholders:
bookingUrl: 'Buchungslink für den Team-Infocall, kommt aus der Konfiguration (APPLICATION_FORM_BOOKING_URL)'
season: 'Kommende Saison in Kurzform, z. B. "26/27" - wird automatisch eingesetzt'
firstName: 'Vorname der Person, die das Formular abgeschickt hat'
lastName: 'Nachname der Person, die das Formular abgeschickt hat'
formLabel: 'Name des Formulars, z. B. "Bewerbungsformular"'
destination: 'Einsatz, z. B. "12.01.25 - 19.01.25 Skireise"'
specialAgreements: 'Zusätzliche Absprachen zum Einsatz'
contractUploadDeadlineDays: 'Frist zum Hochladen des Honorarvertrags in Tagen'
+9
View File
@@ -40,6 +40,11 @@ parameters:
# rejects every request instead of letting them through.
application_form_api_key: '%env(string:APPLICATION_FORM_API_KEY)%'
# Booking link the application form receipt mail invites the applicant to. A deployment
# value rather than part of the wording, so a new booking system does not need an edit in
# every stage's mail text.
application_form_booking_url: '%env(string:APPLICATION_FORM_BOOKING_URL)%'
default_email_from: '%env(APP_DEFAULT_EMAIL_FROM)%'
default_email_to: '%env(APP_DEFAULT_EMAIL_TO)%'
@@ -325,6 +330,10 @@ services:
# Its own log channel, not the audit one bound by default: the audit channel writes a row
# to the log table through App\Logging\DatabaseHandler, which records what staff did here.
App\Email\EmailTextRenderer:
arguments:
$bookingUrl: '%application_form_booking_url%'
App\Security\AccessToken\ApiKeyTokenHandler:
arguments:
$apiKey: '%application_form_api_key%'