<?php

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

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

$responsavel = trim($_POST['responsavel'] ?? '');

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

$valor_unitario = floatval($_POST['valor_unitario'] ?? 0);

$valor_total = $quantidade * $valor_unitario;

$pago = $_POST['pago'] ?? 'N';

$observacao = trim($_POST['observacao'] ?? '');

$usuario_id = intval($_SESSION['usuario_id']);

if (
    $evento_id <= 0 ||
    $aluno_id <= 0 ||
    $quantidade <= 0
){
    die('Dados inválidos');
}

try {

    $pdo->beginTransaction();

    /*
    ========================
    GRAVA VENDA
    ========================
    */

    $sql = "

    INSERT INTO evento_vendas
    (

        evento_id,
        aluno_id,
        responsavel,
        quantidade,
        valor_unitario,
        valor_total,
        pago,
        observacao,
        usuario_id

    )

    VALUES

    (

        :evento_id,
        :aluno_id,
        :responsavel,
        :quantidade,
        :valor_unitario,
        :valor_total,
        :pago,
        :observacao,
        :usuario_id

    )

    ";

    $stmt = $pdo->prepare($sql);

    $stmt->execute([

        'evento_id'      => $evento_id,
        'aluno_id'       => $aluno_id,
        'responsavel'    => $responsavel,
        'quantidade'     => $quantidade,
        'valor_unitario' => $valor_unitario,
        'valor_total'    => $valor_total,
        'pago'           => $pago,
        'observacao'     => $observacao,
        'usuario_id'     => $usuario_id

    ]);

    $venda_id = $pdo->lastInsertId();

    /*
    ========================
    ULTIMO NUMERO GERAL
    ========================
    */

    $ultimo = $pdo->query("
        SELECT MAX(numero_geral) AS ultimo
        FROM evento_convites
    ")->fetch(PDO::FETCH_ASSOC);

    $numero_geral = intval($ultimo['ultimo']);

    /*
    ========================
    GERA CONVITES
    ========================
    */

    for($i = 1; $i <= $quantidade; $i++){

        $numero_geral++;

        $codigo =
            'EV' .
            str_pad(
                $numero_geral,
                6,
                '0',
                STR_PAD_LEFT
            );

        $token =
            bin2hex(
                random_bytes(16)
            );

        $sqlConvite = "

        INSERT INTO evento_convites
        (

            evento_id,
            venda_id,
            aluno_id,

            numero_familia,
            numero_geral,

            codigo,
            token

        )

        VALUES

        (

            :evento_id,
            :venda_id,
            :aluno_id,

            :numero_familia,
            :numero_geral,

            :codigo,
            :token

        )

        ";

        $stmtConvite =
            $pdo->prepare(
                $sqlConvite
            );

        $stmtConvite->execute([

            'evento_id'      => $evento_id,
            'venda_id'       => $venda_id,
            'aluno_id'       => $aluno_id,
            'numero_familia' => $i,
            'numero_geral'   => $numero_geral,
            'codigo'         => $codigo,
            'token'          => $token

        ]);

    }

    $pdo->commit();

    header(
        "Location: ../Convites/convites.php?venda_id=" . $venda_id
    );

    exit;

}
catch(Exception $e){

    if($pdo->inTransaction()){
        $pdo->rollBack();
    }

    die(
        "Erro: " .
        $e->getMessage()
    );

}
?>
