#!/bin/bash

# Cores para output
RED='\033[0;31m'
GREEN='\033[0;32m'
NC='\033[0m' # No Color

echo -e "${GREEN}Iniciando correção de erros de sintaxe...${NC}"

# 1. Correção de Unmatched ')' (remove um ')' extra no final da linha ou antes de ';')
#    Esses comandos assumem que o erro é um ')' sobrando. Ajusta em todas as linhas listadas.
ARQUIVOS_UNMATCHED=(
    "./paineladm/modulos/precos.php:280"
    "./paineladm/modulos/coracao.php:542"
    "./paineladm/modulos/logadoLaboratorio.php:76"
    "./paineladm/modulos/clientes.php:126"
    "./paineladm/modulos/produtores.php:194"
    "./paineladm/modulos/farejador2016.php:933"
    "./paineladm/modulos/amostras.php:132"
    "./paineladm/modulos/amostradores.php:185"
    "./paineladm/modulos/achaAssociado.php:132"
    "./paineladm/modulos/amostrasMIX.php:295"
    "./paineladm/modulos/ver_ocorrencias.php:97"
    "./paineladm/modulos/Tetrazolio2021.php:430"
    "./paineladm/modulos/amostrasEmergencia.php:639"
    "./paineladm/modulos/remetentes.php:402"
    "./paineladm/modulos/coracaoBaren.php:546"
    "./paineladm/modulos/germinacaoMIX.php:513"
    "./paineladm/modulos/farejador2015.php:629"
    "./paineladm/modulos/pacotes.php:125"
    "./paineladm/modulos/Tetrazolio1.php:416"
    "./paineladm/modulos/camposProducaoEstatistica.php:204"
    "./paineladm/imprimefichaFitopatologia1.php:122"
    "./paineladm/imprimeFichaDIMICRON2017.php:197"
)

for entry in "${ARQUIVOS_UNMATCHED[@]}"; do
    file=$(echo "$entry" | cut -d: -f1)
    line=$(echo "$entry" | cut -d: -f2)
    echo "Corrigindo $file linha $line (Unmatched ')' )"
    # Remove o último ')' da linha, se existir. Cuidado: se houver '))', remove apenas um.
    sed -i "${line}s/)$//; ${line}s/);$/);/" "$file"
done

# 2. Correção do erro inesperado '}' em germinacao.php:478
#    O erro diz "unexpected token '}'". Provavelmente há um '}' extra. Vamos removê-lo.
echo "Corrigindo germinacao.php linha 478 ( } inesperado )"
sed -i '478s/}//' ./paineladm/modulos/germinacao.php

# 3. Correção dos dois phplot.php (Unclosed '(')
#    Adiciona um ')' no final da linha 5480 ou 5481 conforme a mensagem.
echo "Corrigindo phplot.php (Unclosed '(')"
sed -i '5480s/$/)/' ./paineladm/phplot/phplot-6.2.0/phplot.php
sed -i '5480s/$/)/' ./paineladm/phplot/phplot.php

# 4. Correção de array com chaves {} -> colchetes [] (htmlfilter.php)
echo "Corrigindo htmlfilter.php (curly braces array access)"
perl -pi -e 's/\{(\d+)\}/[$1]/g' ./paineladm/PHPMailer/extras/htmlfilter.php

# 5. Correção do makefont.php (token "==" inesperado) - linha 18
#    Provavelmente é um trecho como if ($a == = $b) ou algo similar. Vamos trocar "==" por "="? Não é seguro.
#    Melhor comentar a linha e mostrar um TODO.
echo "Aplicando correção temporária em makefont.php (token '==')"
sed -i '18s/^/\/\/ FIXME: erro de sintaxe - /' ./paineladm/classes/font/makefont/makefont.php
sed -i '18s/^/\/\/ FIXME: erro de sintaxe - /' ./paineladm/classes/fpdf/font/makefont/makefont.php

# 6. Correção do class.ezpdf.php (unexpected token "switch")
#    Provavelmente há uma chave '{' faltando antes de 'switch'. Vamos adicionar.
echo "Corrigindo class.ezpdf.php (switch inesperado)"
sed -i '71s/switch/{ switch/' ./paineladm/classes/GeraPDF/class.ezpdf.php

# 7. Correção do cria_barcode1.class.php (unexpected token ")")
#    Pode ser um ')' extra. Remove o último ')' da linha.
echo "Corrigindo cria_barcode1.class.php linha 37"
sed -i '37s/)$//' ./paineladm/classes/cria_barcode1.class.php

# 8. Correção do FPDF.class.php (Unclosed '{')
#    Adiciona '}' no início da linha 470 (como sugerido, mas pode não ser ideal)
echo "Corrigindo FPDF.class.php linha 470"
sed -i '470s/^/}/' ./paineladm/classes/FPDF.class.php

echo -e "${GREEN}Correções aplicadas.${NC}"
echo -e "${RED}IMPORTANTE: Execute novamente a verificação de erros. Algumas correções podem necessitar ajustes manuais.${NC}"
echo "Comando de re-verificação:"
echo 'find . -type f -name "*.php" -not -path "./paineladm/vendor/*" -not -path "./backup_arrays_20260523_120238/*" -print0 | xargs -0 -n1 php -l 2>&1 | grep -E "Parse error|Fatal error"'
