<?php
//file_put_contents('log.txt', 'Arquivo get_filiais.php acessado.' . PHP_EOL, FILE_APPEND);
header('Content-Type: application/json');
require '../conexao/conexao.php';

// Captura qualquer saída inesperada para não quebrar o JSON retornado
ob_start();

if (!isset($_REQUEST['cidade'])) {
    ob_end_clean();
    echo json_encode(['error' => 'Cidade não fornecida.']);
    exit;
}

$cidade = $_REQUEST['cidade']; // Use $_REQUEST para aceitar tanto GET quanto POST

// Use prepared statement para evitar injeção SQL
$query = "SELECT cdfil, DESCRFIL FROM FC01000 WHERE MUNIC = ? and cdfil IN (SELECT cdfil FROM fc15100 )";

// Tenta executar a consulta Firebird; em caso de erro, usa fallback MySQL
$stmt = @ibase_prepare($connection, $query);
$filiais = [];
if ($stmt !== false) {
    $result = @ibase_execute($stmt, $cidade);
    if ($result !== false) {
        while ($row = ibase_fetch_assoc($result)) {
            if (isset($row['DESCRFIL'])) $row['DESCRFIL'] = utf8_encode($row['DESCRFIL']);
            $filiais[] = $row;
        }
    }
}

// Se não obteve filiais via Firebird, tenta fallback para MySQL
if (empty($filiais)) {
    $fallback = [];
    $consultaPath = __DIR__ . '/../configuracao/consulta_banco_dados.php';
    if (file_exists($consultaPath)) {
        require_once $consultaPath;
        try {
            $consulta = new ConsultaBancoDeDados();
            $rows = $consulta->get_all_filiais();
            foreach ($rows as $r) {
                $cdfil = null;
                if (isset($r['CODIGO_FC']) && $r['CODIGO_FC'] !== '') {
                    $cdfil = $r['CODIGO_FC'];
                } elseif (isset($r['ID']) && $r['ID'] !== '') {
                    $cdfil = $r['ID'];
                }
                $descr = '';
                if (isset($r['NOME'])) $descr = $r['NOME'];
                elseif (isset($r['nome_filial'])) $descr = $r['nome_filial'];

                $fallback[] = [
                    'CDFIL' => $cdfil,
                    'DESCRFIL' => mb_convert_encoding($descr, 'UTF-8', 'ISO-8859-1')
                ];
            }
        } catch (Exception $e) {
            // ignore and keep fallback empty
        }
    }

    if (!empty($fallback)) {
        $filiais = $fallback;
    }
}

// Limpa qualquer saída intermediária e retorna JSON válido
ob_end_clean();
echo json_encode($filiais);


?>
