diff --git a/prisma/schema.prisma b/prisma/schema.prisma
index 23a0deb..963d672 100644
--- a/prisma/schema.prisma
+++ b/prisma/schema.prisma
@@ -33,10 +33,11 @@ model Dienststelle {
}
model Praktikumszeitraum {
- id Int @id @default(autoincrement())
- bezeichnung String @unique // z. B. "Frühjahr 2025"
+ id Int @id @default(autoincrement())
+ bezeichnung String @unique // z. B. "Frühjahr 2025"
startDatum DateTime
endDatum DateTime
+ anmeldungen Anmeldung[] @relation("PraktikumszeitraumAnmeldungen")
}
enum Status {
@@ -46,25 +47,42 @@ enum Status {
}
model Anmeldung {
- id Int @id @default(autoincrement())
- anrede String
- vorname String
- nachname String
- email String
- noteDeutsch String?
- noteMathe String?
+ id Int @id @default(autoincrement())
+ anrede String
+ vorname String
+ nachname String
+ geburtsdatum String // Neu hinzugefügt
+ strasse String // Neu hinzugefügt
+ hausnummer String // Neu hinzugefügt
+ ort String // Neu hinzugefügt
+ plz String // Neu hinzugefügt
+ telefon String // Neu hinzugefügt
+ email String
+ schulart String // Neu hinzugefügt
+ schulklasse String? // Neu hinzugefügt
+ noteDeutsch Int // Geändert von String zu Int
+ noteMathe Int // Geändert von String zu Int
sozialverhalten String?
- status Status @default(OFFEN)
- zugewiesenId Int? // ID der zugewiesenen Dienststelle
- zugewiesen Dienststelle? @relation("Zugewiesen", fields: [zugewiesenId], references: [id])
- wunsch1Id Int?
- wunsch1 Dienststelle? @relation("Wunsch1", fields: [wunsch1Id], references: [id])
- wunsch2Id Int?
- wunsch2 Dienststelle? @relation("Wunsch2", fields: [wunsch2Id], references: [id])
- wunsch3Id Int?
- wunsch3 Dienststelle? @relation("Wunsch3", fields: [wunsch3Id], references: [id])
- timestamp BigInt
- pdfs PdfDatei[]
+ motivation String? // Neu hinzugefügt
+ alter Int? // Neu hinzugefügt für Altersvalidierung
+ status Status @default(OFFEN)
+
+ // Praktikumszeitraum Relation
+ praktikumId Int?
+ praktikum Praktikumszeitraum? @relation("PraktikumszeitraumAnmeldungen", fields: [praktikumId], references: [id])
+
+ // Dienststellen Relationen
+ zugewiesenId Int?
+ zugewiesen Dienststelle? @relation("Zugewiesen", fields: [zugewiesenId], references: [id])
+ wunsch1Id Int?
+ wunsch1 Dienststelle? @relation("Wunsch1", fields: [wunsch1Id], references: [id])
+ wunsch2Id Int?
+ wunsch2 Dienststelle? @relation("Wunsch2", fields: [wunsch2Id], references: [id])
+ wunsch3Id Int?
+ wunsch3 Dienststelle? @relation("Wunsch3", fields: [wunsch3Id], references: [id])
+
+ timestamp DateTime @default(now())
+ pdfs PdfDatei[]
@@map("anmeldungen")
}
diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte
index c2e4afa..1d9c8a7 100644
--- a/src/routes/+page.svelte
+++ b/src/routes/+page.svelte
@@ -33,6 +33,43 @@
let ablehnungHinweis = '';
let showAblehnungModal = false;
let alter = '';
+ $: {
+ if (geburtsdatum && zeitraum && zeitraeume.length > 0) {
+ const gewaehlterZeitraum = zeitraeume.find(z => z.id == zeitraum);
+ if (gewaehlterZeitraum) {
+ const geburt = new Date(geburtsdatum);
+ const praktikumStart = new Date(gewaehlterZeitraum.startDatum);
+
+ let altersberechnung = praktikumStart.getFullYear() - geburt.getFullYear();
+ const monthDiff = praktikumStart.getMonth() - geburt.getMonth();
+
+ if (monthDiff < 0 || (monthDiff === 0 && praktikumStart.getDate() < geburt.getDate())) {
+ altersberechnung--;
+ }
+ alter = altersberechnung.toString();
+ }
+ }
+ }
+
+ $: filteredDienststellen = (dienststellen ?? []).filter(d => {
+ if (d.plaetze <= 0) return false;
+
+ // PK Mitte nur anzeigen wenn mindestens 18 Jahre alt
+ if (d.name.includes('PK Mitte') || d.name.toLowerCase().includes('polizeikommissariat mitte')) {
+ return parseInt(alter) >= 18;
+ }
+ return true;
+ }
+ );
+
+ $: filteredZeitraeume = (zeitraeume ?? []).filter(zeitraum => {
+ const heute = new Date();
+ const startDatum = new Date(zeitraum.startDatum);
+
+ // Nur Zeiträume anzeigen, die noch nicht gestartet haben
+ return startDatum > heute;
+ });
+
let startDatum = '';
$: hideSozialVerhalten =
@@ -107,11 +144,19 @@
data.append('noteMathe', noteMathe);
data.append('sozialverhalten', sozialverhalten);
data.append('schulklasse', schulklasse);
+ data.append('alter', alter);
for (const pdf of pdfDateien) {
data.append('pdfs', pdf);
}
+ const altersWert = parseInt(alter);
+ if (isNaN(altersWert) || altersWert < 14) {
+ ablehnungHinweis = 'Du musst mindestens 14 Jahre alt sein, um ein Praktikum beginnen zu können. Bewirb dich gern erneut, wenn du das Mindestalter erreicht hast.';
+ showAblehnungModal = true;
+ return;
+ }
+
const deutsch = parseInt(noteDeutsch);
const mathe = parseInt(noteMathe);
@@ -216,7 +261,7 @@