<?php
// /admin/index.php - С CSRF ЗАЩИТОЙ
session_start();
if (!($_SESSION['admin_logged_in'] ?? false)) {
    header('Location: login.php');
    exit;
}

$config = require __DIR__ . '/../config.php';

// Генерация CSRF токена
if (!isset($_SESSION['csrf_token'])) {
    $_SESSION['csrf_token'] = bin2hex(random_bytes(32));
}

$pdo = new PDO(
    "mysql:host={$config['db_host']};dbname={$config['db_name']};charset=utf8mb4",
    $config['db_user'],
    $config['db_pass'],
    [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]
);

// Обработка сохранения с CSRF проверкой
if ($_POST['action'] ?? '' === 'update') {
    if ($_POST['csrf_token'] !== ($_SESSION['csrf_token'] ?? '')) {
        die('Ошибка безопасности CSRF');
    }
    
    $id = (int)$_POST['id'];
    $raw = [
        'pizza'  => $_POST['pizza_raw'],
        'oil'    => $_POST['oil_raw'],
        'media'  => $_POST['media_raw'],
        'navy'   => $_POST['navy_raw'],
        'vip'    => $_POST['vip_raw'],
        'gov'    => $_POST['gov_raw'],
        'gold'   => $_POST['gold_raw'],
        'cyber'  => $_POST['cyber_raw'],
        'energy' => $_POST['energy_raw'],
        'social' => $_POST['social_raw'],
    ];

    // Пересчёт score и индекса (как в collector.php)
    $score = [
        'pizza'  => max(0, min(10, ($raw['pizza'] - 1) / 4.2 * 10)),
        'oil'    => max(0, min(10, ($raw['oil'] - 50) / 450 * 10)),
        'media'  => max(0, min(10, ($raw['media'] - 500) / 9500 * 10)),
        'navy'   => max(0, min(10, ($raw['navy'] - 1) / 4 * 10)),
        'vip'    => max(0, min(10, ($raw['vip'] - 5) / 15 * 10)),
        'gov'    => max(0, min(10, ($raw['gov'] - 1) / 3 * 10)),
        'gold'   => max(0, min(10, ($raw['gold'] - 30) / 170 * 10)),
        'cyber'  => max(0, min(10, ($raw['cyber'] - 1) / 3 * 10)),
        'energy' => max(0, min(10, ($raw['energy'] - 50) / 250 * 10)),
        'social' => max(0, min(10, ($raw['social'] - 1) / 3 * 10)),
    ];

    $weights = [0.221, 0.177, 0.133, 0.106, 0.088, 0.071, 0.062, 0.044, 0.053, 0.044];
    $index = 0;
    $score_list = array_values($score);
    foreach ($score_list as $i => $s) {
        $index += $s * $weights[$i];
    }
    $index = max(0, min(10, $index));
    $aal = $index < 2 ? 5 : ($index < 3.5 ? 4 : ($index < 5 ? 3 : ($index < 7 ? 2 : 1)));

    // Обновление записи
    $stmt = $pdo->prepare("
        UPDATE readings SET
          pizza_raw=?, oil_raw=?, media_raw=?, navy_raw=?, vip_raw=?,
          gov_raw=?, gold_raw=?, cyber_raw=?, energy_raw=?, social_raw=?,
          pizza_score=?, oil_score=?, media_score=?, navy_score=?, vip_score=?,
          gov_score=?, gold_score=?, cyber_score=?, energy_score=?, social_score=?,
          security_index=?, aal_level=?, is_manual=1, manual_reason=?, updated_at=NOW()
        WHERE id=?
    ");
    $stmt->execute(array_merge(
        array_values($raw),
        array_values($score),
        [$index, $aal, $_POST['manual_reason'] ?? '', $id]
    ));

    header('Location: index.php?saved=1');
    exit;
}

// Получаем последнюю запись
$record = $pdo->query("SELECT * FROM readings ORDER BY timestamp DESC LIMIT 1")->fetch();
?>
<!DOCTYPE html>
<html>
<head>
    <title>Админка — Avatiah Security Index</title>
    <meta charset="utf-8">
    <style>
        body { font-family: sans-serif; padding: 20px; background: #f9f9f9; }
        .form-group { margin: 15px 0; }
        label { display: inline-block; width: 250px; font-weight: bold; }
        input { padding: 8px; width: 120px; border: 1px solid #ddd; border-radius: 4px; }
        button { padding: 12px 24px; background: #e74c3c; color: white; border: none; border-radius: 5px; cursor: pointer; font-size: 16px; }
        button:hover { background: #c0392b; }
        .info { background: #fff; padding: 20px; margin: 20px 0; border-radius: 8px; box-shadow: 0 2px 5px rgba(0,0,0,0.1); }
        .success { background: #d4edda; color: #155724; border: 1px solid #c3e6cb; }
    </style>
</head>
<body>
    <h1>🛠️ Административная панель</h1>

    <?php if (isset($_GET['saved'])): ?>
        <div class="info success">✅ Данные успешно обновлены!</div>
    <?php endif; ?>

    <div class="info">
        <strong>Последняя запись:</strong> <?= htmlspecialchars($record['timestamp']) ?>
        <?php if ($record['is_manual']): ?>
            <span style="color:#e74c3c;">(ручная корректировка)</span>
        <?php endif; ?>
    </div>

    <form method="POST">
        <input type="hidden" name="action" value="update">
        <input type="hidden" name="id" value="<?= $record['id'] ?>">
        <input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">

        <?php
        $fields = [
            'pizza_raw' => '🍕 Индекс пиццы (x)',
            'oil_raw' => '🛢️ Волатильность нефти (%)',
            'media_raw' => '📰 Медиа-упоминания/час',
            'navy_raw' => '🚢 Группы ВМС США',
            'vip_raw' => '✈️ Дипломатические рейсы',
            'gov_raw' => '🏛️ События правительства',
            'gold_raw' => '💎 Волатильность золота (%)',
            'cyber_raw' => '🔒 Киберугрозы (1-5)',
            'energy_raw' => '⚡ Энергетика (%)',
            'social_raw' => '📱 Соцсети (1-5)',
        ];
        foreach ($fields as $key => $label): ?>
            <div class="form-group">
                <label><?= $label ?>:</label>
                <input type="number" step="0.1" name="<?= $key ?>" value="<?= htmlspecialchars($record[$key]) ?>" required>
            </div>
        <?php endforeach; ?>

        <div class="form-group">
            <label>📝 Причина ручной правки:</label>
            <input type="text" name="manual_reason" value="<?= htmlspecialchars($record['manual_reason'] ?? '') ?>" style="width:400px;" placeholder="Объясните причину корректировки">
        </div>

        <button type="submit">💾 Сохранить изменения</button>
        <a href="../" style="margin-left:20px; color: #3498db;">← Вернуться на сайт</a>
    </form>
</body>
</html>