<?php 

require_once "conexion.php";

class ModeloModulo {

    static public function MdlMostrarModulo($tabla, $item, $valor){

        if($item != null){

            $stmt = Conexion:: conectar()->prepare("SELECT * FROM $tabla WHERE $item = :$item");

            $stmt -> bindParam(":".$item, $valor, PDO::PARAM_STR);
            
            $stmt -> execute();

            return $stmt -> fetch();

        }else {

            $stmt = Conexion:: conectar()->prepare("SELECT * FROM $tabla");
            
            $stmt -> execute();

            return $stmt -> fetchAll();
        }

        
    }
    /** Registro de modulo */

    static public function mdlIngresarModulo($tabla, $datos){

        try {

            $stmt = Conexion:: conectar()->prepare("INSERT INTO $tabla(nombre) VALUES (:nombre)");
            
            $stmt -> bindParam(":nombre", $datos["nombre"], PDO::PARAM_STR);
            

            if($stmt -> execute()){
                return "ok";
            }else{
                return "error";
            }
        
       } catch (PDOException $e) {
        // Log para depuración
        error_log("Error en mdlIngresarModulo: " . $e->getMessage());
        return "error";
        } finally {
            $stmt = null; // liberar recursos
        }

        
    }

    static public function mdlEditarModulo($tabla, $datos){
        try {

            $stmt = Conexion::conectar()->prepare("UPDATE $tabla SET nombre = :nombre WHERE id = :id");

            $stmt -> bindParam(":id", $datos["id"], PDO::PARAM_STR);
            $stmt -> bindParam(":nombre", $datos["nombre"], PDO::PARAM_STR);


            if($stmt -> execute()){

                return "ok";
                
            
            }else{

                return "error";	

            }

		} catch (PDOException $e) {
        // Log para depuración
        error_log("Error en mdlEditarModulo: " . $e->getMessage());
        return "error";
        } finally {
            $stmt = null; // liberar recursos
        }

    }

     /*=============================================
	BORRAR Modulo
	=============================================*/
    static public function mdlDesactivarModulo($tabla, $datos){
    try {
        $db = Conexion::conectar();
        // 2) Desactivar todos los permisos asociados al módulo
        $stmt1 = $db->prepare("UPDATE permiso SET activo = 0 WHERE modulo_id = :modulo_id");
        $stmt1->bindParam(":modulo_id", $datos, PDO::PARAM_INT);
        $stmt1->execute();

        // 3) Desactivar también en rol_permiso (opcional, si quieres reflejarlo)
        $stmt2 = $db->prepare("
            UPDATE rol_permiso rp
            INNER JOIN permiso p ON rp.permiso_id = p.id
            SET rp.activo = 0
            WHERE p.modulo_id = :modulo_id
        ");
        $stmt2->bindParam(":modulo_id", $datos, PDO::PARAM_INT);
        $stmt2->execute();

        return "ok";

    } catch (PDOException $e) {
        error_log("Error en mdlDesactivarModulo: " . $e->getMessage());
        return "error";
    } finally {
        $stmt = null;
        $stmt1 = null;
        $stmt2 = null;
    }
}


	

}