<?php
    class Usuario extends Conectar{

public function login() {
    ob_start(); // ← Activa el buffer de salida (importante si usaste echo antes)
    $conectar = parent::Conexion();
    parent::set_names();

    if (isset($_POST["enviar"])) {
        $correo = $_POST["usu_correo"] ?? '';
        $pass   = $_POST["usu_pass"] ?? '';

        if (empty($correo) || empty($pass)) {
            header("Location:" . Conectar::ruta() . "index.php?m=2");
            exit();
        }

        $sql = "SELECT * FROM tm_usuarios WHERE usu_correo = ?";
        $stmt = $conectar->prepare($sql);
        $stmt->bindValue(1, $correo);
        $stmt->execute();

        $resultado = $stmt->fetch();

        if ($resultado) {
            if (password_verify($pass, $resultado["usu_pass"])) {
                $_SESSION["usu_id"]     = $resultado["usu_id"];
                $_SESSION["usu_nom"]    = $resultado["usu_nom"];
                $_SESSION["usu_correo"] = $resultado["usu_correo"];
                $_SESSION["usu_tipo"]   = $resultado["usu_tipo"];

                header("Location:" . Conectar::ruta() . "view/Home/");
                exit();
            } else {
                header("Location:" . Conectar::ruta() . "index.php?m=3"); // contraseña incorrecta
                exit();
            }
        } else {
            header("Location:" . Conectar::ruta() . "index.php?m=1"); // usuario no encontrado
            exit();
        }
    } else {
        header("Location:" . Conectar::ruta() . "index.php?m=0"); // formulario no enviado
        exit();
    }
}

        // TODO: Función para obtener todos los usuarios de la base de datos.
public function get_usuario(){
            $conectar = parent::conexion();
            parent::set_names();
            $sql = "SELECT * FROM tm_usuarios WHERE est = 1";
            $sql = $conectar->prepare($sql);
            $sql->execute();
            return $resultado = $sql->fetchAll();
        }

        // TODO: Función para insertar un nuevo usuario en la base de datos.
public function insert_usuario($usu_correo, $usu_nom, $usu_pass) {
        $conectar = parent::conexion();
        parent::set_names();

        // Encriptar la contraseña con password_hash
        $usu_pass_hashed = password_hash($usu_pass, PASSWORD_DEFAULT);

        // Preparar la consulta SQL con usu_tipo incluido
        $sql = "INSERT INTO tm_usuarios (
                    usu_id,
                    usu_correo,
                    usu_nom,
                    usu_pass,
                    est,
                    usu_tipo
                ) VALUES (
                    NULL, ?, ?, ?, '1', '1'
                )";

        $sql = $conectar->prepare($sql);
        $sql->bindValue(1, $usu_correo);
        $sql->bindValue(2, $usu_nom);
        $sql->bindValue(3, $usu_pass_hashed);


        // Ejecutar y retornar true/false según el resultado
        return $sql->execute();
    }


        // TODO: Función para actualizar un usuario existente en la base de datos.
public function update_usuario($usu_id, $usu_correo, $usu_nom, $usu_pass){
            $conectar = parent::conexion();
            parent::set_names();
            if (!empty($usu_pass)) {
            // Si hay contraseña nueva, la encriptamos
            $usu_pass = password_hash($usu_pass, PASSWORD_DEFAULT);

            $sql = "UPDATE tm_usuarios 
                    SET usu_correo = ?, usu_nom = ?, usu_pass = ?
                    WHERE usu_id = ?";
            $stmt = $conectar->prepare($sql);
            $stmt->execute([$usu_correo, $usu_nom, $usu_pass, $usu_id]);
        } else {
            // Si no hay cambio de contraseña, no la tocamos
            $sql = "UPDATE tm_usuarios 
                    SET usu_correo = ?, usu_nom = ?
                    WHERE usu_id = ?";
            $stmt = $conectar->prepare($sql);
            $stmt->execute([$usu_correo, $usu_nom, $usu_id]);
        }

            
    }

        // TODO: Función para eliminar un usuario de la base de datos.
public function delete_usuario($usu_id){
            $conectar = parent::conexion();
            parent::set_names();
            $sql = "UPDATE tm_usuarios SET est = 0 WHERE usu_id = ?";
            $sql = $conectar->prepare($sql);
            $sql->bindValue(1, $usu_id);
            $sql->execute();
            return $resultado = $sql->fetchAll();
    }

        // TODO: Función para obtener un usuario específico de la base de datos.
public function get_usuario_x_id($usu_id){
            $conectar = parent::conexion();
            parent::set_names();
            $sql = "SELECT * FROM tm_usuarios WHERE usu_id = ?";
            $sql = $conectar->prepare($sql);
            $sql->bindValue(1, $usu_id);
            $sql->execute();
            return $resultado = $sql->fetchAll();
        }

    }
?>