Initial Commit
This commit is contained in:
56
api/berichte/teilnehmer_betrieb.php
Normal file
56
api/berichte/teilnehmer_betrieb.php
Normal file
@@ -0,0 +1,56 @@
|
||||
<?php
|
||||
global $db;
|
||||
try {
|
||||
$query = "SELECT
|
||||
b.id as betrieb_id,
|
||||
b.name as betrieb_name,
|
||||
b.adresse,
|
||||
COUNT(DISTINCT s.id) as anzahl_schueler,
|
||||
COUNT(a.id) as anzahl_anmeldungen
|
||||
FROM betriebe b
|
||||
LEFT JOIN schueler s ON b.id = s.betrieb_id
|
||||
LEFT JOIN anmeldungen a ON s.id = a.schueler_id
|
||||
GROUP BY b.id
|
||||
ORDER BY b.name";
|
||||
$stmt = $db->prepare($query);
|
||||
$stmt->execute();
|
||||
|
||||
$bericht = [];
|
||||
while ($row = $stmt->fetch()) {
|
||||
$detail_query = "SELECT
|
||||
s.vorname,
|
||||
s.nachname,
|
||||
GROUP_CONCAT(k.name SEPARATOR ', ') as angemeldete_kurse
|
||||
FROM schueler s
|
||||
LEFT JOIN anmeldungen a ON s.id = a.schueler_id
|
||||
LEFT JOIN kurse k ON a.kurs_id = k.id
|
||||
WHERE s.betrieb_id = :betrieb_id
|
||||
GROUP BY s.id";
|
||||
$detail_stmt = $db->prepare($detail_query);
|
||||
$detail_stmt->execute([':betrieb_id' => $row['betrieb_id']]);
|
||||
|
||||
$schueler = [];
|
||||
while ($detail = $detail_stmt->fetch()) {
|
||||
$schueler[] = [
|
||||
'vorname' => $detail['vorname'],
|
||||
'nachname' => $detail['nachname'],
|
||||
'angemeldete_kurse' => $detail['angemeldete_kurse'] ?? 'Keine Kurse'
|
||||
];
|
||||
}
|
||||
|
||||
$bericht[] = [
|
||||
'betrieb_id' => (int)$row['betrieb_id'],
|
||||
'betrieb_name' => $row['betrieb_name'],
|
||||
'adresse' => $row['adresse'],
|
||||
'anzahl_schueler' => (int)$row['anzahl_schueler'],
|
||||
'anzahl_anmeldungen' => (int)$row['anzahl_anmeldungen'],
|
||||
'schueler' => $schueler
|
||||
];
|
||||
}
|
||||
|
||||
echo json_encode($bericht);
|
||||
} catch (Exception $e) {
|
||||
error_log("Error in berichte/teilnehmer_betrieb.php: " . $e->getMessage());
|
||||
http_response_code(500);
|
||||
echo json_encode(['message' => 'Fehler beim Erstellen des Berichts']);
|
||||
}
|
||||
Reference in New Issue
Block a user