Initial Commit
This commit is contained in:
63
api/anmeldung/create.php
Normal file
63
api/anmeldung/create.php
Normal file
@@ -0,0 +1,63 @@
|
||||
<?php
|
||||
global $db;
|
||||
try {
|
||||
$data = json_decode(file_get_contents("php://input"), true);
|
||||
if (!$data) { http_response_code(400); echo json_encode(['message'=>'Ungültige Daten']); exit; }
|
||||
|
||||
if (empty($data['vorname']) || empty($data['nachname']) || empty($data['email']) ||
|
||||
empty($data['betrieb_id']) || empty($data['kurs_ids']) || !is_array($data['kurs_ids'])) {
|
||||
http_response_code(400);
|
||||
echo json_encode(['message' => 'Pflichtfelder fehlen']);
|
||||
exit;
|
||||
}
|
||||
|
||||
$db->beginTransaction();
|
||||
|
||||
$stmt = $db->prepare("INSERT INTO schueler (vorname, nachname, email, geburtsdatum, betrieb_id)
|
||||
VALUES (:vorname, :nachname, :email, :geburtsdatum, :betrieb_id)");
|
||||
$stmt->execute([
|
||||
':vorname' => $data['vorname'],
|
||||
':nachname' => $data['nachname'],
|
||||
':email' => $data['email'],
|
||||
':geburtsdatum' => $data['geburtsdatum'] ?? null,
|
||||
':betrieb_id' => $data['betrieb_id']
|
||||
]);
|
||||
$schueler_id = (int)$db->lastInsertId();
|
||||
|
||||
$angemeldete_kurse = [];
|
||||
foreach ($data['kurs_ids'] as $kurs_id) {
|
||||
$check = $db->prepare("SELECT k.name, k.max_teilnehmer, COUNT(a.id) as belegt
|
||||
FROM kurse k
|
||||
LEFT JOIN anmeldungen a ON k.id = a.kurs_id
|
||||
WHERE k.id = :kurs_id
|
||||
GROUP BY k.id");
|
||||
$check->execute([':kurs_id' => $kurs_id]);
|
||||
$kurs = $check->fetch();
|
||||
|
||||
if (!$kurs) { $db->rollBack(); http_response_code(400); echo json_encode(['message'=>'Kurs nicht gefunden']); exit; }
|
||||
if ((int)$kurs['belegt'] >= (int)$kurs['max_teilnehmer']) {
|
||||
$db->rollBack(); http_response_code(400);
|
||||
echo json_encode(['message' => "Kurs '{$kurs['name']}' ist bereits voll"]);
|
||||
exit;
|
||||
}
|
||||
|
||||
$insert = $db->prepare("INSERT INTO anmeldungen (schueler_id, kurs_id, anmeldedatum)
|
||||
VALUES (:schueler_id, :kurs_id, NOW())");
|
||||
$insert->execute([':schueler_id' => $schueler_id, ':kurs_id' => $kurs_id]);
|
||||
|
||||
$angemeldete_kurse[] = $kurs['name'];
|
||||
}
|
||||
|
||||
$db->commit();
|
||||
http_response_code(201);
|
||||
echo json_encode([
|
||||
'message' => 'Anmeldung erfolgreich',
|
||||
'schueler_id' => $schueler_id,
|
||||
'angemeldete_kurse' => $angemeldete_kurse
|
||||
]);
|
||||
} catch (Exception $e) {
|
||||
if ($db->inTransaction()) { $db->rollBack(); }
|
||||
error_log("Error in anmeldung/create.php: " . $e->getMessage());
|
||||
http_response_code(500);
|
||||
echo json_encode(['message' => 'Fehler bei der Anmeldung']);
|
||||
}
|
||||
Reference in New Issue
Block a user