# Example login session check
import reflex as rx
from  assets.db.db import db
import bcrypt
#from  assets.db.db import db

from myApp.includes.functions import *
from assets.lang.en.frontend import frontend

class AuthState(rx.State):
    """State for managing authentication."""
    is_logged_in: bool = False
    user_id: int = 0
    username: str = ""
    email: str = ''
    password: str = ''
    validation: str = ''

    def setlogedIn(self):
        #self.my_local_storage = var
        self.set_is_logged_in = True
    
    def setUserID(self,var):
        self.set_user_id = var
    
    def is_authenticated(self) -> bool:
        """Function to check if the user is logged in."""
        if self.is_logged_in:
           return True
        return False
    
    @rx.event
    def login(self, form_data: dict):
        """Handle the form submit."""
        #print(form_data)
        self.validation = ''
        if not validate_email(self.email):
            self.validation = frontend['email-validation-error-msg']
        elif len(self.password) < 8:
            self.validation = frontend['password-validation-error-msg']
        else:
            conn = db()
            cursor = conn.cursor(dictionary=True)
            cursor.execute("SELECT * FROM py_users WHERE email = %s",(self.email,))
            eu = cursor.fetchone()
            #print(eu)
            if not eu:
                self.validation = frontend['account-not-match']
            else:
                #hashed_password = bcrypt.hashpw(self.password.encode('utf-8'), bcrypt.gensalt())
                if check_password(self.password,eu['password']):
                    self.is_logged_in = True
                    self.user_id = eu['id']
                    #AuthState.is_logged_in = True
                    #AuthState.setlogedIn()
                    #AuthState.setUserID(eu['id'])
                    #setlogedIn(eu['id'])
                    #rx.LocalStorage.set('login_id',eu['id'])
                    return rx.redirect("/dashboard")  # Redirect after login success
                    #rx.script("window.location.href = '/dashboard';")
                    #print(AuthState.is_logged_in)
                else:
                    self.validation = frontend['account-not-match']
    


    