<?php
require_once __DIR__ . "/../../config/db.php";
if (session_status() === PHP_SESSION_NONE) session_start();

if (empty($_SESSION['user']['id'])) {
    header("Location: /eagle_client_istanbulcups/login.php");
    exit;
}

$utilisateur_id = (int)$_SESSION['user']['id'];
$caisse_id = (int)($_POST['caisse_id'] ?? 0);

if (!$caisse_id) {
    die("Caisse invalide.");
}

/**
 * 🔍 Chercher une session caisse ouverte
 */
$stmt = $conn->prepare("
    SELECT id, utilisateur_id
    FROM sessions_caisse
    WHERE caisse_id = ?
      AND statut = 'ouverte'
    LIMIT 1
");
$stmt->execute([$caisse_id]);
$sessionExistante = $stmt->fetch(PDO::FETCH_ASSOC);

/**
 * ⛔ Caisse ouverte par un autre utilisateur
 */
if ($sessionExistante && $sessionExistante['utilisateur_id'] !== $utilisateur_id) {
    die("Cette caisse est déjà ouverte par un autre utilisateur.");
}

/**
 * 🔐 Charger le PIN utilisateur
 */
$stmt = $conn->prepare("
    SELECT pos_pin, pos_pin_tentatives, pos_pin_blocage
    FROM utilisateurs
    WHERE id = ?
");
$stmt->execute([$utilisateur_id]);
$user = $stmt->fetch(PDO::FETCH_ASSOC);

$error = null;

/**
 * 🔑 Validation PIN
 */
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['pin'])) {

    // Blocage sécurité
    if ($user['pos_pin_blocage'] && strtotime($user['pos_pin_blocage']) > time()) {
        $error = "PIN bloqué temporairement";

    } elseif (!$user['pos_pin'] || !password_verify($_POST['pin'], $user['pos_pin'])) {

        $tentatives = (int)$user['pos_pin_tentatives'] + 1;
        $blocage = null;

        if ($tentatives >= 3) {
            $blocage = date('Y-m-d H:i:s', strtotime('+15 minutes'));
            $tentatives = 0;
        }

        $stmt = $conn->prepare("
            UPDATE utilisateurs
            SET pos_pin_tentatives = ?, pos_pin_blocage = ?
            WHERE id = ?
        ");
        $stmt->execute([$tentatives, $blocage, $utilisateur_id]);

        $error = "Code PIN incorrect";

    } else {

        /**
         * 🔁 REPRISE de session existante
         */
        if ($sessionExistante) {
            $_SESSION['pos_caisse_id']     = $caisse_id;
            $_SESSION['session_caisse_id'] = $sessionExistante['id'];
            $_SESSION['pos_last_activity'] = time();

            header("Location: /eagle_client_istanbulcups/index.php?page=pos");
            exit;
        }

        /**
         * ➕ NOUVELLE session caisse
         */
        $solde_ouverture = floatval($_POST['solde_ouverture'] ?? 0);

        $stmt = $conn->prepare("
            INSERT INTO sessions_caisse
            (caisse_id, utilisateur_id, date_ouverture, solde_ouverture, statut)
            VALUES (?, ?, NOW(), ?, 'ouverte')
        ");
        $stmt->execute([$caisse_id, $utilisateur_id, $solde_ouverture]);

        $_SESSION['pos_caisse_id']     = $caisse_id;
        $_SESSION['session_caisse_id'] = $conn->lastInsertId();
        $_SESSION['pos_last_activity'] = time();

        header("Location: /eagle_client_istanbulcups/index.php?page=pos");
        exit;
    }
}
?>

<?php include __DIR__ . '/../../includes/layout.php'; ?>

<div class="container mt-5">
    <div class="card shadow mx-auto" style="max-width:400px">
        <div class="card-header bg-dark text-white text-center">
            🔐 PIN & ouverture de caisse
        </div>

        <form method="POST">
            <input type="hidden" name="caisse_id" value="<?= (int)$caisse_id ?>">

            <div class="card-body text-center">
                <?php if (!empty($error)): ?>
                    <div class="alert alert-danger"><?= htmlspecialchars($error) ?></div>
                <?php endif; ?>

                <input type="password"
                       name="pin"
                       inputmode="numeric"
                       pattern="[0-9]*"
                       maxlength="6"
                       class="form-control text-center fs-3 mb-3"
                       placeholder="••••"
                       required>

                <?php if (!$sessionExistante): ?>
                    <input type="number"
                           name="solde_ouverture"
                           step="0.01"
                           min="0"
                           class="form-control text-center"
                           placeholder="Solde d'ouverture"
                           required>
                <?php endif; ?>
            </div>

            <div class="card-footer">
                <button class="btn btn-success w-100">Valider</button>
            </div>
        </form>
    </div>
</div>

<?php include __DIR__ . '/../../includes/layout_end.php'; ?>