prepare("SELECT * FROM tab_passeios WHERE pas_id = :id"); $stmt->bindValue(':id', $id); $stmt->execute(); $passeio = $stmt->fetch(PDO::FETCH_ASSOC); if(!$passeio) { die("Passeio não encontrado."); } // 3. Busca Galeria de Imagens $stmtImg = $pdo->prepare("SELECT imagem FROM tab_passeios_imagens WHERE pas_id = :id ORDER BY ordem ASC"); $stmtImg->bindValue(':id', $id); $stmtImg->execute(); $galeria = $stmtImg->fetchAll(PDO::FETCH_COLUMN); // 4. LÓGICA DE DISPONIBILIDADE (O CÉREBRO) // Gera mapa de ocupação para os próximos 60 dias $hoje = new DateTime(); $fim = (clone $hoje)->modify('+60 days'); $inicio_sql = $hoje->format('Y-m-d'); $fim_sql = $fim->format('Y-m-d'); // Busca Vendas $sqlVendas = "SELECT ped_data_passeio, ped_hora_passeio, SUM(ped_qtd) as total FROM tab_pedidos WHERE ped_passeio_id = :id AND ped_data_passeio BETWEEN :i AND :f AND ped_status != 3 GROUP BY ped_data_passeio, ped_hora_passeio"; $stmtV = $pdo->prepare($sqlVendas); $stmtV->execute([':id' => $id, ':i' => $inicio_sql, ':f' => $fim_sql]); $ocupacao = []; while ($row = $stmtV->fetch(PDO::FETCH_ASSOC)) { $ocupacao[$row['ped_data_passeio'] . '_' . substr($row['ped_hora_passeio'], 0, 5)] = $row['total']; } // Busca Bloqueios $sqlBloq = "SELECT blo_data, blo_hora FROM tab_bloqueios WHERE blo_passeio_id = :id AND blo_data BETWEEN :i AND :f"; $stmtB = $pdo->prepare($sqlBloq); $stmtB->execute([':id' => $id, ':i' => $inicio_sql, ':f' => $fim_sql]); $bloqueios = []; while ($row = $stmtB->fetch(PDO::FETCH_ASSOC)) { $hora = $row['blo_hora'] ? substr($row['blo_hora'], 0, 5) : 'ALL'; $bloqueios[$row['blo_data'] . '_' . $hora] = true; } // Horários do Barco $horariosBase = explode(',', str_replace(' ', '', $passeio['pas_horarios'])); // Ex: ['10:00','14:00'] ?>