#!/usr/bin/env python3
import csv
import sys
import mysql.connector
from config import DB_HOST, DB_USERNAME, DB_PASSWORD, DB_DATABASE

def importar_contatos(csv_file):
    print("Iniciando a importação do arquivo:", csv_file)
    
    try:
        conn = mysql.connector.connect(
            host=DB_HOST,
            user=DB_USERNAME,
            password=DB_PASSWORD,
            database=DB_DATABASE
        )
    except mysql.connector.Error as err:
        sys.exit("Erro ao conectar ao banco de dados: " + str(err))

    cursor = conn.cursor()

    total_importados = 0

    # Ajuste o 'delimiter' conforme o formato do seu CSV.
    # Se as colunas estiverem separadas por vírgula, use delimiter=','
    # Se estiver separado por ponto e vírgula, use delimiter=';'
    # Se estiver separado por tab, use delimiter='\t'
    try:
        with open(csv_file, newline='', encoding='utf-8') as f:
            # Tente usar o delimitador ','; se não funcionar, altere aqui
            reader = csv.DictReader(f, delimiter=';')
            print("Cabeçalho do CSV:", reader.fieldnames)
            
            for line_number, row in enumerate(reader, start=2):
                # Exibe a linha completa para debug
                print(f"Linha {line_number}: {row}")
                
                # Extração dos campos (ajuste os nomes conforme seu CSV)
                nome = row.get('nome')
                email = row.get('email')
                status = row.get('status', 'Ativo')
                
                print(f"Debug: nome='{nome}', email='{email}', status='{status}'")
                
                # Se o email estiver vazio ou for None, ignore o registro
                if not email or email.strip() == "":
                    print(f"Linha {line_number}: email vazio. Ignorando.")
                    continue

                # Query para inserir os dados (ignora a coluna id do CSV)
                sql = """
                    INSERT INTO consolidado (nome, email, status)
                    VALUES (%s, %s, %s)
                    ON DUPLICATE KEY UPDATE
                        nome = VALUES(nome),
                        status = VALUES(status)
                """
                try:
                    cursor.execute(sql, (nome, email, status))
                    conn.commit()
                    total_importados += 1
                except mysql.connector.Error as err:
                    print(f"Linha {line_number}: Erro ao inserir/atualizar contato (email='{email}'): {err}")
    except FileNotFoundError:
        sys.exit("Arquivo CSV não encontrado: " + csv_file)
    except Exception as e:
        sys.exit("Erro ao ler o arquivo CSV: " + str(e))
    
    print(f"Importação concluída. Total de contatos importados/atualizados: {total_importados}")

    cursor.close()
    conn.close()

if __name__ == '__main__':
    if len(sys.argv) < 2:
        print("Uso: python3 import_contatos.py caminho/para/consolidado-completo.csv")
    else:
        csv_file = sys.argv[1]
        importar_contatos(csv_file)
