<?php if ( ! defined('BASEPATH')) exit('No esta permitido el acceso directo al script');
/*Mauricio García - garmauco@gmail.com, developer@3mas1r.com*/
class Contrato extends CI_Controller{
    var $page = "contrato";
	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('Contrato_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_CONTRATO){
						 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('nro_contrato', 'Nro de Contrato', 'required|trim|callback_contrato_exists['.$id.']');/*hacemos un callback de la funcion para comparar el NIt*/
        $this->form_validation->set_rules('empresa', 'Empresa', 'required|trim');
        $this->form_validation->set_rules('usuario', 'Usuario', 'required|trim');
        $this->form_validation->set_rules('fecha_inicial', 'Fecha Inicial', 'required|trim');
        if ($this->input->post('sin_finalizar') == '0'){ //si la opcion sin finalizar contrado es igual a 0/false se valida la fecha final
            $this->form_validation->set_rules('fecha_final', 'Fecha Final', 'required|trim');
        }
        $this->form_validation->set_rules('cargo', 'Cargo', 'required|trim');
        $this->form_validation->set_rules('asignacion_mensual', 'Asignación Mensual', 'required|trim');

        $this->form_validation->set_rules('estado', 'Estado', 'required|trim');

        if ($this->form_validation->run() == FALSE){
    	   $this->show_form(NULL,'index');
    	}
        else{
            $data = $this->input->post();
            //$nro_contrato = $data['nro_contrato'];
            $empresa = $data['empresa'];
            $usuario = $data['usuario'];
            $fecha_inicial = $data['fecha_inicial'];
            if (isset($data['fecha_final']))
                $fecha_final = $data['fecha_final'];
            else
                $fecha_final=NULL;
            $sin_finalizar = $data['sin_finalizar'];
            $cargo = $data['cargo'];
            $asignacion_mensual = $data['asignacion_mensual'];
            $transporte = $data['transporte'];
            $estado = $data['estado'];

            $this->Contrato_model->add($empresa,$usuario,$fecha_inicial,$fecha_final,
            $sin_finalizar,$cargo,$asignacion_mensual,$transporte,$estado);
            $this->session->set_flashdata('success_msg', 'El Registro se Guardo exitosamente');
            redirect('/'.$this->page, 'refresh');
        }


    }

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

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

    public function contrato_exists($nro_contrato, $id){

        $validation = $this->Contrato_model->contrato_duplicate($id, $nro_contrato);
        if ($validation === TRUE){
            $this->form_validation->set_message('contrato_exists', 'El Nro de Contrato '.$nit.' ya se encuentra registrado');
            return FALSE;
        }
        else{
            return TRUE;
        }
    }

    /*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['contrato'] = $this->Contrato_model->edit($id);
        }
        $data['empresas'] = $this->Contrato_model->empresas();
        $data['usuarios'] = $this->Contrato_model->usuarios();
        $data['cargos'] = $this->Contrato_model->cargos();
        $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 Contratos";
        $this->load->view("templates/layout", $data);

    }


	  /*Actualizar información del Registro*/
    public function update(){
        $data = $this->input->post();
        $id = $data['id'];
        //$nro_contrato = $data['nro_contrato'];
        $empresa = $data['empresa'];
        $usuario = $data['usuario'];
        $fecha_inicial = $data['fecha_inicial'];
        if (isset($data['fecha_final']))
            $fecha_final = $data['fecha_final'];
        else
            $fecha_final=NULL;
        $sin_finalizar = $data['sin_finalizar'];
        $cargo = $data['cargo'];
        $asignacion_mensual = $data['asignacion_mensual'];
        $transporte = $data['transporte'];
        $estado = $data['estado'];
        //$this->form_validation->set_rules('nro_contrato', 'Nro de Contrato', 'required|trim|callback_contrato_exists['.$id.']');/*hacemos un callback de la funcion para comparar el NIt*/
        $this->form_validation->set_rules('empresa', 'Empresa', 'required|trim');
        $this->form_validation->set_rules('usuario', 'Usuario', 'required|trim');
        $this->form_validation->set_rules('fecha_inicial', 'Fecha Inicial', 'required|trim');
        if ($this->input->post('sin_finalizar') == '0'){ //si la opcion sin finalizar contrado es igual a 0/false se valida la fecha final
            $this->form_validation->set_rules('fecha_final', 'Fecha Final', 'required|trim');
        }
        $this->form_validation->set_rules('cargo', 'Cargo', 'required|trim');
        $this->form_validation->set_rules('asignacion_mensual', 'Asignación Mensual', 'required|trim');

        $this->form_validation->set_rules('estado', 'Estado', 'required|trim');

        if ($this->form_validation->run() == FALSE){
           $this->show_form('error','edit',$id);
        }
        else{
            $this->Contrato_model->update($id,$empresa,$usuario,$fecha_inicial,$fecha_final,
            $sin_finalizar,$cargo,$asignacion_mensual,$transporte,$estado);
            $this->session->set_flashdata('success_msg', 'El Registro ha sido Actualizado');
            redirect('/'.$this->page, '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->Contrato_model->get_all();
        echo json_encode($list);

    }
}
?>
