<?php if ( ! defined('BASEPATH')) exit('No esta permitido el acceso directo al script');
/*Mauricio García - garmauco@gmail.com, developer@3mas1r.com*/
class Documento extends CI_Controller{
    var $page = "documento";
	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('Documento_model');


       if( !$this->session->userdata('isLoggedIn') ) {
          redirect('login');
       }
       else{
           $this->load->model('Usuario_model');
           $rol=$this->Usuario_model->usuario_rol($this->session->userdata('documento'));
					 if ($rol > MODULE_DOCUMENTO){
						 redirect('dashboard');
					 }
           $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('documento', 'Documento', 'required|trim|');/*hacemos un callback de la funcion para comparar el NIt*/
        $this->form_validation->set_rules('tipo_documento', 'Tipo de Documento', 'required|trim');
        $this->form_validation->set_rules('usuario', 'Usuario', 'required|trim');
        $this->form_validation->set_rules('mes', 'Mes', 'required|trim');
        $this->form_validation->set_rules('anio', 'Año', 'required|trim');

        if (empty($_FILES['documento']['name']))
        {
            $this->form_validation->set_rules('documento', 'Documento', 'required');
        }

        if ($this->form_validation->run() == FALSE){
    	     $this->show_form(NULL,'index');
    	  }
        else{
            $data = $this->input->post();

            $documento = 'documento';
            $len=12;
            $true=TRUE;
            $bytes = openssl_random_pseudo_bytes($len,$true);
            $hex   = bin2hex($bytes);
            $doc="doc_".$hex;
            $fileExt = pathinfo($_FILES["documento"]["name"], PATHINFO_EXTENSION);
            //print_r($fileExt);
            $doc_name=$doc.".".$fileExt;

            $config['upload_path'] = "uploads/documents";
            $config['file_name'] = $doc_name;
            $config['allowed_types'] = "pdf|doc|xls|docx|xlsx";
            $config['max_size'] = "50000";
            $tipo_documento = $data['tipo_documento'];
            $usuario = $data['usuario'];
            $mes = $data['mes'];
            $anio = $data['anio'];

            $validation = $this->Documento_model->documento_duplicate($tipo_documento,$usuario,$mes,$anio);
            if ($validation === TRUE){
              $this->session->set_flashdata('error_msg', 'El documento, tipo, Usuario, mes y año ya se encuentran registrados');
              redirect('/'.$this->page, 'refresh');
            }


            $this->load->library('upload', $config);
              if ( ! $this->upload->do_upload('documento'))
                {
                        $error = array('error' => $this->upload->display_errors());
                        $this->session->set_flashdata('error_msg', "Ha ocurrido un error al subir el documento, intentelo de nuevo");
                        redirect('/'.$this->page, 'refresh');
                }
                else
                {
                  $this->Documento_model->add($doc_name,$tipo_documento,$usuario,$mes,$anio);
                  $this->session->set_flashdata('success_msg', 'El Registro se Guardo exitosamente');
                  redirect('/'.$this->page, 'refresh');
                }

        }


    }

    public function delete($idparam = NULL){
        $data = $this->input->post();
        $idpost = $data['id'];
        if ($idparam != NULL){
          $id=$idparam;
        }
        if ($idpost != NULL ){
          $id=$idpost;
        }
        if ($id!= NULL){
            $file_name = $this->Documento_model->file_name($id);
            $this->Documento_model->delete($id);
              $ruta=FCPATH."uploads/documents/".$file_name;
              unlink($ruta);
        }
        redirect('/'.$this->page, 'refresh');
    }

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



    /*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['documento'] = $this->Documento_model->edit($id);
        }
        $data['tipo_documentos'] = $this->Documento_model->tipo_documento();
        $data['usuarios'] = $this->Documento_model->usuarios();
        $data['modalDelete'] ='Active';/*Vista usada para la confirmacion de eliminación de un registro*/
        $data['content'] = $this->page."/".$page;
        $data['pagination'] = $this->page."/pagination";
        $data['title_page'] = "Gestión de Documentos";
        $this->load->view("templates/layout", $data);

    }


    /*Obtenemos todos los registros y los convertimos a formato json para usarlos en Angular*/
    public function pagination(){
        //header('Content-Type: application/json');
        $list = $this->Documento_model->get_all();
        echo json_encode($list);

    }
}
?>
