<?php
require_once('DataManager.Class.php');

class Usuario {

    public $conn;

    function __construct($c) {

        if(isset($c)){
                $this->conn = $c;
        } else {
                $this->conn = DataManager::getInstance();
		}

	}

	public function recuperaClave($username, $clave) {
		$stmt = $this->conn->prepare("{CALL agenda.SP_usuario_recuperar_cuenta_funcionario (?, ?)}");
		$stmt->bindValue(1, $username, PDO::PARAM_STR);
		$stmt->bindValue(2, $clave, PDO::PARAM_STR);
		$stmt->execute();
		
		return $stmt->fetch();
	}
	
	public function verificaClave($username, $clave) {

		$stmt = $this->conn->prepare("{CALL agenda.SP_funcionario_clave_verifica (?, ?)}");
		$stmt->bindValue(1, $username, PDO::PARAM_STR);
		$stmt->bindValue(2, $clave, PDO::PARAM_STR);
		$stmt->execute();		
		return $stmt->fetch();
	}


	public function muestraUsuario($usrID, $tipo_retorno) {	
		$stmt = $this->conn->prepare("{CALL agenda.SP_persona_por_usuario_informacion (?)}");
		$stmt->bindValue(1, $usrID, PDO::PARAM_INT);
		$stmt->execute();
		if($tipo_retorno == 0) {
			return $stmt->fetch();
		} else {
			return $stmt->fetchAll();
		}
	}

    public function muestraUsuario_Modulos($id_perfil, $tipo_retorno) {
		$stmt = $this->conn->prepare("{CALL agenda.SP_usuario_entrega_modulo(?)}");
		$stmt->execute(array($id_perfil));
		if ($tipo_retorno == 0) {
			return $stmt->fetch();
		} else {
			return $stmt->fetchAll();
		}
	}

    public function informacionRol($rolID, $tipo_retorno) {	
		$stmt = $this->conn->prepare("{CALL agenda.SP_rol_informacion (?)}");
		$stmt->bindValue(1, $rolID, PDO::PARAM_INT);
		$stmt->execute();
		if($tipo_retorno == 0) {
			return $stmt->fetch();
		} else {
			return $stmt->fetchAll();
		}
	}
    
    public function muestraRolPermisosAsignados($rolID) {	
		$stmt = $this->conn->prepare("{CALL agenda.SP_rol_permisosAsignados_informacion (?)}");
		$stmt->bindValue(1, $rolID, PDO::PARAM_INT);
		$stmt->execute();
		return $stmt->fetchAll();
	}   

	public function modificarUsuario_Clave($usrUID, $clave_actual, $clave_nueva) {
		$stmt = $this->conn->prepare("{CALL agenda.SP_usuario_clave_modifica (?, ?, ?)}");
		$stmt->execute(array($usrUID, $clave_actual, $clave_nueva ));
		// $stmt->execute();

        return $stmt->fetch();	
    }

    
    /*
    
    
    
    
    public function modificarSocioDatosBasicos($soc_UID, $fec_nacimiento, $genero, $cmb_comuna, $direccion, $telefono, $email) {

		$stmt = $this->conn->prepare("CALL SP_socio_modificaDatosBasicos(?, ?, ?, ?, ?, ?, ?)");
		$stmt->execute(array($soc_UID, $fec_nacimiento,$genero, $cmb_comuna, $direccion, $telefono, $email));
		return $stmt->fetch();

	}

	public function modificarUsuario_Clave(
						$usrUID, $clave_actual, $clave_nueva) {

            $stmt = $this->conn->prepare("CALL SP_usuario_modifica_clave(?, ?, ?)");
            $stmt->execute(array(
						$usrUID, $clave_actual, $clave_nueva));
            return $stmt->fetch();

    }
    */

	function Begin() {
    	$this->conn->beginTransaction();
    }

	function Commit() {
    	$this->conn->commit();
    }

	function Rollback() {
    	$this->conn->rollback();
    }

	function Identity() {
    	$stmt = $this->conn->prepare("SELECT LAST_INSERT_ID() AS ID");
		$stmt->execute();
		if($row = $stmt->fetch()) {
			$ret = $row['ID'];
		}
		return($ret);
    }

    function Close() {

        $this->conn = null;

    }
}
?>