<?php
require_once './model/conf.php';
require_once './scripts/lib/phpqrcode/qrlib.php';
require_once './model/class/Emprunt.php';
require_once './model/class/Ouvrage.php';
require_once './scripts/lib/auth_roles.php';
// + ton bootstrap d’app (session_start, autoload, Bdd, etc.)
if(!isset($_SESSION)){
    session_start();
}


$id  = isset($_GET['id']) ? (int)$_GET['id'] : 0;
$sig = $_GET['sig'] ?? '';

if ($id <= 0 || !$sig || !Ouvrage::verifySignature($id, $sig)) {
    http_response_code(400);
    exit('Lien invalide.');
}

if (!isset($_SESSION['user'])) {
    $return = urlencode($_SERVER['REQUEST_URI']);
    header('Location: index.php?uc=login&return='.$return);
    exit;
}
$currentUserId = $_SESSION['user']->getId_utilisateur();
$userRole      = getUserRoleFromSession();

// Fetch ouvrage
$db = Bdd::getInstance()->getConnection();
$st = $db->prepare("SELECT * FROM ouvrage WHERE Id_ouvrage = :id");
$st->execute([':id'=>$id]);
$ouvrage = $st->fetch(PDO::FETCH_ASSOC);
if (!$ouvrage) {
    http_response_code(404);
    exit('Ouvrage introuvable.');
}

// Emprunt actif ?
$active = Emprunt::getActiveByOuvrage($id);

// Si dispo, on enregistre l’emprunt pour l’utilisateur courant
if (!$active) {
    Emprunt::create($id, $currentUserId);
    $active = Emprunt::getActiveByOuvrage($id);
    $message = "Emprunt enregistré.";
    $status = "success";
} else {
    $message = "Ouvrage déjà emprunté.";
    $status = "warning";
}

// Peut-on rendre ?
$canReturn = false;
$activeBorrowerId = null;
if ($active) {
    // On a besoin du Id_utilisateur qui a emprunté
    $activeBorrowerId = (int)$active->getId_utilisateur();
    $canReturn = canReturnEmprunt($userRole, (int)$currentUserId, (int)$activeBorrowerId);
}

// Rendu
include __DIR__.'/../vue/navlogin.php';
?>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
<div class="container my-4">
  <div class="row justify-content-center">
    <div class="col-12 col-md-8 col-lg-6">
      <div class="card shadow-sm">
        <div class="card-header"><h5 class="mb-0">Scan — Ludothèque</h5></div>
        <div class="card-body">
          <div class="alert alert-<?php echo $status==='success'?'success':'warning'; ?>">
            <?php echo htmlspecialchars($message, ENT_QUOTES, 'UTF-8'); ?>
          </div>

          <ul class="list-group mb-3">
            <li class="list-group-item"><strong>Titre :</strong> <?php echo htmlspecialchars($ouvrage['titre'] ?? '-', ENT_QUOTES, 'UTF-8'); ?></li>
            <li class="list-group-item"><strong>N° :</strong> <?php echo htmlspecialchars($ouvrage['numero'] ?? '-', ENT_QUOTES, 'UTF-8'); ?></li>
            <li class="list-group-item"><strong>État :</strong> <?php echo htmlspecialchars($ouvrage['etat'] ?? '-', ENT_QUOTES, 'UTF-8'); ?></li>
          </ul>

          <?php if ($active): ?>
            <p class="mb-2"><strong>Emprunt en cours</strong> depuis le
              <?php echo htmlspecialchars($active->getDate_emprunt() ?? '-', ENT_QUOTES, 'UTF-8'); ?></p>

            <?php if ($canReturn): ?>
              <form action="index.php?uc=return_emprunt" method="post" class="mt-3">
                <input type="hidden" name="Id_emprunt" value="<?php echo (int)$active->getId_emprunt(); ?>">
                <button type="submit" class="btn btn-danger">Rendre</button>
              </form>
            <?php else: ?>
              <div class="text-muted">Seul l’emprunteur ou un compte autorisé (admin/ca/bureau) peut rendre.</div>
            <?php endif; ?>
          <?php else: ?>
            <p class="mb-0 text-success">Cet ouvrage vient d’être emprunté par vous.</p>
          <?php endif; ?>

          <div class="d-flex justify-content-end mt-3">
            <a class="btn btn-outline-secondary" href="index.php?uc=loged/ludotheque">Retour à la liste</a>
          </div>
        </div>
      </div>
    </div>
  </div>
</div>
