<?php 

require_once "conexion.php";

class  ModeloRol {

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

        try {
            $stms = Conexion :: conectar() -> prepare("INSERT INTO $tabla (nombre, descripcion) VALUES ( :nombre, :descripcion)");

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

            if ($stms -> execute()) {
                return "ok";
            }else {
                return "error";
            }


        } catch (PDOException $e) {
        error_log("Error en mdlIngresarRol: " . $e->getMessage());
        return "error";
        } finally {
            $stms = null; // liberar recursos
        }

    }

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

        if ($item != null) {
            
            $stms = Conexion :: conectar() -> prepare("SELECT * FROM $tabla WHERE $item =:$item");

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

            $stms -> execute();
            
            return $stms -> fetch();
        }else{

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

        }
        $stms -> close();

        $stms = null;
    }

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

        if ($item != null) {
            
            $stms = Conexion :: conectar() -> prepare("SELECT * FROM $tabla ur INNER JOIN rol r ON ur.rol_id = r.id INNER JOIN usuario u ON ur.usuario_id = u.id_usuario WHERE $item = :$item");

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

            $stms -> execute();
            
            return $stms -> fetch();
        }else{

             $stms = Conexion :: conectar() -> prepare("SELECT ur*, r.*,u.id_area FROM $tabla ur INNER JOIN rol r ON ur.rol_id = r.id INNER JOIN usuario u ON ur.usuario_id = u.id_usuario");
             $stms -> execute();
             return $stms -> fetchAll();

        }
        $stms -> close();

        $stms = null;
    }

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

            $stmt = Conexion ::conectar() -> prepare("UPDATE $tabla SET nombre = :nombre, descripcion= :descripcion WHERE id = :id");
            $stmt -> bindParam(":nombre", $datos["nombre"], PDO::PARAM_STR);
            $stmt -> bindParam(":descripcion", $datos["descripcion"], PDO::PARAM_STR);
            $stmt -> bindParam(":id", $datos["id"], PDO::PARAM_INT);

            if ($stmt -> execute()) {
                return "ok";
            }else{
                return "error";
            }

        } catch (PDOException $e) {

        error_log("Error en mdlEditarRol: " . $e->getMessage());
        return "error";
        } finally {
            $stmt = null; // liberar recursos
        }
    }

    static public function mdlBorrarRol($tabla, $datos){
        try {
            $stmt = Conexion::conectar() -> prepare("DELETE FROM $tabla WHERE id = :id");
            $stmt -> bindParam(":id", $datos, PDO::PARAM_INT);

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

    static public function mdlActualizarRol($tabla, $item1, $valor1, $item2, $valor2){

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

		$stmt -> bindParam(":".$item1, $valor1, PDO::PARAM_STR);
		$stmt -> bindParam(":".$item2, $valor2, PDO::PARAM_STR);

		if($stmt -> execute()){

			return "ok";
		
		}else{

			return "error";	

		}

		$stmt -> close();

		$stmt = null;

	}

}