<?php if ( ! defined('BASEPATH')) exit('No esta permitido el acceso directo al script');
/*Mauricio García - garmauco@gamial.com, developer@3mas1r.com*/
class Rol extends CI_Controller{
	public function __construct()
	{
		/*Cargamos los metodos asociados a la clase CI_Controller, por medio de una inyección de dependencias*/
		parent:: __construct();
		$this->load->model('Rol_model');

        if( !$this->session->userdata('isLoggedIn') ) {
          redirect('login');
        }
        else{
           $this->load->model('Usuario_model');
           $this->Usuario_model->last_activity($this->session->userdata('nombre_usuario'));
        }
	}

	public function index()
	{
		$this->show_form();
    }

    public function add(){
        $id=NULL;
        $this->form_validation->set_rules('nombre', 'Nombre', 'required|trim|min_length[2]|callback_name_exists['.$id.']');/*hacemos un callback de la funcion para comparar el email*/
        if ($this->form_validation->run() == FALSE){
    	   $this->show_form(NULL,'index');
    	}
        else{
            $data = $this->input->post();
            $nombre = $data['nombre'];
            $this->Rol_model->add($nombre);
            $this->session->set_flashdata('success_msg', 'El Registro se Guardo exitosamente');
            redirect('/rol', 'refresh');
        }
    	
    	
    }

    public function delete($id = NULL){
        if ($id != NULL){
            $this->Rol_model->delete($id);
        }
        redirect('/rol', 'refresh');
    }

    public function edit($id = NULL){
        if ($id != NULL){
            $this->show_form('1','edit', $id);
        }
        else{
            redirect('/rol', 'refresh');
        }
    }

    public function name_exists($nombre, $id){

        $validation = $this->Rol_model->name_duplicate($id, $nombre);
        if ($validation === TRUE){
            $this->form_validation->set_message('name_exists', 'El Nombre '.$nombre.' ya se encuentra registrado');
            return FALSE;
        }
    }
    
    /*funcion que muestra el formulario y los errores de validación*/
    public function show_form($model = NULL, $page='index', $id = NULL){
        if ($model != NULL){
            $data['rol'] = $this->Rol_model->edit($id);
        }
        $data['modalDelete'] ='Active';/*Vista usada para la confirmacion de eliminación de un registro*/
        $data['content'] = "rol/".$page;
        $data['pagination'] = "rol/pagination";
        $data['title_page'] = "Gestión de Roles";
        $this->load->view("templates/layout", $data);

    }
    /*Actualizar información del Registro*/
    public function update(){
        $data = $this->input->post();
        $id = $data['id'];
        $nombre = $data['nombre'];

        $this->form_validation->set_rules('nombre', 'Nombre', 'required|trim|min_length[2]|callback_name_exists['.$id.']');/*hacemos un callback de la funcion para comparar el email*/
        
        if ($this->form_validation->run() == FALSE){
           $this->show_form('error','edit',$id);
        }
        else{
            $this->Rol_model->update($id, $nombre);
            $this->session->set_flashdata('success_msg', 'El Registro ha sido Actualizado');
            redirect('/rol', 'refresh');
        }
    }
    /*Obtenemos todos los registros y los convertimos a formato json para usarlos en Angular*/
    public function pagination(){
        //header('Content-Type: application/json');
        $list = $this->Rol_model->get_all();
        echo json_encode($list);

    }
}
?>