<?php
/*****************************************************************************************************************************************
 * DEV: CONTRALORIA DE ESTADOS
 * PROYECTO: SISTEMA INTEGRAL ADMINISTRATIVO DE CONTRALORIAS DE ESTADOS
 * MODULO: Control de Documentos
 * PROCESO: Entrada de Documentos Externos
 * PROGRAMADORES:
 * | # |          NOMBRES Y APELLIDOS              |               CORREO               |          TELEFONO              |
 * | 1 |          Ana Hurtado                    |ahurtado@contraloriadebolivar.gob.ve   |         0416-6867197           |
 * |   |                                           |                                    |                                |
 * |___|___________________________________________|____________________________________|________________________________|
 *
 * VERSION
 *
 * |          PROGRAMADOR                  |          FECHA          |       VERSION      |
 * |               #1                      |        03-08-2015       |         1.0        |
 * |                                       |                         |                    |
 * |_______________________________________|_________________________|____________________|
 *
 *****************************************************************************************************************************************/

class entdocumenexternoControlador extends Controlador
{
    private $atTipoDocumento;
	private $atTipoDependencia;

    public function __construct()
    {
        parent::__construct();
        $this->atTipoDocumento=$this->metCargarModelo('entdocumenexterno');
		$this->atTipoDependencia=$this->metCargarModelo('dependencia');
		
    }

    public function metIndex()
    {
        $complementosCss = array(
            'DataTables/jquery.dataTables',
            'DataTables/extensions/dataTables.colVis941e',
            'DataTables/extensions/dataTables.tableTools4029',
            'bootstrap-datepicker/datepicker'
        );
		
		 $complementoJs = array(
            'jquery-validation/dist/jquery.validate.min',
            'jquery-validation/dist/additional-methods.min',
            'bootstrap-datepicker/bootstrap-datepicker',
            'select2/select2.min'
        );
		
        //$js[] = 'materialSiace/core/demo/DemoTableDynamic';
        $js= array('materialSiace/core/demo/DemoTableDynamic','Aplicacion/appFunciones','materialSiace/core/demo/PipeLine');
        $this->atVista->metCargarCssComplemento($complementosCss);
		$this->atVista->metCargarJsComplemento($complementoJs);
        $this->atVista->metCargarJs($js);
        $usuario = Session::metObtener('idUsuario');
        #SI NO EXISTEN DATOS DE FECHA INICIAL LO PONEMOS DESDE EL 1RO DEL MES ACTUAL
		if(isset($_POST['desde']) and !empty($_POST['desde']))
        {
            $mes_inicio=$_POST['desde'];
        }else{
            $mes_inicio=date('Y-m').'-01';
        }
        if(isset($_POST['hasta']) and !empty($_POST['hasta']))
        {
            $fecha_actual=$_POST['hasta'];
        }else {
            $fecha_actual = date('Y-m-d');
        }
        if(isset($_POST['dependencia']) and !empty($_POST['dependencia']))
        {
            $dependencia=$_POST['dependencia'];
        }else {
            $dependencia = "";
        }

        #ASIGNO VARIABLES A LA VISTA
        $this->atVista->assign('fk_a004_num_dependencia',$dependencia);
        $this->atVista->assign('desde',$mes_inicio);
        $this->atVista->assign('hasta',$fecha_actual);
        $this->atVista->assign('dependencia',$this->atTipoDocumento->metListarTipoCorrespondencia());

        $this->atVista->assign('listado',$this->atTipoDocumento->metListarTipoDocumento());
        $this->atVista->metRenderizar('listado');
    }
	
 public function metProveedor($proveedor)
    {
        $this->atVista->assign('lista', $this->atTipoDocumento->metListaPersona2());
        $this->atVista->assign('tipoProveedor', $proveedor);
        $this->atVista->metRenderizar('proveedor', 'modales');
    }
	
	  	
	 public function metPersona($persona)
    {
        $this->atVista->assign('lista', $this->atTipoDocumento->metListaPersona());
        $this->atVista->assign('tipoPersona', $persona);
        $this->atVista->metRenderizar('persona', 'modales');
    }
	
