#!/usr/bin/env python3
"""
Script para corrigir os dados da tabela federais_nao_eleitos_sp
com problemas de encoding.
"""
import sys
from pathlib import Path

# Adiciona o diretório app ao path
backend_dir = Path(__file__).resolve().parent
sys.path.insert(0, str(backend_dir))

from sqlalchemy.orm import Session
from app.db.models import FederaisNaoEleitosSP
from app.db.session import SessionLocal
import logging

logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

# Dados corretos do CSV
CORRECT_DATA = [
    {"uf": "SÃO PAULO", "candidato": "PABLO MARÇAL", "historico_de_votos": 243037, "cargo": "Deputado Federal", "historico_de_fefc": 1439254, "partido": "PROS", "genero": "MASCULINO", "situacao": "NÃO ELEITO"},
    {"uf": "SÃO PAULO", "candidato": "ORLANDO SILVA", "historico_de_votos": 108059, "cargo": "Deputado Federal", "historico_de_fefc": 2575274, "partido": "PC do B", "genero": "MASCULINO", "situacao": "SUPLENTE"},
    {"uf": "SÃO PAULO", "candidato": "PROFESSOR HOC, HENI OZI CUKIER", "historico_de_votos": 98720, "cargo": "Deputado Federal", "historico_de_fefc": 1541100, "partido": "PODE", "genero": "MASCULINO", "situacao": "SUPLENTE"},
    {"uf": "SÃO PAULO", "candidato": "DEPUTADO ALFREDINHO", "historico_de_votos": 97063, "cargo": "Deputado Federal", "historico_de_fefc": 1807512, "partido": "PT", "genero": "MASCULINO", "situacao": "SUPLENTE"},
    {"uf": "SÃO PAULO", "candidato": "PROF. MARCO ANTONIO VILLA", "historico_de_votos": 95745, "cargo": "Deputado Federal", "historico_de_fefc": 2001975, "partido": "CIDADANIA", "genero": "MASCULINO", "situacao": "SUPLENTE"},
    {"uf": "SÃO PAULO", "candidato": "ELY SANTOS", "historico_de_votos": 93305, "cargo": "Deputado Federal", "historico_de_fefc": 2513831, "partido": "REPUBLICANOS", "genero": "FEMININO", "situacao": "SUPLENTE"},
    {"uf": "SÃO PAULO", "candidato": "ROBERTO ALVES", "historico_de_votos": 92566, "cargo": "Deputado Federal", "historico_de_fefc": 1509713, "partido": "REPUBLICANOS", "genero": "MASCULINO", "situacao": "SUPLENTE"},
    {"uf": "SÃO PAULO", "candidato": "EDUARDO CURY", "historico_de_votos": 92225, "cargo": "Deputado Federal", "historico_de_fefc": 1968455, "partido": "PSDB", "genero": "MASCULINO", "situacao": "SUPLENTE"},
    {"uf": "SÃO PAULO", "candidato": "ADRILLES JORGE", "historico_de_votos": 91485, "cargo": "Deputado Federal", "historico_de_fefc": 1558445, "partido": "PTB", "genero": "MASCULINO", "situacao": "NÃO ELEITO"},
    {"uf": "SÃO PAULO", "candidato": "JOSÉ SERRA", "historico_de_votos": 88926, "cargo": "Deputado Federal", "historico_de_fefc": 3175000, "partido": "PSDB", "genero": "MASCULINO", "situacao": "SUPLENTE"},
    {"uf": "SÃO PAULO", "candidato": "VANDERLEI MACRIS", "historico_de_votos": 87502, "cargo": "Deputado Federal", "historico_de_fefc": 3096834, "partido": "PSDB", "genero": "MASCULINO", "situacao": "SUPLENTE"},
    {"uf": "SÃO PAULO", "candidato": "VICENTINHO", "historico_de_votos": 82912, "cargo": "Deputado Federal", "historico_de_fefc": 2339990, "partido": "PT", "genero": "MASCULINO", "situacao": "SUPLENTE"},
    {"uf": "SÃO PAULO", "candidato": "SAULO PEDROSO", "historico_de_votos": 80186, "cargo": "Deputado Federal", "historico_de_fefc": 1251056, "partido": "PSD", "genero": "MASCULINO", "situacao": "SUPLENTE"},
    {"uf": "SÃO PAULO", "candidato": "JOÃO CURY", "historico_de_votos": 80085, "cargo": "Deputado Federal", "historico_de_fefc": 2734346, "partido": "MDB", "genero": "MASCULINO", "situacao": "SUPLENTE"},
    {"uf": "SÃO PAULO", "candidato": "SAMUEL MOREIRA", "historico_de_votos": 79633, "cargo": "Deputado Federal", "historico_de_fefc": 2226867, "partido": "PSDB", "genero": "MASCULINO", "situacao": "SUPLENTE"},
    {"uf": "SÃO PAULO", "candidato": "FRED MACHADO", "historico_de_votos": 79041, "cargo": "Deputado Federal", "historico_de_fefc": 2996590, "partido": "PSDB", "genero": "MASCULINO", "situacao": "SUPLENTE"},
    {"uf": "SÃO PAULO", "candidato": "ENRICO MISASI", "historico_de_votos": 77949, "cargo": "Deputado Federal", "historico_de_fefc": 2542750, "partido": "MDB", "genero": "MASCULINO", "situacao": "SUPLENTE"},
    {"uf": "SÃO PAULO", "candidato": "DOUGLAS VIEGAS", "historico_de_votos": 76149, "cargo": "Deputado Federal", "historico_de_fefc": 1747983, "partido": "UNIÃO", "genero": "MASCULINO", "situacao": "SUPLENTE"},
    {"uf": "SÃO PAULO", "candidato": "DENIS ANDIA", "historico_de_votos": 75082, "cargo": "Deputado Federal", "historico_de_fefc": 1292500, "partido": "MDB", "genero": "MASCULINO", "situacao": "SUPLENTE"},
    {"uf": "SÃO PAULO", "candidato": "PEDRO TOURINHO", "historico_de_votos": 74729, "cargo": "Deputado Federal", "historico_de_fefc": 1401717, "partido": "PT", "genero": "MASCULINO", "situacao": "SUPLENTE"},
    {"uf": "SÃO PAULO", "candidato": "RICARDO IZAR", "historico_de_votos": 70142, "cargo": "Deputado Federal", "historico_de_fefc": 1870839, "partido": "REPUBLICANOS", "genero": "MASCULINO", "situacao": "SUPLENTE"},
    {"uf": "SÃO PAULO", "candidato": "CORONEL TELHADA", "historico_de_votos": 69945, "cargo": "Deputado Federal", "historico_de_fefc": 2361600, "partido": "PP", "genero": "MASCULINO", "situacao": "SUPLENTE"},
    {"uf": "SÃO PAULO", "candidato": "ROBERTO DE LUCENA", "historico_de_votos": 69341, "cargo": "Deputado Federal", "historico_de_fefc": 1954850, "partido": "REPUBLICANOS", "genero": "MASCULINO", "situacao": "SUPLENTE"},
    {"uf": "SÃO PAULO", "candidato": "RODRIGO AGOSTINHO", "historico_de_votos": 65506, "cargo": "Deputado Federal", "historico_de_fefc": 2621086, "partido": "PSB", "genero": "MASCULINO", "situacao": "SUPLENTE"},
    {"uf": "SÃO PAULO", "candidato": "RIBAMAR SILVA", "historico_de_votos": 65219, "cargo": "Deputado Federal", "historico_de_fefc": 1583909, "partido": "PSD", "genero": "MASCULINO", "situacao": "SUPLENTE"},
    {"uf": "SÃO PAULO", "candidato": "PAULINHO DA FORÇA", "historico_de_votos": 64137, "cargo": "Deputado Federal", "historico_de_fefc": 1916290, "partido": "SOLIDARIEDADE", "genero": "MASCULINO", "situacao": "SUPLENTE"},
    {"uf": "SÃO PAULO", "candidato": "GUILHERME PIAI", "historico_de_votos": 63190, "cargo": "Deputado Federal", "historico_de_fefc": 858606, "partido": "REPUBLICANOS", "genero": "MASCULINO", "situacao": "SUPLENTE"},
    {"uf": "SÃO PAULO", "candidato": "REINALDO ALGUZ", "historico_de_votos": 62666, "cargo": "Deputado Federal", "historico_de_fefc": 2225075, "partido": "UNIÃO", "genero": "MASCULINO", "situacao": "SUPLENTE"},
    {"uf": "SÃO PAULO", "candidato": "ADILSON BARROSO", "historico_de_votos": 62445, "cargo": "Deputado Federal", "historico_de_fefc": 3003432, "partido": "PL", "genero": "MASCULINO", "situacao": "SUPLENTE"},
    {"uf": "SÃO PAULO", "candidato": "MISSIONÁRIO JOSÉ OLÍMPIO", "historico_de_votos": 61938, "cargo": "Deputado Federal", "historico_de_fefc": 520842, "partido": "PL", "genero": "MASCULINO", "situacao": "SUPLENTE"},
    {"uf": "SÃO PAULO", "candidato": "CORONEL TADEU", "historico_de_votos": 61546, "cargo": "Deputado Federal", "historico_de_fefc": 575036, "partido": "PL", "genero": "MASCULINO", "situacao": "SUPLENTE"},
    {"uf": "SÃO PAULO", "candidato": "POLICIAL KATIA SASTRE", "historico_de_votos": 60330, "cargo": "Deputado Federal", "historico_de_fefc": 2621292, "partido": "PL", "genero": "FEMININO", "situacao": "SUPLENTE"},
    {"uf": "SÃO PAULO", "candidato": "ELI CORRÊA FILHO", "historico_de_votos": 59959, "cargo": "Deputado Federal", "historico_de_fefc": 2655939, "partido": "UNIÃO", "genero": "MASCULINO", "situacao": "SUPLENTE"},
    {"uf": "SÃO PAULO", "candidato": "MARCELO HERCOLIN", "historico_de_votos": 58419, "cargo": "Deputado Federal", "historico_de_fefc": 2742227, "partido": "UNIÃO", "genero": "MASCULINO", "situacao": "SUPLENTE"},
    {"uf": "SÃO PAULO", "candidato": "RITA PASSOS", "historico_de_votos": 57800, "cargo": "Deputado Federal", "historico_de_fefc": 2517573, "partido": "REPUBLICANOS", "genero": "FEMININO", "situacao": "SUPLENTE"},
    {"uf": "SÃO PAULO", "candidato": "WALTER IHOSHI", "historico_de_votos": 55027, "cargo": "Deputado Federal", "historico_de_fefc": 1775961, "partido": "PSD", "genero": "MASCULINO", "situacao": "SUPLENTE"},
    {"uf": "SÃO PAULO", "candidato": "GUIGA PEIXOTO", "historico_de_votos": 54849, "cargo": "Deputado Federal", "historico_de_fefc": 256250, "partido": "PSC", "genero": "MASCULINO", "situacao": "SUPLENTE"},
    {"uf": "SÃO PAULO", "candidato": "ORLANDO VITORIANO", "historico_de_votos": 54243, "cargo": "Deputado Federal", "historico_de_fefc": 769108, "partido": "PT", "genero": "MASCULINO", "situacao": "SUPLENTE"},
    {"uf": "SÃO PAULO", "candidato": "MARLON DO UBER", "historico_de_votos": 53845, "cargo": "Deputado Federal", "historico_de_fefc": 610120, "partido": "MDB", "genero": "MASCULINO", "situacao": "SUPLENTE"},
    {"uf": "SÃO PAULO", "candidato": "ELIEL MIRANDA", "historico_de_votos": 50875, "cargo": "Deputado Federal", "historico_de_fefc": 171986, "partido": "PSD", "genero": "MASCULINO", "situacao": "SUPLENTE"},
]


def fix_data():
    """Corrige os dados da tabela com os valores corretos"""
    session: Session = SessionLocal()
    try:
        logger.info("Limpando tabela existente...")
        session.query(FederaisNaoEleitosSP).delete()
        
        logger.info("Inserindo dados corretos...")
        for data in CORRECT_DATA:
            record = FederaisNaoEleitosSP(**data)
            session.add(record)
        
        session.commit()
        logger.info("✅ Dados corrigidos com sucesso! %s registros inseridos.", len(CORRECT_DATA))
        
        # Verificar os dados
        count = session.query(FederaisNaoEleitosSP).count()
        first = session.query(FederaisNaoEleitosSP).first()
        logger.info("Total de registros na tabela: %s", count)
        if first:
            logger.info("Primeiro registro: %s - %s - %s", first.candidato, first.uf, first.situacao)
        
    except Exception as e:
        session.rollback()
        logger.exception("Erro ao corrigir dados: %s", e)
        sys.exit(1)
    finally:
        session.close()


if __name__ == "__main__":
    fix_data()

