<?php
header('Content-Type: application/json');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST, OPTIONS');
header('Access-Control-Allow-Headers: Content-Type');

if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
    exit(0);
}

require_once 'config.php';

try {
    // Récupérer les données JSON
    $input = json_decode(file_get_contents('php://input'), true);

    if (!$input || !isset($input['code_utilisateur']) || !isset($input['session_id'])) {
        echo json_encode([
            'success' => false,
            'message' => 'Paramètres manquants',
            'is_session_open' => 'N'
        ]);
        exit;
    }

    $code_utilisateur = trim($input['code_utilisateur']);
    $session_id = trim($input['session_id']);

    // Vérifier le statut de session de l'utilisateur dans la table Utilisateurs
    $stmt = $pdo->prepare("
        SELECT is_session_open, session_id, session_timestamp
        FROM Utilisateurs
        WHERE code_utilisateur = ?
    ");
    $stmt->execute([$code_utilisateur]);
    $user = $stmt->fetch(PDO::FETCH_ASSOC);

    if ($user) {
        $is_session_open = $user['is_session_open'];
        $stored_session_id = $user['session_id'];

        // Vérifier si la session n'a pas expiré (timeout de 8 heures)
        $sessionExpired = false;
        if ($user['session_timestamp']) {
            $sessionTime = strtotime($user['session_timestamp']);
            $currentTime = time();
            $sessionDuration = 8 * 60 * 60; // 8 heures en secondes

            if (($currentTime - $sessionTime) > $sessionDuration) {
                $sessionExpired = true;
                // Fermer automatiquement la session expirée
                $updateStmt = $pdo->prepare("
                    UPDATE Utilisateurs
                    SET is_session_open = 'N', session_id = NULL, session_timestamp = NULL
                    WHERE code_utilisateur = ?
                ");
                $updateStmt->execute([$code_utilisateur]);
            }
        }

        if ($sessionExpired) {
            echo json_encode([
                'success' => false,
                'message' => 'Session expirée',
                'is_session_open' => 'N'
            ]);
        } elseif ($is_session_open === 'O' && $stored_session_id === $session_id) {
            // Session valide
            echo json_encode([
                'success' => true,
                'message' => 'Session valide',
                'is_session_open' => 'O'
            ]);
        } elseif ($is_session_open === 'O' && $stored_session_id !== $session_id) {
            // Session ouverte mais avec un autre ID
            echo json_encode([
                'success' => false,
                'message' => 'Session déjà ouverte sur un autre appareil',
                'is_session_open' => 'O'
            ]);
        } else {
            // Session fermée
            echo json_encode([
                'success' => true,
                'message' => 'Session fermée',
                'is_session_open' => 'N'
            ]);
        }
    } else {
        // Utilisateur non trouvé
        echo json_encode([
            'success' => false,
            'message' => 'Utilisateur non trouvé',
            'is_session_open' => 'N'
        ]);
    }

} catch (Exception $e) {
    error_log("Erreur checkSession: " . $e->getMessage());
    echo json_encode([
        'success' => false,
        'message' => 'Erreur serveur: ' . $e->getMessage(),
        'is_session_open' => 'N'
    ]);
}
?>