	 public function metEmpresa($empresa)
    {
        $this->atVista->assign('lista', $this->atTipoDocumento->metListarProveedor());
        $this->atVista->assign('tipoEmpresa', $empresa);
        $this->atVista->metRenderizar('empresa', 'modales');
    }

		
    public function metCrearModificar()
    {
	
		  $js[] = 'modCD/modCDFunciones';
	
		$complementosCss = array(
            'bootstrap-datepicker/datepicker',
			'select2/select201ef'
        );
        $complementosJs = array(
            'bootstrap-datepicker/bootstrap-datepicker',
			'inputmask/jquery.inputmask.bundle.min',
			'select2/select2.min'
        );
	

        $this->atVista->metCargarCssComplemento($complementosCss);
        $this->atVista->metCargarJsComplemento($complementosJs);
		$this->atVista->metCargarJs($js);
// ,'num_folio','num_anexo','num_carpeta',
		$valido=$this->metObtenerInt('valido');
        $idDocumento=$this->metObtenerInt('idDocumento');
		$idDependencia = $this->metObtenerInt('idDependencia');
        if($valido==1){
            $this->metValidarToken();
            $Excceccion=array('num_particular_rem','num_depend_ext','num_org_ext','num_folio','num_anexo','num_carpeta','num_empresa','txt_descripcion_asunto','ind_descripcion_anexo','fec_documento','fec_registro','text_asunto');
			$alphaNum = $this->metValidarFormArrayDatos('form', 'alphaNum',$Excceccion);
            $ind = $this->metValidarFormArrayDatos('form', 'int',$Excceccion);
            $txt = $this->metValidarFormArrayDatos('form', 'txt',$Excceccion);
            if ($alphaNum != null && $ind == null && $txt==null) {
                $validacion = $alphaNum;
            } elseif ($alphaNum == null && $ind != null && $txt==null) {
                $validacion = $ind;
            } elseif($alphaNum != null && $ind != null && $txt==null) {
                $validacion = array_merge($alphaNum, $ind);
            } elseif($alphaNum != null && $txt != null &&$ind == null) {
                $validacion = array_merge($alphaNum, $txt);
            } elseif($ind != null && $txt != null && $alphaNum == null) {
                $validacion = array_merge($ind, $txt);
            }else{
                $validacion = array_merge($ind, $txt,$alphaNum);
            }

            if(in_array('error',$validacion)){
                $validacion['status']='error';
                echo json_encode($validacion);
                exit;
            }
				
		
            if(!isset($validacion['ind_estado'])){
                $validacion['ind_estado']='Pendiente';
            }
			
			if(!isset($validacion['num_folio'])){
                $validacion['num_folio']=0;
            }
			
			if(!isset($validacion['num_anexo'])){
                $validacion['num_anexo']=0;
            }
			
			if(!isset($validacion['num_carpeta'])){
                $validacion['num_carpeta']=0;
            }
	
			  if(!isset($validacion['num_particular_rem'])){
                $validacion['num_particular_rem']=0;
            }
			  if(!isset($validacion['num_depend_ext'])){
                $validacion['num_depend_ext']=0;
            }
			  if(!isset($validacion['num_org_ext'])){
                $validacion['num_org_ext']=0;
            }
			
			  if(!isset($validacion['ind_descripcion_anexo'])){
                $validacion['ind_descripcion_anexo']=NULL;
            }
	
			  if(!isset($validacion['num_empresa'])){
                $validacion['num_empresa']=0;
            }
			
			  if(!isset($validacion['ind_representante'])){
                $validacion['ind_representante']=NULL;
            }
			
			  if(!isset($validacion['ind_cargo'])){
                $validacion['ind_cargo']=NULL;
            }

            if($idDocumento==0){
                $id=$this->atTipoDocumento->metCrearTipoDocumento(
                    $validacion['num_documento'],
                    $validacion['fec_documento'],
                    $validacion['fec_registro'],
				    $validacion['text_asunto'],
                    $validacion['txt_descripcion_asunto'],
                    $validacion['ind_persona_recibido'],
                    $validacion['num_folio'],
                    $validacion['num_anexo'],
                    $validacion['num_carpeta'],
                    $validacion['ind_descripcion_anexo'],
				    $validacion['ind_nombre_mensajero'],
                    $validacion['ind_cedula_mensajero'],
                    $validacion['ind_estado'],
                    $validacion['num_particular_rem'],
                    $validacion['num_depend_ext'],
                    $validacion['fk_cdc003_num_tipo_documento'],
                    $validacion['num_org_ext'],
                    $validacion['num_empresa']);
                    $validacion['status']='nuevo';
            }else{
                $id=$this->atTipoDocumento->metModificarTipoDocumento(
                    $validacion['num_documento'],
                    $validacion['fec_documento'],
                    $validacion['fec_registro'],
				$validacion['text_asunto'],
                    $validacion['txt_descripcion_asunto'],
                    $validacion['ind_persona_recibido'],
                    $validacion['num_folio'],
                    $validacion['num_anexo'],
                    $validacion['num_carpeta'],
                    $validacion['ind_descripcion_anexo'],
				$validacion['ind_nombre_mensajero'],
                    $validacion['ind_cedula_mensajero'],
                    $validacion['ind_estado'],
                    $validacion['num_particular_rem'],
                    $validacion['num_depend_ext'],
                    $validacion['fk_cdc003_num_tipo_documento'],
                    $validacion['num_org_ext'],
                    $validacion['num_empresa'],
				$idDocumento);
                $validacion['status']='modificar';
            }

         
            if(is_array($id)){
                foreach ($validacion as $titulo => $valor){
                    if(strpos($id[2],$validacion[$titulo])){
                        $validacion[$titulo]='error';
                    }
                }
                $validacion['status']='errorSQL';
                echo json_encode($validacion);
                exit;
            }
            $validacion['idDocumento']=$id;

            echo json_encode($validacion);
            exit;
        }


        if($idDocumento!=0){
            $this->atVista->assign('formDB',$this->atTipoDocumento->metMostrarTipoDocumento($idDocumento));
			$this->atVista->assign('idDocumento',$idDocumento);
			
			
	//	var_dump($this->atTipoDocumento->metListarOrganismo($lista)); 
		//	exit;
            
             
        }
        $lista=$this->atTipoDocumento->metListarOrganismoEnte();
        $this->atVista->assign('lista',$lista);
		
		  $exdependencia=$this->atTipoDocumento->metListarDependencia();
        $this->atVista->assign('exdependencia',$exdependencia);
		
		$centroCosto = $this->atTipoDocumento->metListarCentroCosto();
		 $this->atVista->assign('centroCosto',$centroCosto);
		 
		$corresp=$this->atTipoDocumento->metListarCorrespon();
        $this->atVista->assign('corresp',$corresp);

		
        $this->atVista->metRenderizar('CrearModificar','modales');
    }
	
