<?php

require_once __DIR__ . '/../../auth/verifica.php';
require_once __DIR__ . '/../../config/conexao.php';

$convite_id = intval($_POST['convite_id'] ?? 0);

if ($convite_id <= 0) {
    die('Convite invalido');
}

$stmt = $pdo->prepare("
    SELECT *
    FROM evento_convites
    WHERE id = :id
");

$stmt->execute([
    'id' => $convite_id
]);

$convite = $stmt->fetch(PDO::FETCH_ASSOC);

if (!$convite) {
    die('Convite nao encontrado');
}

try {
    $pdo->beginTransaction();

    $stmt = $pdo->prepare("
        UPDATE evento_convites
        SET
            utilizado = 'S',
            data_utilizacao = NOW()
        WHERE id = :id
          AND utilizado <> 'S'
    ");

    $stmt->execute([
        'id' => $convite_id
    ]);

    if ($stmt->rowCount() === 0) {
        $pdo->rollBack();
        die('Este convite ja foi utilizado.');
    }

    $pdo->prepare("
        INSERT INTO evento_checkin
        (
            convite_id,
            data_checkin
        )
        VALUES
        (
            :convite_id,
            NOW()
        )
    ")->execute([
        'convite_id' => $convite_id
    ]);

    $pdo->commit();
} catch (Exception $e) {
    if ($pdo->inTransaction()) {
        $pdo->rollBack();
    }

    die('Erro ao registrar check-in: ' . $e->getMessage());
}

header(
    'Location: checkin.php?token=' .
    urlencode($convite['token'])
);

exit;
