<?php
/**
 * SAUVEGARDE AUTO DES RÉPONSES
 * Appelé en AJAX depuis passer_evaluation.php
 */

header('Content-Type: application/json');

define('APP_ROOT', dirname(__DIR__));
require_once __DIR__ . '/config/config.php';
require_once __DIR__ . '/config/database.php';

// session_start(); // Géré par config/session.php

// Vérification authentification
if (!isLoggedIn() || !isEleve()) {
    echo json_encode(['success' => false, 'error' => 'Non authentifié']);
    exit();
}

// $auth = new Auth(); // MIGRÉ vers SessionManager
$user = currentUser();
$db = Database::getInstance()->getConnection();

// Récupérer les données POST
$id_tentative = isset($_POST['id_tentative']) ? (int)$_POST['id_tentative'] : 0;
$id_evaluation = isset($_POST['id_evaluation']) ? (int)$_POST['id_evaluation'] : 0;

if ($id_tentative <= 0) {
    echo json_encode(['success' => false, 'error' => 'Tentative invalide']);
    exit();
}

// Vérifier que la tentative appartient bien à l'élève
$stmt = $db->prepare("
    SELECT * FROM tentatives_eleves 
    WHERE id_tentative = ? 
    AND id_eleve = ? 
    AND statut = 'en_cours'
");
$stmt->execute([$id_tentative, $user['id_utilisateur']]);
$tentative = $stmt->fetch(PDO::FETCH_ASSOC);

if (!$tentative) {
    echo json_encode(['success' => false, 'error' => 'Tentative introuvable ou terminée']);
    exit();
}

// Extraire les réponses du POST
$reponses = [];
foreach ($_POST as $key => $value) {
    if (strpos($key, 'reponse_') === 0) {
        $id_question = str_replace('reponse_', '', $key);
        $reponses[$id_question] = $value;
    }
}

// Sauvegarder dans la BDD
try {
    $stmt = $db->prepare("
        UPDATE tentatives_eleves 
        SET reponses_json = ?, 
            derniere_sauvegarde = NOW()
        WHERE id_tentative = ?
    ");
    
    $reponses_json = json_encode($reponses, JSON_UNESCAPED_UNICODE);
    $stmt->execute([$reponses_json, $id_tentative]);
    
    echo json_encode([
        'success' => true, 
        'message' => 'Réponses sauvegardées',
        'nb_reponses' => count($reponses),
        'timestamp' => date('H:i:s')
    ]);
    
} catch (Exception $e) {
    error_log("Erreur sauvegarde réponses: " . $e->getMessage());
    echo json_encode([
        'success' => false, 
        'error' => 'Erreur lors de la sauvegarde'
    ]);
}
?>