	    #para armar json centro de costos
    public function metJsonCentroCosto()
    {

        $idDependencia = $this->metObtenerInt('idDependencia');
        $centro_costo  = $this->atTipoDocumento->metJsonCentroCosto($idDependencia);
        echo json_encode($centro_costo);
        exit;

    }
	
	public function metVer()
    {
		
		$js[] = 'modCD/modCDFunciones';
		$complementosCss = array(
            'bootstrap-datepicker/datepicker',
        );
        $complementosJs = array(
            'bootstrap-datepicker/bootstrap-datepicker',
        );

        $this->atVista->metCargarJs($js);
		$this->atVista->metCargarCssComplemento($complementosCss);
        $this->atVista->metCargarJsComplemento($complementosJs);
		

		$valido=$this->metObtenerInt('valido');
        $idDocumento=$this->metObtenerInt('idDocumento');
       


        if($idDocumento!=0){
            $this->atVista->assign('formDB',$this->atTipoDocumento->metMostrarTipoDocumento($idDocumento));
			$this->atVista->assign('idDocumento',$idDocumento);
    
        }
        
		
   
       $lista=$this->atTipoDocumento->metListarOrganismoEnte();
        $this->atVista->assign('lista',$lista);
		
		  $exdependencia=$this->atTipoDocumento->metListarDependencia();
        $this->atVista->assign('exdependencia',$exdependencia);
		
		$centroCosto = $this->atTipoDocumento->metListarCentroCosto();
		 $this->atVista->assign('centroCosto',$centroCosto);
		 
		 $corresp=$this->atTipoDocumento->metListarCorrespon();
        $this->atVista->assign('corresp',$corresp);
		
		
        $this->atVista->assign('ver', 1);
        $this->atVista->metRenderizar('CrearModificar','modales');
    }

