<?php

if (file_exists('../conexao/conexao.php')) {
    include('../conexao/conexao.php');
}

class Cidades
{
    private $mysqlConnection;

    public function __construct($mysqlConnection)
    {
        $this->mysqlConnection = $mysqlConnection;
    }

    public function listarCidades($id = '', $sql = '')
    {
        // Consulta SQL padrão para buscar todas as Cidades
        $sql = "SELECT * FROM cidade WHERE 1=1 $sql";

        // Armazena os parâmetros e seus tipos para o bind
        $params = [];
        $types = '';

        // Condicional para verificar se os parâmetros foram passados e construir a query e os parâmetros adequados
        if (!empty($id)) {
            $sql .= " AND cidade.id_cidade = ?";
            $params[] = $id;
            $types .= 'i';  // Tipo 'i' para integer
        }

        // Prepara a consulta
        $stmt = $this->mysqlConnection->prepare($sql);
        if (!$stmt) {
            die('Erro na preparação da consulta MySQL: ' . $this->mysqlConnection->error);
        }

        // Se houver parâmetros, fazemos o bind deles
        if (!empty($params)) {
            // Usa o operador "..." para expandir o array em argumentos individuais
            $stmt->bind_param($types, ...$params);
        }

        // Executa a consulta
        if (!$stmt->execute()) {
            die('Erro na execução da consulta MySQL: ' . $stmt->error);
        }

        // Obtém o resultado
        $result = $stmt->get_result();
        if (!$result) {
            die('Erro ao obter resultado MySQL: ' . $stmt->error);
        }

        $tiposCidades = [];
        while ($row = $result->fetch_assoc()) {
            $tiposCidades[] = $row;
        }

        // Fecha a consulta
        $stmt->close();

        return $tiposCidades;
    }
}
