# -*- coding: utf-8 -*-

import pandas as pd
import MySQLdb
import sys

def connect_to_database():
    try:
        db = MySQLdb.connect(
            host="localhost",        # Cambia al host de tu base de datos
            user="root",             # Cambia al usuario de tu base de datos
            passwd="password",       # Cambia al password de tu base de datos
            db="unicornflower"       # Cambia al nombre de tu base de datos
        )
        return db
    except MySQLdb.Error as e:
        print("Error al conectar a la base de datos:", e)
        sys.exit(1)

def insert_data(dataframe, data_type, db):
    cursor = db.cursor()
    if data_type == 'user':
        for _, row in dataframe.iterrows():
            sql = """
            INSERT INTO users (name, last_name, email, slug, role_id, status, blocked, email_verified_at, password, created_at, updated_at)
            VALUES (%s, %s, %s, %s, %s, %s, %s, NOW(), %s, NOW(), NOW())
            """
            values = (
                row['name'], row['last_name'], row['email'], row['slug'], 
                row['role_id'], row['status'], row['blocked'], row['password']
            )
            cursor.execute(sql, values)

    elif data_type == 'business':
        for _, row in dataframe.iterrows():
            sql = """
            INSERT INTO businesses (user_id, name, tradename, register_type, type, description, sector, phone, country, city, state, address, created_at, updated_at)
            VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, NOW(), NOW())
            """
            values = (
                row['user_id'], row['name'], row['tradename'], row['register_type'], 
                row['type'], row['description'], row['sector'], row['phone'], 
                row['country'], row['city'], row['state'], row['address']
            )
            cursor.execute(sql, values)

    elif data_type == 'brand':
        for _, row in dataframe.iterrows():
            sql = """
            INSERT INTO brands (user_id, name, register_type, description, logo, created_at, updated_at)
            VALUES (%s, %s, %s, %s, %s, NOW(), NOW())
            """
            values = (
                row['user_id'], row['name'], row['register_type'], 
                row['description'], row['logo']
            )
            cursor.execute(sql, values)

    else:
        print("Tipo de datos no soportado:", data_type)
        sys.exit(1)

    db.commit()
    cursor.close()

def main():
    file_path = input("Ingrese la ruta del archivo Excel: ")
    data_type = input("Ingrese el tipo de datos a insertar (user, business, brand): ").lower()

    try:
        dataframe = pd.read_excel(file_path)
    except Exception as e:
        print("Error al leer el archivo Excel:", e)
        sys.exit(1)

    db = connect_to_database()
    insert_data(dataframe, data_type, db)
    db.close()
    print("Datos de tipo '{}' insertados exitosamente.".format(data_type))


if __name__ == "__main__":
    main()


""" Descripción del Código connect_to_database: Establece la conexión a la base de datos MySQL. insert_data: Inserta datos 
en la base de datos según el tipo (user, business, brand). El programa lee cada fila del archivo de Excel y ejecuta una 
consulta SQL con los valores correspondientes. main: Solicita la ruta del archivo y el tipo de datos a insertar. Luego, lee 
el archivo de Excel y llama a insert_data. Estructura del Archivo Excel Para que funcione correctamente, el archivo de 
Excel debe tener columnas con los nombres correspondientes según el tipo de datos: Usuarios (user): name, last_name, email, 
slug, role_id, status, blocked, password. Empresas (business): user_id, name, tradename, register_type, type, description, 
sector, phone, country, city, state, address. Marcas (brand): user_id, name, register_type, description, logo. Ejecución 
Ejecuta el programa y proporciona la ruta del archivo y el tipo de datos. Verifica que los datos se hayan insertado en la 
base de datos.
Asegúrate de tener el archivo Excel y las tablas configuradas con las columnas correspondientes en la base de datos antes de ejecutar el programa.

"""
