<?php
/**
 * Tilgo - Registrierung
 * Verarbeitet die User-Registrierung mit sicheren Passwort-Hash
 */
require_once __DIR__ . '/config.php';

$errors = [];
$success = false;

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // CSRF prüfen
    if (!validateCSRFToken($_POST['csrf_token'] ?? '')) {
        $errors[] = "Sicherheitsfehler. Bitte laden Sie die Seite neu und versuchen es erneut.";
    } else {
        // Daten holen
        $email = trim($_POST['email'] ?? '');
        $password = $_POST['password'] ?? '';
        $full_name = trim($_POST['full_name'] ?? '');
        $street = trim($_POST['street'] ?? '');
        $postal = trim($_POST['postal'] ?? '');
        $city = trim($_POST['city'] ?? '');
        $plan_type = $_POST['plan_type'] ?? 'individual';
        
        // Validation
        if (empty($email) || !filter_var($email, FILTER_VALIDATE_EMAIL)) {
            $errors[] = "Bitte geben Sie eine gültige E-Mail-Adresse ein.";
        }
        if (empty($password) || strlen($password) < 8) {
            $errors[] = "Das Passwort muss mindestens 8 Zeichen lang sein.";
        }
        if (empty($full_name)) {
            $errors[] = "Bitte geben Sie Ihren vollständigen Namen an.";
        }
        if (empty($street)) {
            $errors[] = "Bitte geben Sie Ihre Straße an.";
        }
        if (empty($postal) || !preg_match('/^\d{5}$/', $postal)) {
            $errors[] = "Bitte geben Sie eine gültige 5-stellige PLZ an.";
        }
        if (empty($city)) {
            $errors[] = "Bitte geben Sie Ihre Stadt an.";
        }
        if (!in_array($plan_type, ['individual', 'family'])) {
            $plan_type = 'individual';
        }
        
        // AGB-Check
        if (empty($_POST['terms'])) {
            $errors[] = "Sie müssen den AGB und der Datenschutzerklärung zustimmen.";
        }
        
        // Keine Errors? Dann User anlegen
        if (empty($errors)) {
            try {
                $pdo = getDBConnection();
                
                // Prüfen ob Email schon existiert
                $stmt = $pdo->prepare("SELECT id FROM tilgo_users WHERE email = ?");
                $stmt->execute([$email]);
                if ($stmt->fetch()) {
                    $errors[] = "Diese E-Mail-Adresse ist bereits registriert.";
                } else {
                    // Passwort hashen
                    $password_hash = password_hash($password, PASSWORD_DEFAULT);
                    
                    // User anlegen
                    $stmt = $pdo->prepare("INSERT INTO tilgo_users (email, password_hash, full_name, street, postal, city, plan_type) 
                                          VALUES (?, ?, ?, ?, ?, ?, ?)");
                    $stmt->execute([$email, $password_hash, $full_name, $street, $postal, $city, $plan_type]);
                    
                    // Auto-Login nach Registrierung
                    $_SESSION['user_id'] = $pdo->lastInsertId();
                    $_SESSION['user_email'] = $email;
                    session_regenerate_id(true);
                    
                    // Weiter zum Dashboard
                    redirect('/dashboard.php?welcome=1');
                }
            } catch (PDOException $e) {
                error_log("Registration Error: " . $e->getMessage());
                $errors[] = "Ein interner Fehler ist aufgetreten. Bitte versuchen Sie es später erneut.";
            }
        }
    }
}

