<?php
// admin/empfaenger/empfaenger_create.php

session_start();
require_once __DIR__ . '/../../includes/init.php';
require_once __DIR__ . '/../../auth/AuthController.php';

// Authentifizierung
$auth = new AuthController();
if (!$auth->isLoggedIn()) {
    header('Location: ' . $adminLoginPath);
    exit;
}

// Seitentitel und DB
$title = 'Empfänger anlegen';
$db = Database::getInstance();
$error = '';

try {
    $tags = $db->query("SELECT id, name FROM tags ORDER BY name ASC")->fetchAll();
    ErrorLogger::logSqlSuccess("Tags für Empfänger geladen");

    $lists = $db->query("SELECT id, name FROM lists ORDER BY name ASC")->fetchAll();
    ErrorLogger::logSqlSuccess("Listen für Empfänger geladen");

    $customFields = $db->query("SELECT * FROM custom_field_definitions ORDER BY created_at ASC")->fetchAll();
    ErrorLogger::logSqlSuccess("Benutzerdefinierte Felder geladen");
} catch (Exception $e) {
    ErrorLogger::logSqlError("Fehler beim Laden der Feldauswahl: " . $e->getMessage());
    $tags = $lists = $customFields = [];
}

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $anrede = $_POST['anrede'] ?? '';
    $vorname = $_POST['vorname'] ?? '';
    $nachname = $_POST['nachname'] ?? '';
    $email = $_POST['email'] ?? '';
    $status = $_POST['status'] ?? 'active';
    $notizen = $_POST['notizen'] ?? '';
    $selectedTags = $_POST['tags'] ?? [];
    $listId = $_POST['liste_id'] ?? 0;

    try {
        $stmt = $db->prepare("INSERT INTO recipients (anrede, vorname, nachname, email, status, notizen, created_at) VALUES (?, ?, ?, ?, ?, ?, NOW())");
        $stmt->execute([$anrede, $vorname, $nachname, $email, $status, $notizen]);
        $recipientId = $db->lastInsertId();
        ErrorLogger::logSqlSuccess("Empfänger erstellt: ID $recipientId ($email)");

        foreach ($selectedTags as $tagId) {
            $db->prepare("INSERT INTO recipient_tags (recipient_id, tag_id) VALUES (?, ?)")->execute([$recipientId, $tagId]);
        }

        foreach ($customFields as $field) {
            $key = $field['field_key'];
            $val = $_POST['custom'][$key] ?? '';
            if ($val !== '') {
                $db->prepare("INSERT INTO recipient_custom_fields (recipient_id, field_key, field_value) VALUES (?, ?, ?)")
                   ->execute([$recipientId, $key, $val]);
            }
        }

        $pauseToken = bin2hex(random_bytes(32));
        $db->prepare("INSERT INTO recipient_lists (recipient_id, list_id, subscribed_at, pause_token) VALUES (?, ?, NOW(), ?)")
           ->execute([$recipientId, $listId, $pauseToken]);

        ErrorLogger::log("Empfänger $recipientId in Liste $listId eingefügt", 'INFO');
        header('Location: empfaenger.php?success=created');
        exit;

    } catch (Exception $e) {
        ErrorLogger::logSqlError("Empfänger-Erstellung fehlgeschlagen: " . $e->getMessage());
        $error = "Fehler beim Anlegen: " . $e->getMessage();
    }
}

$pageHelp = renderPageHelp([
    'sections' => [
        [
            'heading' => 'Was macht diese Seite?',
            'items' => [
                'Hier legst du einen einzelnen Empfänger manuell an.',
                'Der Eintrag wird direkt einer Liste zugeordnet und kann zusätzliche Tags und Felder erhalten.',
            ],
        ],
        [
            'heading' => 'Was muss ich eingeben oder auswählen?',
            'items' => [
                'Trage mindestens die E-Mail-Adresse ein und wähle die Ziel-Liste aus.',
                'Ergänze bei Bedarf Name, Status, Tags, Notizen und Zusatzfelder.',
            ],
        ],
        [
            'heading' => 'Worauf sollte ich achten?',
            'items' => [
                'Wähle den Status passend zum tatsächlichen Stand des Empfängers.',
                'Prüfe vor dem Speichern, ob Liste und Tags fachlich richtig gesetzt sind.',
            ],
        ],
    ],
]);

