Skip to content

Commit 10a984e

Browse files
Strehkm1212e
andauthored
Feature: Supervisor/Group payment option and minor fixes, refactoring (#312)
Co-authored-by: m1212e <14091540+m1212e@users.noreply.github.com>
1 parent 9d82987 commit 10a984e

File tree

43 files changed

+4372
-409
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+4372
-409
lines changed
Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: Lint
1+
name: Test
22

33
on:
44
pull_request:
@@ -11,4 +11,6 @@ jobs:
1111
uses: actions/checkout@v4
1212
- uses: oven-sh/setup-bun@v2
1313
- run: bun install
14+
- run: bunx svelte-kit sync
1415
- run: bun run lint
16+
- run: bun test

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,3 +35,5 @@ dev-get-data.sh
3535

3636
tailwindcss*.log
3737
*.json.backup.*
38+
39+
prisma/pothos/*

.prettierrc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
}
99
}
1010
],
11-
"plugins": ["prettier-plugin-svelte", "prettier-plugin-tailwindcss", "prettier-plugin-sort-json"],
11+
"plugins": ["prettier-plugin-tailwindcss", "prettier-plugin-svelte", "prettier-plugin-sort-json"],
1212
"printWidth": 100,
1313
"singleQuote": true,
1414
"trailingComma": "none",

.trivyignore

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,6 @@ CVE-2025-58187
99
CVE-2025-58186
1010
CVE-2025-58183
1111
CVE-2025-47912
12-
CVE-2025-64756
12+
CVE-2025-64756
13+
CVE-2025-61729
14+
CVE-2025-66020

Dockerfile

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,23 +10,19 @@ RUN apt-get install -y nodejs
1010
FROM dual AS runner
1111
WORKDIR /run
1212

13-
COPY package.json bun.lockb tsconfig.json ./
13+
COPY package.json bun.lock tsconfig.json ./
1414
RUN bun install --frozen-lockfile
1515

1616
ARG VERSION
1717
ENV PUBLIC_VERSION=$VERSION
1818
ARG SHA
1919
ENV PUBLIC_SHA=$SHA
2020

21-
COPY ./prisma ./prisma/
22-
RUN bunx prisma generate
23-
2421
COPY . .
25-
RUN bun run build
26-
RUN bun run check
22+
RUN bunx prisma generate
23+
RUN bun run build && bun run check
2724

28-
RUN mkdir /run/ephemeralData
29-
RUN chown -R bun:bun /run/ephemeralData
25+
RUN mkdir /run/ephemeralData && chown -R bun:bun /run/ephemeralData
3026

3127
USER bun
3228
ENV NODE_ENV=production

bun.lock

Lines changed: 2186 additions & 0 deletions
Large diffs are not rendered by default.

bun.lockb

-441 KB
Binary file not shown.

lefthook.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,9 @@ pre-commit:
44
format:
55
run: bunx prettier --ignore-unknown --write "{staged_files}"
66
stage_fixed: true
7+
pre-push:
8+
commands:
9+
test:
10+
run: bun test
711
lint:
812
run: bunx eslint "{staged_files}"

messages/de.json

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,7 @@
143143
"byDelegationSize": "Nach Delegationsgröße",
144144
"byRegionalGroups": "Nach Regionalgruppen",
145145
"cannotBeUndone": "Bitte bestätige die Eingabe! Die Änderung kann nicht rückgängig gemacht werden!",
146+
"cannotChangeParticipantsAfterReferenceCreated": "Die Teilnehmendenanzahl kann nicht mehr geändert werden, da bereits eine Überweisungsreferenz generiert wurde.",
146147
"certificate": "Teilnahmezertifikat",
147148
"certificateDescription": "Hier kannst du hier dein Teilnahmezertifikat herunterladen.",
148149
"certificateDescriptionNotAttended": "Du hast an der Konferenz nicht oder nicht ausreichend teilgenommen und kannst daher kein Zertifikat herunterladen. Wenn du glaubst, dass es sich dabei um einen Fehler handelt, wende dich bitte an die Teilnehmendenbetreuung.",
@@ -155,6 +156,7 @@
155156
"certificateTemplate": "Basis-PDF für das Zertifikat",
156157
"changeDelegationPreferences": "Wünsche anpassen",
157158
"changesSuccessful": "Die Änderungen wurden erfolgreich gespeichert.",
159+
"checkYourAddressAndBirthday": "Bitte überprüfe deine Adresse und dein Geburtsdatum noch einmal.",
158160
"city": "Stadt",
159161
"cleanup": "Aufräumen",
160162
"cleanupDelegationMembers": "Delegationsmitglieder aufräumen",
@@ -204,6 +206,7 @@
204206
"committeesAndAgendaItems": "Gremien und Themen",
205207
"committeesSucessfullyAssigned": "Gremien wurden erfolgreich verteilt.",
206208
"communication": "Kommunikation",
209+
"completeAddressAndBirthdayForPostalRegistration": "Dein Profil ist leider nicht vollständig. Bitte ergänze deine Adresse und dein Geburtsdatum, damit wir die postalische Anmeldung generieren können.",
207210
"completeData": "Daten vervollständigen",
208211
"completeDataExplaination": "Vielen Dank für deine Anmeldung. Bitte vervollständige deine persönlichen Daten, um deine Anmeldung abzuschließen. Danach kannst du da weitermachen, wo du eigentlich hin wolltest. Wenn du auf Speichern klickst, wirst du automatisch weitergeleitet.",
209212
"completeSignup": "Anmeldung abschließen",
@@ -310,18 +313,21 @@
310313
"deleteParticipantConfirm": "Willst du den/die Teilnehmende*n wirklich von der Konferenz entfernen?",
311314
"deleted": "Gelöscht",
312315
"description": "Beschreibung",
316+
"deselectAll": "Alle abwählen",
313317
"details": "Details",
314318
"didMyStudentsAlreadyCreateADelegation": "Haben meine Schüler*innen schon eine oder mehrere Delegationen erstellt?",
315319
"didSomeoneOfTheseAlreadyCreateADelegation": "Hat eine der Personen schon\neine Delegation angelegt?",
316320
"diet": "Ernährungsweise",
317321
"diverse": "Divers",
318322
"doIhavePeopleToApplyWith": "Habe ich Personen, mit denen\nich mich als Gruppe bewerben kann?",
323+
"documentsAreBeingPrepared": "Dokumente werden vorbereitet...",
319324
"done": "Fertig",
320325
"doneToRegister": "für Anmeldung erledigt",
321326
"download": "Download",
322327
"downloadCertificate": "Zertifikat herunterladen",
323328
"downloadCommitteeData": "Daten für das Gremium \"{committee}\" herunterladen",
324329
"downloadCurrentRegistrationData": "Aktuelle Anmeldedaten herunterladen",
330+
"downloadDocuments": "Dokumente herunterladen",
325331
"downloadParticipantData": "Daten für Gruppe \"{group}\" herunterladen",
326332
"downloadPostalDocuments": "Dokumente für postalische Anmeldung herunterladen",
327333
"downloadResults": "Alle Ergebnisse herunterladen",
@@ -338,6 +344,7 @@
338344
"enterDateOfdateReceipt": "Empfangsdatum eingeben",
339345
"enterNewSchoolName": "Neuen Schulnamen eingeben",
340346
"entryCode": "Eintrittscode",
347+
"errorGeneratingPostalRegistrationPDF": "Fehler beim Generieren des PDFs für die postalische Anmeldung",
341348
"experience": "Erfahrung",
342349
"exportFrom": "Export aus {appName}",
343350
"failedToAssignCommittees": "Etwas ist schiefgelaufen: Gremien konnten nicht verteilt werden. Bitte versuche es erneut oder wende dich an den Support.",
@@ -367,9 +374,8 @@
367374
"goToProfile": "Zur Profilverwaltung",
368375
"goToSurvey": "Zu den Umfragen",
369376
"groupPayment": "Gruppenüberweisung",
370-
"groupPaymentBtn": "Für mehrere Teilnehmende bezahlen",
371-
"groupPaymentDescription": "Hier kannst du den Teilnahmebeitrag für mehrere Teilnehmende entrichten. Auf diese Weise kann der Beitrag für Delegationsmitglieder, Betreuende und Einzelteilnehmende mit einer Überweisung bezahlt werden.",
372-
"groupPaymentNotYetImplemented": "Das Bezahlverfahren für Gruppen ist leider noch nicht fertig. Bitte wenden Sie sich für Gruppenzahlungen direkt an die Teilnehmendenbetreuung, die Ihnen händisch eine Referenz für den Verwendungszweck erstellt. Bitte teile der Teilnehmendenbetreuung mit, für welche Teilnehmende du den Beitrag zahlen möchtest.",
377+
"groupPaymentBtn": "Als Betreuer*in für Gruppe bezahlen",
378+
"groupPaymentDescription": "Hier kannst du den Teilnahmebeitrag für mehrere Teilnehmende entrichten, die zu dir als Betreuer*in gehören. Wähle dazu die Teilnehmenden aus der Liste und ggf. weitere Betreuer*innen, die zu dir gehören, aus und nutze anschließend den Überweisungshelfer unten.",
373379
"guardianAgreement": "Einwilligung Erziehungsberechtigten",
374380
"headDelegate": "Delegationsleiter*in",
375381
"helper": "Helfer",
@@ -419,6 +425,7 @@
419425
"inTheConference": "In der Konferenz",
420426
"inTheDelegation": "in der Delegation",
421427
"inYourTimeZone": "in deiner Zeitzone",
428+
"incompleteAddressOrBirthdayForPostalRegistration": "Unvollständige Adresse oder Geburtsdatum für postalische Anmeldung",
422429
"individualApplication": "Einzelbewerbung",
423430
"individualApplicationDescription": "Hier kannst du dich alleine auf einen Platz in einer besonderen Rolle – wie der Konferenzpresse – bewerben.",
424431
"individualApplicationDescription2": "Hier kannst du dich als Einzelperson für spezielle Rollen bewerben. Diese Rollen sind nicht an eine Delegation gebunden. Wenn du nicht für die Rolle genommen wirst, werden wir mit dir Kontakt aufnehmen und dir eine andere Rolle vorschlagen.",
@@ -468,6 +475,7 @@
468475
"motivation": "Motivation",
469476
"myAccount": "Mein Konto",
470477
"myConferences": "Meine Konferenzen",
478+
"myself": "ich selbst ({given_name} {family_name})",
471479
"name": "Name",
472480
"nation": "Nation",
473481
"nationOrNSA": "Nation/NSA",
@@ -501,6 +509,7 @@
501509
"noRoleApplications": "Bisher keine Rollenbewerbungen vorhanden",
502510
"noSeatsLeft": "Ausgebucht ({seats} Plätze)",
503511
"noSingleApplicationTrackingYet": "Die Statusverfolgung von Einzelbewerbungen ist derzeit noch nicht möglich.",
512+
"noSingleParticipants": "Keine Einzelteilnehmende vorhanden.",
504513
"noSingleParticipantsFound": "Keine Einzelteilnehmende gefunden.",
505514
"noStatement": "Keine Angabe",
506515
"noSupervisors": "Keine Betreuer*innen",
@@ -537,6 +546,8 @@
537546
"participantCare": "Teilnehmendenbetreuung",
538547
"participantStatus": "Teilnehmendenstatus",
539548
"participants": "Teilnehmende",
549+
"participantsNotFoundDescription": "Wenn du Beiträge für Teilnehmende überweisen willst, die nicht oben in den Listen aufgeführt sind, setze dich bitte vor Tätigung der Überweisung mit der Teilnehmendenbetreuung in Verbindung und sprich eine individuelle Lösung ab.",
550+
"participantsNotFoundTitle": "Teilnehmende sind nicht aufgeführt?",
540551
"participationCount": "Teilnahmen",
541552
"participationType": "Teilnahmeart",
542553
"password": "Passwort",
@@ -545,7 +556,7 @@
545556
"payment": "Beitragszahlung",
546557
"paymentAdminDescription": "Hier kann der Kassenwart die Zahlungsreferenzen durchsuchen und den status der Beitragszahlung von Teilnehmenden ändern.",
547558
"paymentAndPostalRegistrationDisabled": "Weder die Beitragszahlung noch die postalische Anmeldung wurden von der Teilnehmendenbetreuung freigeschaltet. Du wirst bald Informationen dazu erhalten.",
548-
"paymentDescription": "Du kannst den Teilnahmebeitrag nur für dich, gesammelt für deine Delegation oder sogar für delegationsübergreifend für beliebig viele Teilnehmende bezahlen. Betreuende können den Beitrag für mehrere Delegationen auf einmal entrichten.",
559+
"paymentDescription": "Du kannst den Teilnahmebeitrag nur für dich oder wenn du Teil einer Delegation bist gesammelt für deine Delegation bezahlen. Betreuer*innen können sogar delegationsübergreifend für viele Teilnehmende gleichzeitig bezahlen. Für dich tauchen hier nur die Möglichkeiten auf, die dir zur Verfügung stehen.",
549560
"paymentDisabled": "Die Beitragszahlung ist noch nicht freigeschaltet. Du wirst bald Infromationen dazu erhalten.",
550561
"paymentDone": "Beitragszahlung abgeschlossen",
551562
"paymentMethodNotAvailable": "Bezahlmethode nicht verfügbar",
@@ -594,8 +605,9 @@
594605
"postalRegistrationDisabled": "Die postalische Anmeldung ist noch nicht freigeschaltet. Du wirst bald Infromationen dazu erhalten.",
595606
"postalRegistrationFAQ1": "<h2>Wohin soll ich meine Dokumente versenden?</h2><p>Bitte sende deine Dokumente gründlich ausgefüllt und unterschrieben (von dir und ggf. deinen Eltern) an folgende Adresse:</p>",
596607
"postalRegistrationFAQ2": "<p>Bitte achte besonders bei Sendungen aus dem Ausland auf ausreichendes Porto.</p>",
597-
"postalRegistrationInstructions": "<p>Um an der Konferenz teilnehmen zu können, benötigen wir von dir postalisch – also die Originale per Brief verschickt (keine Kopien) – ein paar unterschriebene Dokumente. Wir stellen die Dokumente als Paket in einem PDF zum Download zur Verfügung. Enthalten sind die folgenden Dokumente:</p><ul class=\"list-disc pl-8\"><li>die <strong>verbindliche Anmeldung</strong>, der unsere Nutzungsbedingungen und Datenschutzerklärung zu Grunde legt und welche du selbst unterschreiben musst</li><li>die <strong>Einverständniserklärung aller Eltern oder Erziehungsberechtigten</strong>, die im Normalfall <strong>beide</strong> (!) Eltern unterschreiben müssens, wenn du zu Konferenzbeginn ({conferenceStart}) noch nicht volljährig bist</li><li>die <strong>Einverständniserklärung zur Bildnutzung</strong>, die du und – wenn du zur Konferenz nicht volljährig bist – zusätzlich alle Eltern bzw. Erziehungsberechtigten unterschreiben müssen</li></ul><p>Du musst sie ausdrucken (dabei kannst du die Vertragsbedingungen am Ende des Dokuments weglassen, um Papier zu sparen), alle notwendigen Felder ausfüllen und dann wie oben beschrieben unterschreiben bzw. auch deine Eltern unterschreiben lassen.</p><p>Die Nutzungsbedingungen selbst sollte gelesen, muss aber nicht ausgedruckt werden.</p><p>Leider reicht es nicht aus, die postalische Anmeldung einfach elektronisch zu unterzeichnen oder per Scan an uns zu senden. Uns wäre es auch viel lieber, wenn wir uns den Papierkram sparen könnten. Leider gibt das die rechtliche Rahmensituation in Deutschland nicht her. Daher führt an dem Versenden der Dokumente per Post kein Weg vorbei.</p>",
608+
"postalRegistrationInstructions": "<p>Um an der Konferenz teilnehmen zu können, benötigen wir von dir postalisch – also die Originale per Brief verschickt (keine Kopien) – ein paar unterschriebene Dokumente. Wir stellen die Dokumente als Paket in einem PDF zum Download zur Verfügung. Enthalten sind die folgenden Dokumente:</p><ul class=\"list-disc pl-8\"><li>die <strong>verbindliche Anmeldung</strong>, der unsere Nutzungsbedingungen und Datenschutzerklärung zu Grunde legt und welche du selbst unterschreiben musst</li><li>die <strong>Einverständniserklärung aller Eltern oder Erziehungsberechtigten</strong>, die im Normalfall <strong>beide</strong> (!) Eltern unterschreiben müssens, wenn du zu Konferenzbeginn ({conferenceStart}) noch nicht volljährig bist</li><li>die <strong>Einverständniserklärung zur Bildnutzung</strong>, die du und – wenn du zur Konferenz nicht volljährig bist – zusätzlich alle Eltern bzw. Erziehungsberechtigten unterschreiben müssen</li></ul><p>Du musst sie ausdrucken (dabei kannst du die Vertragsbedingungen am Ende des Dokuments weglassen, um Papier zu sparen), alle notwendigen Felder ausfüllen und dann wie oben beschrieben unterschreiben bzw. auch deine Eltern unterschreiben lassen.</p><p>Die Nutzungsbedingungen selbst sollte gelesen, müssen aber nicht ausgedruckt werden.</p><p>Leider reicht es nicht aus, die postalische Anmeldung einfach elektronisch zu unterzeichnen oder per Scan an uns zu senden. Uns wäre es auch viel lieber, wenn wir uns den Papierkram sparen könnten. Leider gibt das die rechtliche Rahmensituation in Deutschland nicht her. Daher führt an dem Versenden der Dokumente per Post kein Weg vorbei.</p>",
598609
"postalRegistrationNotYetImplemented": "Für die postalische Anmeldung gibt es noch keine individuelle Generierungsmöglichkeit für PDFs. Die Teilnehmendenbetreuung hat per E-Mail Informationen verschickt, wie die postalische Anmeldung dieses Jahr ablaufen soll. Bitte wende dich bei Unklarheiten an die Teilnehmendenbetreeung.",
610+
"postalRegistrationPDFGenerated": "PDF generiert. Lade herunter...",
599611
"postalTemplateContract": "Basis-PDF für den Vertrag",
600612
"postalTemplateGuardianConsent": "Basis-PDF für die Einverständniserklärung der Erziehungsberechtigten",
601613
"postalTemplateMediaConsent": "Basis-PDF für die Bildnutzungseinwilligung",
@@ -621,6 +633,7 @@
621633
"receiveJoinTeamInformation": "E-Mails mit Ausschreibungen für Teampositionen erhalten",
622634
"recievedDate": "Empfangen am",
623635
"reference": "Referenz",
636+
"referenceGeneratedSuccessfully": "Überweisungsreferenz erfolgreich generiert.",
624637
"referenceMaker": "Überweisungshelfer",
625638
"referenceMakerDescription": "Wenn du eine Überweisung für dich oder mehrere Personen tätigst, um den Beitrag zu bezahlen, musst du als erstes hier eine Referenz generieren, sodass wir die Überweisung zuordnen können. Klicke auf den Button unten um eine Referenz zu erstellen und anschließend die Überweisungsdaten zu erhalten.",
626639
"referenceMakerGeneratedDescription": "Sie können nun mit den untenstehenden Informationen fortfahren und die Zahlung vornehmen. Achten Sie darauf, alle untenstehenden Informationen exakt zu kopieren. Verwenden Sie nach Möglichkeit den Girocode (QR-Code) auf der rechten Seite oder kopieren und fügen Sie alle Informationen ein, um Rechtschreibfehler zu vermeiden.",
@@ -666,8 +679,10 @@
666679
"seatsOccupied": "von {seats} Plätzen belegt",
667680
"seedConference": "Konferenz anlegen",
668681
"selectADate": "Datum auswählen",
682+
"selectAll": "Alle auswählen",
669683
"selectAnEndDate": "End-Datum auswählen",
670684
"selectConference": "Zu welcher Konferenz möchtest du dich anmelden?",
685+
"selectParticipants": "Teilnehmende auswählen",
671686
"setAttendanceFalse": "Alle auf \"Abwesend\" setzen",
672687
"setAttendanceTrue": "Alle auf \"Anwesend\" setzen",
673688
"setDelegationPreferences": "Wünsche festlegen",
@@ -776,6 +791,7 @@
776791
"unsubscribedAll": "Du wurdest von allen Newslettern abgemeldet.",
777792
"until": "bis",
778793
"upcomingConferences": "Kommende Konferenzen",
794+
"updateProfile": "Profil aktualisieren",
779795
"userAgreement": "Verbindliche Anmeldung",
780796
"userId": "Benutzer-ID",
781797
"userNotFound": "Benutzer nicht gefunden",

0 commit comments

Comments
 (0)