// CSRF Token generieren
$csrf_token = generateCSRFToken();
?>
<!DOCTYPE html>
<html lang="de">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Registrierung | Tilgo</title>
    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link href="https://fonts.googleapis.com/css2?family=Sora:wght@400;600;700;800&display=swap" rel="stylesheet">
    <style>
        :root { --blue: #1e3a8a; --green: #059669; --ink: #0f172a; --text: #334155; --muted: #64748b; --bg: #f8fafc; --line: #e2e8f0; --error: #dc2626; --success: #059669; }
        * { box-sizing: border-box; margin: 0; padding: 0; }
        body { font-family: "Sora", sans-serif; color: var(--text); background: linear-gradient(135deg, rgba(30,58,138,0.08) 0%, rgba(5,150,105,0.06) 100%); min-height: 100vh; padding: 2rem; }
        .container { max-width: 500px; margin: 0 auto; }
        .logo { text-align: center; margin-bottom: 2rem; }
        .logo a { font-size: 2.5rem; font-weight: 800; color: var(--blue); text-decoration: none; }
        .card { background: #fff; border-radius: 20px; padding: 2.5rem; box-shadow: 0 25px 50px -12px rgba(0,0,0,0.15); }
        h1 { font-size: 1.75rem; font-weight: 800; color: var(--ink); margin-bottom: 0.5rem; text-align: center; }
        .subtitle { text-align: center; color: var(--muted); margin-bottom: 2rem; }
        .form-group { margin-bottom: 1.25rem; }
        label { display: block; font-weight: 600; color: var(--ink); margin-bottom: 0.5rem; font-size: 0.9rem; }
        input[type="text"], input[type="email"], input[type="password"] { width: 100%; padding: 0.875rem 1rem; border: 2px solid var(--line); border-radius: 12px; font-size: 1rem; font-family: inherit; transition: border-color 0.2s; }
        input:focus { outline: none; border-color: var(--blue); }
        .form-row { display: grid; grid-template-columns: 1fr 2fr; gap: 1rem; }
        .checkbox-row { display: flex; align-items: flex-start; gap: 0.5rem; font-size: 0.9rem; }
        .checkbox-row input { margin-top: 0.2rem; }
        .btn { width: 100%; background: linear-gradient(135deg, var(--blue), #1e40af); color: #fff; border: none; padding: 1rem; border-radius: 12px; font-size: 1rem; font-weight: 700; cursor: pointer; margin-top: 1rem; }
        .btn:hover { transform: translateY(-2px); box-shadow: 0 15px 30px rgba(30,58,138,0.25); }
        .error-box { background: #fef2f2; border: 1px solid var(--error); border-radius: 12px; padding: 1rem; margin-bottom: 1.5rem; color: var(--error); }
        .error-box ul { margin: 0.5rem 0 0 1.5rem; }
        .success-box { background: #f0fdf4; border: 1px solid var(--success); border-radius: 12px; padding: 1rem; margin-bottom: 1.5rem; color: var(--success); }
        .back-link { display: block; text-align: center; margin-top: 1.5rem; color: var(--muted); text-decoration: none; }
        .back-link:hover { color: var(--blue); }
        a { color: var(--blue); }
    </style>
</head>
<body>
    <div class="container">
        <div class="logo"><a href="/">Tilgo</a></div>
        <div class="card">
            <h1>Konto erstellen</h1>
            <p class="subtitle">In wenigen Minuten starten Sie mit automatischer Datenlöschung.</p>
            
            <?php if (!empty($errors)): ?>
            <div class="error-box">
                <strong>Bitte beheben Sie folgende Fehler:</strong>
                <ul><?php foreach ($errors as $error): ?><li><?= e($error) ?></li><?php endforeach; ?></ul>
            </div>
            <?php endif; ?>
            
            <form method="POST" action="/register.php">
                <input type="hidden" name="csrf_token" value="<?= e($csrf_token) ?>">
                
                <div class="form-group">
                    <label for="full_name">Vollständiger Name</label>
                    <input type="text" id="full_name" name="full_name" value="<?= e($_POST['full_name'] ?? '') ?>" required>
                </div>
                
                <div class="form-group">
                    <label for="email">E-Mail-Adresse</label>
                    <input type="email" id="email" name="email" value="<?= e($_POST['email'] ?? '') ?>" required>
                </div>
                
                <div class="form-group">
                    <label for="password">Passwort (mind. 8 Zeichen)</label>
                    <input type="password" id="password" name="password" minlength="8" required>
                </div>
                
                <div class="form-group">
                    <label for="street">Straße und Hausnummer</label>
                    <input type="text" id="street" name="street" value="<?= e($_POST['street'] ?? '') ?>" required>
                </div>
                
                <div class="form-row">
                    <div class="form-group">
                        <label for="postal">PLZ</label>
                        <input type="text" id="postal" name="postal" pattern="[0-9]{5}" value="<?= e($_POST['postal'] ?? '') ?>" required>
                    </div>
                    <div class="form-group">
                        <label for="city">Stadt</label>
                        <input type="text" id="city" name="city" value="<?= e($_POST['city'] ?? '') ?>" required>
                    </div>
                </div>
                
                <div class="form-group">
                    <label for="plan_type">Tarif</label>
                    <select id="plan_type" name="plan_type" style="width:100%;padding:0.875rem 1rem;border:2px solid var(--line);border-radius:12px;font-size:1rem;">
                        <option value="individual" <?= ($_POST['plan_type'] ?? '') === 'family' ? '' : 'selected' ?>>Individual (€6,99/Monat)</option>
                        <option value="family" <?= ($_POST['plan_type'] ?? '') === 'family' ? 'selected' : '' ?>>Family bis 5 Personen (€11,99/Monat)</option>
                    </select>
                </div>
                
                <label class="checkbox-row">
                    <input type="checkbox" id="terms" name="terms" required>
                    <span>Ich akzeptiere die <a href="/agb.html" target="_blank">AGB</a> und die <a href="/datenschutz.html" target="_blank">Datenschutzerklärung</a>.</span>
                </label>
                
                <button type="submit" class="btn">Jetzt registrieren</button>
            </form>
            
            <a href="/login.html" class="back-link">Bereits registriert? Zum Login</a>
        </div>
    </div>
</body>
</html>