$fieldTooltips = [
    '[name="anrede"]' => 'Optionale persönliche Anrede für spätere Personalisierung.',
    '[name="vorname"]' => 'Vorname des Empfängers.',
    '[name="nachname"]' => 'Nachname des Empfängers.',
    '[name="email"]' => 'E-Mail-Adresse des Empfängers.',
    '[name="status"]' => 'Aktueller Status für Versand und Verarbeitung.',
    '[name="liste_id"]' => 'Liste, in die der Empfänger sofort eingetragen wird.',
    '[name="notizen"]' => 'Interne Notizen zu diesem Empfänger.',
    '[name="tags[]"]' => 'Mehrere Tags zur Kennzeichnung oder Segmentierung auswählen.',
    '[name^="custom["]' => 'Zusatzwert für ein benutzerdefiniertes Empfängerfeld.',
];

ob_start();
?>
<div class="page-header h2">
  ➕ Empfänger &raquo; Neu anlegen
</div>

<?= $pageHelp ?>

<?php if ($error): ?>
<div class="alert alert-danger">❌ <?= htmlspecialchars($error) ?></div>
<?php endif; ?>

<form method="post" class="row g-3">
  <div class="col-md-2">
    <label class="form-label">Anrede</label>
    <select name="anrede" class="form-select">
      <option value="">-</option>
      <option value="Herr">Herr</option>
      <option value="Frau">Frau</option>
      <option value="Divers">Divers</option>
    </select>
  </div>
  <div class="col-md-5">
    <label class="form-label">Vorname</label>
    <input type="text" name="vorname" class="form-control">
  </div>
  <div class="col-md-5">
    <label class="form-label">Nachname</label>
    <input type="text" name="nachname" class="form-control">
  </div>
  <div class="col-md-6">
    <label class="form-label">E-Mail</label>
    <input type="email" name="email" class="form-control" required>
  </div>
  <div class="col-md-3">
    <label class="form-label">Status</label>
    <select name="status" class="form-select">
      <option value="active">Aktiv</option>
      <option value="unsubscribed">Abgemeldet</option>
      <option value="bounced">Unzustellbar</option>
    </select>
  </div>
  <div class="col-md-3">
    <label class="form-label">Liste</label>
    <select name="liste_id" class="form-select" required>
      <option value="">-- Liste auswählen --</option>
      <?php foreach ($lists as $list): ?>
        <option value="<?= $list['id'] ?>"><?= htmlspecialchars($list['name']) ?></option>
      <?php endforeach; ?>
    </select>
  </div>

  <div class="col-md-12">
    <label class="form-label">Notizen</label>
    <textarea name="notizen" class="form-control" rows="3"></textarea>
  </div>
  <div class="col-md-12">
    <label class="form-label">Tags</label>
    <select name="tags[]" class="form-select" multiple>
      <?php foreach ($tags as $tag): ?>
        <option value="<?= $tag['id'] ?>"><?= htmlspecialchars($tag['name']) ?></option>
      <?php endforeach; ?>
    </select>
    <small class="form-text text-muted">Mehrere Tags mit Strg / Cmd auswählen</small>
  </div>

  <h5 class="mt-4">Zusätzliche Felder</h5>
  <?php foreach ($customFields as $field): ?>
    <div class="col-md-6">
      <label class="form-label"><?= htmlspecialchars($field['label']) ?></label>
      <input type="text" name="custom[<?= $field['field_key'] ?>]" class="form-control">
    </div>
  <?php endforeach; ?>

  <div class="col-12">
    <button type="submit" class="btn btn-primary">Speichern</button>
    <a href="empfaenger.php" class="btn btn-secondary">Abbrechen</a>
  </div>
</form>
<?php
$pageContent = ob_get_clean();
include __DIR__ . '/../template.php';
?>
