<?php
session_start();

require 'includes/db.php';

if (!isset($_SESSION['usuario_id'])) {
    header("Location: login.html");
    exit();
}

$id_quarto_selecionado = isset($_GET['id_quarto']) ? intval($_GET['id_quarto']) : null;
$quarto = null;

if ($id_quarto_selecionado) {
    $conn = new mysqli("localhost", "root", "", "hotel_gestao");
    if ($conn->connect_error) {
        die("Erro de conexão: " . $conn->connect_error);
    }

    $sql = "SELECT * FROM quartos WHERE id = ?";
    $stmt = $conn->prepare($sql);
    $stmt->bind_param("i", $id_quarto_selecionado);
    $stmt->execute();
    $result = $stmt->get_result();
    $quarto = $result->fetch_assoc();

    if (!$quarto) {
        $id_quarto_selecionado = null;
    }
}

$mensagem = "";

// Buscar quartos ativos no banco de dados
$stmt_quartos = $pdo->query("SELECT * FROM quartos WHERE status IN ('ativo', 'disponivel')");
$quartos = $stmt_quartos->fetchAll(PDO::FETCH_ASSOC);

// Montar array de preços e imagens para uso no JavaScript
$dados_quartos = [];
foreach ($quartos as $q) {
    $dados_quartos[$q['id']] = [
        'tipo' => $q['tipo'],
        'preco' => $q['preco'],
        'imagem' => $q['imagem'] ?? 'sem-imagem.jpg'
    ];
}

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $id_usuario = $_SESSION['usuario_id'];
    $id_quarto = $_POST['quarto_id'];
    $data_entrada = $_POST['data_entrada'];
    $data_saida = $_POST['data_saida'];

    $dias = (strtotime($data_saida) - strtotime($data_entrada)) / (60 * 60 * 24);

    if ($dias <= 0) {
        $mensagem = "A data de check-out deve ser posterior à data de check-in.";
    } else {
        $preco = $dados_quartos[$id_quarto]['preco'] ?? 0;
        $tipo_quarto = $dados_quartos[$id_quarto]['tipo'] ?? 'Indefinido';
        $valor_total = $dias * $preco;

        $stmt = $pdo->prepare("INSERT INTO reservas (id_usuario, tipo_quarto, data_entrada, data_saida, valor_total, status) VALUES (?, ?, ?, ?, ?, 'ativo')");
        $stmt->execute([$id_usuario, $tipo_quarto, $data_entrada, $data_saida, $valor_total]);

        $mensagem = "Reserva feita com sucesso!";
    }
}
?>
<!DOCTYPE html>
<html lang="pt">
<head>
    <meta charset="UTF-8">
    <title>Fazer Reserva</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
    <link rel="stylesheet" href="css/phpstyle.css">
    <style>
        #imagem-preview {
            max-width: 100%;
            max-height: 200px;
            margin-bottom: 15px;
            border-radius: 8px;
        }
    </style>
</head>
<body class="bg-light">
    <div class="container py-5">
        <div class="mb-4 d-flex justify-content-between align-items-center">
            <h2>Fazer uma Reserva</h2>
            <a href="perfil.php" class="btn btn-outline-secondary">← Voltar ao Dashboard</a>
        </div>

        <?php if ($mensagem): ?>
            <div class="alert alert-info"><?= $mensagem ?></div>
        <?php endif; ?>

        <form method="POST" class="card p-4 shadow-sm bg-white" id="form-reserva">
            <div class="mb-3 text-center">
                <img id="imagem-preview" src="" alt="Imagem do Quarto" style="display: none;">
            </div>

            <div class="mb-3">
                <label for="quarto_id" class="form-label">Tipo de Quarto</label>
                <select class="form-select" name="quarto_id" id="quarto_id" required>
                    <option value="">Escolha um quarto...</option>
                    <?php foreach ($quartos as $q): ?>
                        <option value="<?= $q['id'] ?>" <?= ($id_quarto_selecionado == $q['id']) ? 'selected' : '' ?>>
                            <?= $q['tipo'] ?> - <?= number_format($q['preco'], 2, ',', '.') ?> Kz/noite
                        </option>
                    <?php endforeach ?>
                </select>
            </div>

            <div class="mb-3">
                <label for="data_entrada" class="form-label">Data de Check-in</label>
                <input type="date" class="form-control" name="data_entrada" id="data_entrada" required>
            </div>

            <div class="mb-3">
                <label for="data_saida" class="form-label">Data de Check-out</label>
                <input type="date" class="form-control" name="data_saida" id="data_saida" required>
            </div>

            <div class="mb-3">
                <label class="form-label">Valor Total Estimado</label>
                <input type="text" id="valor_estimado" class="form-control" readonly>
            </div>

            <button type="submit" class="btn btn-primary">Reservar</button>
        </form>
    </div>

    <script>
        const dados = <?= json_encode($dados_quartos) ?>;

        const selectQuarto = document.getElementById('quarto_id');
        const entradaInput = document.getElementById('data_entrada');
        const saidaInput = document.getElementById('data_saida');
        const valorField = document.getElementById('valor_estimado');
        const imagemPreview = document.getElementById('imagem-preview');

        function calcularValor() {
            const id = selectQuarto.value;
            const entrada = new Date(entradaInput.value);
            const saida = new Date(saidaInput.value);

            if (id && entradaInput.value && saidaInput.value && saida > entrada) {
                const diffDias = (saida - entrada) / (1000 * 60 * 60 * 24);
                const precoNoite = dados[id].preco;
                const total = diffDias * precoNoite;
                valorField.value = total.toLocaleString('pt-AO', { style: 'currency', currency: 'AOA' });
            } else {
                valorField.value = "";
            }
        }

        function atualizarImagem() {
            const id = selectQuarto.value;
            if (id && dados[id].imagem) {
                imagemPreview.src = 'uploads/' + dados[id].imagem;
                imagemPreview.style.display = 'block';
            } else {
                imagemPreview.style.display = 'none';
            }
        }

        selectQuarto.addEventListener('change', () => {
            calcularValor();
            atualizarImagem();
        });
        entradaInput.addEventListener('change', calcularValor);
        saidaInput.addEventListener('change', calcularValor);

        // Disparar seleção automática se vier com id_quarto
        if (selectQuarto.value) {
            atualizarImagem();
        }
    </script>

     <!-- Bootstrap JS -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>

</body>
</html>