	public function metJsonDataTablaDocumentos($desde=false, $hasta=false, $pk_num_documento=false)
    {   
        #obtengo los rodes de usuario, Nota: esto es obligatorio
        $rol = Session::metObtener('perfil');
        #cacturo la busqueda enviada por la datatabla, Nota: esto es obligatorio
        $busqueda = $this->metObtenerFormulas('search');
        #construyo el sql, Nota: esto es obligatorio
        
        #tipo de documento a filtar
        $where = "";
        if ($pk_num_documento) {
            $where .= " AND cd_c004.fk_cdc003_num_tipo_documento = '$pk_num_documento'";
        }
        #fecha a filtar
        if($desde > $hasta){ 
            $hasta = $desde;
        }
        if($desde && $hasta){
            $where .= " AND cd_c004.fec_registro >= '$desde' AND cd_c004.fec_registro <= '$hasta' ";
        }else{
            $desde = date('Y-m').'-01';
            $hasta = date('Y-m-d');
            $where .= " AND cd_c004.fec_registro >= '$desde' AND cd_c004.fec_registro <= '$hasta' ";
        }
        
        #consulta
        $sql = "SELECT
                    cd_c004.*,
                    a001.ind_descripcion_empresa,
                    a021.ind_descripcion,
                    CASE
                      WHEN cd_c004.ind_estado ='PE' THEN 'PENDIENTE'
                        WHEN cd_c004.ind_estado ='RE' THEN 'RECIBIDO'
                        WHEN cd_c004.ind_estado ='EV' THEN 'ENVIADO'
                        WHEN cd_c004.ind_estado ='AN' THEN 'ANULADO'
                        ELSE ' '
                    END AS estado
                    
                FROM
                    cd_c004_documento_entrada cd_c004
                    LEFT JOIN a001_organismo a001 ON a001.pk_num_organismo = cd_c004.num_org_ext
                    LEFT JOIN a021_dependencia_ext a021 ON a021.pk_num_dependencia_ext = cd_c004.num_depend_ext 
                WHERE
                    cd_c004.ind_estado != 'EV' $where
                "; //ORDER BY cd_c004.pk_num_documento DESC

        if ($busqueda['value']) {
            #concateno la busqueda si existe, Nota: esto es obligatorio
            $sql .="
                AND ( 
                    cd_c004.fec_documento LIKE '%$busqueda[value]%' OR 
                    cd_c004.num_secuencia LIKE '%$busqueda[value]%' OR
                    cd_c004.num_documento LIKE '%$busqueda[value]%' OR                    
                    cd_c004.text_asunto LIKE '%$busqueda[value]%'   OR                  
                    cd_c004.txt_descripcion_asunto LIKE '%$busqueda[value]%'
                ) 
            ";
        }

        #creo un arreglo de los campos a mostrar, Nota: esto es obligatorio
        $campos = array('fec_registro','num_secuencia','num_documento','text_asunto','txt_descripcion_asunto','estado');

        #campo primario de la tabla, Nota: esto es obligatorio
        $clavePrimaria = 'pk_num_documento';

        #construyo el listado de botones
        $campos['boton']['Editar'] = '
            <button id="modificar" class="modificar logsUsuario btn ink-reaction btn-raised btn-xs btn-primary" data-toggle="modal" data-target="#formModal"
                    data-keyboard="false" data-backdrop="static" idDocumento="'.$clavePrimaria.'" title="Modificar"
                    descipcion="El Usuario a Modificado un Documento Externo" titulo="<i class=\'icm icm-cog3\'></i> Documentos Externos | Editar Registro">
                <i class="fa fa-edit" style="color: #ffffff;"></i> 
            </button>
        ';

        $campos['boton']['Ver'] = '
            <button class="ver logsUsuario btn ink-reaction btn-raised btn-xs btn-warning" data-toggle="modal" data-target="#formModal"
                    data-keyboard="false" data-backdrop="static" idDocumento="'.$clavePrimaria.'" title="Ver"
                    descipcion="El Usuario esta viendo un Documento" titulo="<i class=\'icm icm-calculate2\'></i> Documentos Externos | Ver Registro">
                <i class="md md-remove-red-eye" style="color: #ffffff;"></i>
            </button>
        ';

        #hago el llamado de la datatabla del controlador principal.
        $this->metDataTabla($sql,$campos,$clavePrimaria);
    }
}

