<?php
class RolesModel extends ModelBase{

    public $tableName = 'sis_role';
    public $id = array('key'=>'idrole','value'=>'');

    public function addItem($datos){
        $this->setFieldArray($datos);
        list($resultado,$id,$mensaje) = $this->insert();
        return array ($resultado,$id,$mensaje);
    }

    public function DeleteItem(){
        list($resultado,$mensaje) = $this->delete();
        return array ($resultado,$mensaje);
    }

    public function UpdateItem($datos){
        $this->setFieldArray($datos);
        list($resultado,$mensaje) = $this->update();
        return array ($resultado,$mensaje);
    }
    
    public function getRoles($datos = array("inicio" => 0, "tamanio" => 5)){
        $query = "SELECT * FROM sis_role";
        $consulta = $this->db->prepare($query);
        $consulta->execute();
        $num_filas = $consulta->rowCount();

        $parametros = array("total" => $num_filas, "inicio" => $datos['inicio'], "pagina" =>  $datos['tamanio']);
        list($paginas,$navegador) = $this->getPager($parametros);

        $consulta = $this->db->prepare($query.' LIMIT '.$datos['inicio'].' , '.$datos['tamanio'].' ');
        $consulta->execute();

        return array($consulta,$paginas,$navegador);
    }

    //JASYRC 03JUN2010
    public function getRole($idrole){
        $query = "SELECT * FROM sis_role WHERE idrole = $idrole";
        $result = $this->db->prepare($query);
        $result->execute();
        return $result;
    }

    public function newRole(){
        $query = "SELECT sis_function.*  FROM  sis_function";
        $consulta = $this->db->prepare($query);
        $consulta->execute();
        return $consulta;
    }

    //JASYRC 26JUL2010
    function getFunctionbyCat($cat){
        $query = "SELECT * FROM sis_function"
                ." WHERE category = '$cat'";
        $result = $this->db->prepare($query);
        $result->execute();
        $num_rows = $result->rowCount();
        return array($result, $num_rows);
    }

    //JASYRC 26JUL2010
    function getFunctions($cat, $idrole){
        $query = "SELECT sf.*, srf.idrole FROM sis_rolexfunction AS srf"
                ." INNER JOIN sis_function AS sf"
                ." ON srf.idfunction = sf.idfunction"
                ." WHERE sf.category = '$cat' AND srf.idrole = $idrole";
        $result = $this->db->prepare($query);
        $result->execute();
        return $result;
    }
    
    public function addFunction($function, $idrole){
        for($i = 0; $i < count($function); $i++){
            $query = "INSERT INTO sis_rolexfunction (idrole, idfunction) VALUES ("
                    . $idrole.", ".$function[$i].")";
            $result = $this->db->prepare($query);
            $result->execute();
        }

        return $result;
    }

    public function upgrade($data_role, $functions){
        $query = "DELETE FROM sis_rolexfunction WHERE idrole = ".$data_role['idrole'];
        $result = $this->db->prepare($query);
        $result->execute();

        for($i = 0; $i < count($functions); $i++){
            $query = "INSERT INTO sis_rolexfunction (idrole, idfunction) VALUES ("
                    . $data_role['idrole'].", ".$functions[$i].")";
            $result = $this->db->prepare($query);
            $result->execute();
        }

        return $result;
    }

    public function DeleteFunction($id){
        $query = "DELETE FROM sis_rolexfunction WHERE idrole = ".$id;
        $result = $this->db->prepare($query);
        $result->execute();
        return $result;
    }
}
?>
