import os
import pymysql
import pandas as pd
import numpy as np

# Função para verificar se a pasta contém o arquivo glpi.csv e fazer a importação
def importar_glpi_para_mysql():
    # Caminho da pasta onde o arquivo glpi.csv deve estar
    caminho_pasta = '/Dados/TI/Clientes/POT/'
    arquivo_glpi = 'computadores.csv'
    caminho_arquivo = os.path.join(caminho_pasta, arquivo_glpi)

    # Verifica se o arquivo glpi.csv existe na pasta
    if not os.path.exists(caminho_arquivo):
        print("Arquivo computadores.csv não encontrado. Nenhuma ação será realizada.")
        return

    # Se o arquivo existir, carrega os dados
    print("Arquivo encontrado. Iniciando importação...")
    dados_glpi = pd.read_csv(caminho_arquivo, delimiter=';')

    # Substitui valores NaN por None (que se traduz como NULL no MySQL)
    dados_glpi = dados_glpi.replace({np.nan: None})

    # Configurações de conexão com o banco de dados MySQL
    conexao = pymysql.connect(
        host='149.56.34.221',        # Alterar para o endereço do seu servidor MySQL
        user='adminsevencorp',      # Alterar para seu nome de usuário MySQL
        password='Brasil@2023#',    # Alterar para sua senha MySQL
        db='redecidada_projeto_pot', # Alterar para o nome do banco de dados
        charset='utf8mb4',
        cursorclass=pymysql.cursors.DictCursor
    )

    try:
        with conexao.cursor() as cursor:
           # Executa o TRUNCATE TABLE para limpar os dados antigos da tabela glpi
            cursor.execute("TRUNCATE TABLE glpi")
            print("Tabela glpi truncada com sucesso.")

            # SQL para inserir dados na tabela glpi
            sql_insert = """
                INSERT INTO glpi (
                    `Nome`, `Entidade`, `Status`, `Usuário`, `Fabricante`, `Número de série`, 
                    `Localização`, `Tipo`, `Modelo`, `Sistema operacional - Nome`, 
                    `Nome alternativo do usuário`, `Data do último inventário`, 
                    `Componentes - Processador`, `Antivírus - Nome`, 
                    `Antivírus - Versão`, `Antivírus - Ativo`
                ) 
                VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)
            """

            # Itera sobre o DataFrame e insere os dados no MySQL
            for index, row in dados_glpi.iterrows():
                cursor.execute(sql_insert, (
                    row['Nome'], row['Entidade'], row['Status'], row['Usuário'], 
                    row['Fabricante'], row['Número de série'], row['Localização'], 
                    row['Tipo'], row['Modelo'], row['Sistema operacional - Nome'], 
                    row['Nome alternativo do usuário'], row['Data do último inventário'], 
                    row['Componentes - Processador'], row['Antivírus - Nome'], 
                    row['Antivírus - Versão'], row['Antivírus - Ativo']
                ))

        # Confirma a transação
        conexao.commit()
        print("Dados importados com sucesso para a tabela glpi.")
    
    except Exception as e:
        print(f"Erro ao importar dados: {e}")
        conexao.rollback()

    finally:
        conexao.close()

# Chama a função
importar_glpi_para_mysql()
