query($sql, [$categoryId]); $adverts = $db->fetchAll($result); // Füge Benutzerinformationen zu jeder Anzeige hinzu foreach ($adverts as &$advert) { if (isset($advert['user_id'])) { $user = Users::getUserById($advert['user_id']); if ($user) { $advert['user_name'] = $user['name']; $advert['user_email'] = $user['email']; $advert['user_telephone'] = $user['telephone']; } } } return $adverts; } // Holt alle Anzeigen sortiert nach Erstellungsdatum // Gibt ein Array aller Anzeigen zurück public static function getAllAdverts(): array { $db = new Database(); $sql = "SELECT id, name, description, date, user_id FROM advert ORDER BY date DESC"; $result = $db->query($sql); $adverts = $db->fetchAll($result); // Füge Benutzerinformationen zu jeder Anzeige hinzu foreach ($adverts as &$advert) { if (isset($advert['user_id'])) { $user = Users::getUserById($advert['user_id']); if ($user) { $advert['user_name'] = $user['name']; $advert['user_email'] = $user['email']; $advert['user_telephone'] = $user['telephone']; } } } return $adverts; } // Erstellt eine neue Anzeige in der Datenbank // Diese Methode erstellt eine neue Anzeige und verknüpft sie mit einem Benutzer und Kategorien. // Die Benutzerverwaltung wird von der Users-Klasse übernommen. // // $name: Der Name der Anzeige // $description: Die Beschreibung der Anzeige // $categoryIds: Array von Kategorie-IDs, die mit der Anzeige verknüpft werden sollen // $userName: Der Name des Benutzers // $userEmail: Die E-Mail des Benutzers // $userTelephone: Die Telefonnummer des Benutzers // Gibt die ID der erstellten Anzeige zurück oder false bei einem Fehler public static function createAdvert( string $name, string $description, array $categoryIds, string $userName, string $userEmail, string $userTelephone ): int|false { $db = new Database(); try { // Prüfe, ob Benutzer mit der angegebenen E-Mail existiert $userId = Users::getUserIdByEmail($userEmail); if ($userId === null) { // Benutzer existiert nicht, erstelle einen neuen Benutzer $userId = Users::createUser($userName, $userEmail, $userTelephone); } // Erstelle die Anzeige $sql = "INSERT INTO advert (name, description, date, user_id) VALUES (?, ?, NOW(), ?)"; $db->query($sql, [$name, $description, $userId]); // Hole die ID der neu erstellten Anzeige $sql = "SELECT MAX(id) as id FROM advert WHERE name = ? AND user_id = ?"; $result = $db->query($sql, [$name, $userId]); $advert = $db->fetchOne($result); $advertId = $advert['id']; // Verknüpfe die Anzeige mit Kategorien foreach ($categoryIds as $categoryId) { $sql = "INSERT INTO advert_category (advert_id, category_id) VALUES (?, ?)"; $db->query($sql, [$advertId, $categoryId]); } return $advertId; } catch (Exception $e) { // Fehler protokollieren oder nach Bedarf behandeln return false; } } }