from .entities.User import User
import mysql.connector  # Asegúrate de importar el módulo adecuado
from werkzeug.security import generate_password_hash


class ModelUser():

    
    @classmethod
    def login(self, db, user):
        db_config = {
            'host': '127.0.0.1',  # Cambia a la dirección IP o nombre de host de tu servidor MySQL
            'user': 'seba',  # Cambia a tu nombre de usuario de MySQL
            'password': 'p2PApV7b0bLkzLLxQ0ZN',  # Cambia a tu contraseña de MySQL
            'database': 'spxButterfly'  # Cambia al nombre de tu base de datos
        }
        connection = mysql.connector.connect(**db_config)
        if connection.is_connected():
            cursor = connection.cursor()
            sql = "SELECT id, username, password, fullname FROM user WHERE username= '{}'" .format(
                user.username)
            cursor.execute(sql)

            row = cursor.fetchone()
            if row != None:
                user = User(row[0], row[1], User.check_password(
                    row[2], user.password), row[3])
                return user
            else:
                return None

 
    @classmethod
    def get_by_id(self, db, id):
        db_config = {
            'host': '127.0.0.1',
            'user': 'seba',
            'password': 'p2PApV7b0bLkzLLxQ0ZN',
            'database': 'spxButterfly'
        }
        connection = mysql.connector.connect(**db_config)
        if connection.is_connected():
            cursor = connection.cursor()
            sql = "SELECT * FROM user WHERE id = {}" .format(id)
            cursor.execute(sql)
            row = cursor.fetchone()
            if row != None:
                logged_user = User(row[0], row[1], None, row[3], row[4], row[5],
                                   row[6], row[7], row[8], row[9], row[10], row[11], row[12], row[13], row[14], row[15], row[16], row[17], row[18], row[19], row[20], row[21])
                return logged_user
            else:
                return None

    @classmethod
    def create(self, db, username, password, name):
        db_config = {
            'host': '127.0.0.1',
            'user': 'seba',
            'password': 'p2PApV7b0bLkzLLxQ0ZN',
            'database': 'spxButterfly'
        }
        hashed_password = generate_password_hash(password)
        connection = mysql.connector.connect(**db_config)
        if connection.is_connected():
            cursor = connection.cursor()
            sql = "INSERT INTO user (username, password, fullname) VALUES (%s, %s, %s)"
            values = (username, hashed_password, name)
            cursor.execute(sql, values)
            connection.commit()

    @classmethod
    def saveData(self, db, data, id):
        db_config = {
            'host': '127.0.0.1',
            'user': 'seba',
            'password': 'p2PApV7b0bLkzLLxQ0ZN',
            'database': 'spxButterfly'
        }
        connection = mysql.connector.connect(**db_config)
        if connection.is_connected():
            cursor = connection.cursor()
            sql = "UPDATE user SET takeProfit1_Percen = %s, stopLoss1_Percen = %s, takeProfit2_Percen = %s, stopLoss2_Percen = %s, takeProfit3_Percen = %s, stopLoss3_Percen = %s, takeProfit4_Percen = %s, stopLoss4_Percen = %s, takeProfit1_Dollar = %s, stopLoss1_Dollar = %s, takeProfit2_Dollar = %s, stopLoss2_Dollar = %s, takeProfit3_Dollar = %s, stopLoss3_Dollar = %s, takeProfit4_Dollar = %s, stopLoss4_Dollar = %s, contracts = %s, offset = %s WHERE id = %s"
            values = (data["takeProfit1_Percen"], data["stopLoss1_Percen"], data["takeProfit2_Percen"], data["stopLoss2_Percen"], data["takeProfit3_Percen"], data["stopLoss3_Percen"], data["takeProfit4_Percen"], data["stopLoss4_Percen"],
                      data["takeProfit1_Dollar"], data["stopLoss1_Dollar"], data["takeProfit2_Dollar"], data["stopLoss2_Dollar"], data["takeProfit3_Dollar"], data["stopLoss3_Dollar"], data["takeProfit4_Dollar"], data["stopLoss4_Dollar"], data["contracts"], data["offset"], id)
            cursor.execute(sql, values)
            connection.commit()
