<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Rol_model extends CI_Model {

    public function listar() {
        return $this->db->order_by('id', 'DESC')->get('roles')->result();
    }

    public function insertar($data) {
        $this->db->insert('roles', $data);
        return $this->db->insert_id();
    }
    public function obtener($id) {
        return $this->db->where('id', $id)->get('roles')->row();
    }

    public function actualizar($id, $data) {
        return $this->db->where('id', $id)->update('roles', $data);
    }

    public function existe_nombre($nombre, $id = null) {
        $this->db->where('nombre', $nombre);
        if ($id !== null) {
            $this->db->where('id !=', $id);
        }
        return $this->db->get('roles')->num_rows() > 0;
    }

    public function cambiarEstado($id, $estado) {
        return $this->db->where('id', $id)->update('roles', array('estado' => $estado));
    }

    public function getPermisosRol($rol_id) {
        $this->db->select('permiso_id');
        $this->db->where('rol_id', $rol_id);
        $result = $this->db->get('rol_permiso')->result();

        $permisos = array();
        foreach ($result as $row) {
            $permisos[] = $row->permiso_id;
        }

        return $permisos;
    }

    public function guardarPermisos($rol_id, $permisos = array()) {
        $this->db->where('rol_id', $rol_id);
        $this->db->delete('rol_permiso');

        if (!empty($permisos)) {
            foreach ($permisos as $permiso_id) {
                $this->db->insert('rol_permiso', array(
                    'rol_id' => $rol_id,
                    'permiso_id' => $permiso_id
                ));
            }
        }

        return true;
    }
}