<?php
//===================================================================================================================
//============================================LIBRERIAS Y VARIABLES==================================================
//===================================================================================================================
session_start();
//conexion-----------------------------------------------------------------------------------------------------------
require_once '../../conexion/conexion.php';
$bd = new connexion();
$bd->query("SET NAMES 'utf8'");
//VARIABLES----------------------------------------------------------------------------------------------------------
$id_etq = "20".$_POST['etq'];
$id = $_POST['etq'];
$user = $_SESSION['user'];
//===================================================================================================================
//============================================ACCIONES===============================================================
//===================================================================================================================
//bUSCO LOS DATOS DEL CAMPO------------------------------------------------------------------------------------------
$campo_etq = campoEtiqueta($bd, $id_etq);
//Busco el contenido de la etiqueta----------------------------------------------------------------------------------
$etiqueta = contenidoEtiqueta($bd, $id_etq, $campo_etq);
//EVALUO EL TIPO DE CAMPO PARA MOSTRAR LA CAJA CORRESPONDIENTE-------------------------------------------------------
//TEXTO
if ($etiqueta['TIPO'] == 'S' OR $etiqueta['TIPO'] == 'T') {
	//ES del tipo texto
	//Devuelvo el contenido de la Etiqueta-------------------------------------------------------------------------------
	echo '<input id="box_etq_'.$id.'" type="text" class="form-control input-sm" value="'.$etiqueta["DESCRIPCION"].'">';
}
//DATE o FECHA
if ($etiqueta['TIPO'] == 'D') {
	//ES del tipo fecha
	//Devuelvo el contenido de la Etiqueta-------------------------------------------------------------------------------
	echo '<input id="box_etq_'.$id.'" type="date" class="form-control input-sm" value="'.date("Y-m-d").'">';
}
//Numero
if ($etiqueta['TIPO'] == 'N') {
	//ES del tipo numero
	//Devuelvo el contenido de la Etiqueta-------------------------------------------------------------------------------
	echo '<input id="box_etq_'.$id.'" type="text" class="form-control input-sm" value="'.$etiqueta["DESCRIPCION"].'">';
}

//LISTAS
if ($etiqueta['TIPO'] == 'L' OR $etiqueta['TIPO'] == 'C') {
  //VALIDO SI PROVIENE DE UNA LISTA ODBC===========================================
  if ($etiqueta['CONEX_ODBC'] != 0) {
        //ES POR ODBC==================================================================
        $odbc = 1;
        //VARIABLE DEL CODIGO DE LA CONEXION EXTERNA---------------------------------------------------------------------
        $cod_odbc = $etiqueta['CONEX_ODBC'];
        //CONSULTO LOS DATOS DE LA CONEXION EXTERNA A REALIZAR-----------------------------------------------------------
        $datos_conn = datosConexExterna($bd, $cod_odbc, $etiqueta['ESQUEMA'], $etiqueta['CODIGO']);
        //CONSULTO EL DRIVER O TIPO DE BBDD A CONSULTAR------------------------------------------------------------------
        if ($datos_conn["DRIVER"] == "MYSQL") {
          //SE CONSULTARA UNA MYSQL O MARIADB--------------------------------------------------------------------------
          //VARIAVLE DE LA CADE DE CONEXION----------------------------------------------------------------------------
          $driver_conn = $datos_conn["CONEXION"];
          //HAGO UN EXPLODE PARA OBTENER LA CADENA DE CONEXION---------------------------------------------------------
          $cadena_1 = explode("{",$driver_conn);
          $cadena = explode("}",$cadena_1[1]);
          //HAGO EL EXPLODE PARA OBTENER EL SERVIDOR-------------------------------------------------------------------
          $server_1 = explode("Server=",$driver_conn);
          $server = explode(";",$server_1[1]);
          //HAGO EL EXPLODE DEL NOMBRE DE LA BASE DE DATOS-------------------------------------------------------------
          $bbdd_1 = explode("Database=",$driver_conn);
          $bbdd = explode(";",$bbdd_1[1]);
          //HAGO EL EXPLODE DEL USUARIO DE LA BASE DE DATOS-------------------------------------------------------------
          $user_1 = explode("User=",$driver_conn);
          $user_bbdd = explode(";",$user_1[1]);
          //HAGO EL EXPLODE DEL PASSW DE LA BASE DE DATOS---------------------------------------------------------------
          $pw_1 = explode("Password=",$driver_conn);
          $pw_bbdd = explode(";",$pw_1[1]);
          //===========================================================================================================
          //ARMO LA CONSULTA ODBC DEL LISTADO==========================================================================
          //CADENA DE CONEXION-----------------------------------------------------------------------------------------
          $conn = odbc_connect("DRIVER={".$cadena[0]."};Server=".$server[0].";Database=".$bbdd[0]."", $user_bbdd[0], $pw_bbdd[0]);
          //EVALUO QUE LA CONEXION SE REALIZA CORRECTAMENTE------------------------------------------------------------
          if (!($conn)) { 
                echo "<p>Connection to DB via ODBC FALLO: ";
                echo odbc_errormsg ($conn );
                echo "</p>";
          }
          //ARMO EL SELECT DE LA TABLA---------------------------------------------------------------------------------
            $sql = "SELECT * FROM ".$datos_conn["TABLA"]."";
            //ABRO LA CONEXION-------------------------------------------------------------------------------------------
            $rs = odbc_exec($conn,$sql);
            //ESCRIBO EL HTML DEL LISTBOX-----------------------------------------------------------------------------
            echo "<td><select id='box_etq_".$id."' class='form-control'>";
            //RECORRO PARA OBTENER LOS RESLTADOS DE LA CLAVE DEL ITEM SELECCIONADO--------------------------------------------
            while (odbc_fetch_row($rs)){
              //VALIDO EL VALOR DEL CAMPO A TOMAR--------------------------------------------------------------
              $result = odbc_result($rs,$datos_conn["DESCRIP_ODBC"]);
              //ESCRIBO LOS VALORES DEL LSITADO----------------------------------------------------------------
              echo "<option>".utf8_encode($result)."</option>";         
            }
            
            //CIERRO LA CONEXION-------------------------------------------------------------------------------------
            odbc_close($conn);
        }
  }else{
      //NO ES POR ODBC===============================================================
      $odbc = 0;
    	//ES del tipo lista
    	//VALIDO QUE ES UNA LISTA DE CONTACTOS-----------------------------------------
        if ($etiqueta['LISTA'] < 0) {
          //AL SER TIPO CLIENTES LISTO CARGO LOS LISBOX CON LA LISTA CORRESPONDIENTE
          $item_lista = itemContactos($bd, $etiqueta['LISTA'], $user);
        }
        //VALIDO QUE ES UNA LISTA PERSONALIZADA-----------------------------------------
        if ($etiqueta['LISTA'] >= 0) {
          //AL SER TIPO LISTO CARGO LOS LISBOX CON LA LISTA CORRESPONDIENTE
          $item_lista = itemLista($bd, $etiqueta['LISTA']);
        }
     	//============================================================================================================
      	//VALIDO SI ESTA RELACIONADO A UNA SUBLISTA===================================================================
      	//NO POSEE UNA SUBLISTA---------------------------------------------------------------------------------------
      	if ($etiqueta['SUBLISTA_CON'] == 0) {
          //VALIDO SI TRAE UN VALOR POR DEFECTO---------------------------------------------------------------------
          if ($etiqueta['DEFECTO'] == "##USER##") {
            //Trae por defecto el valor del usuario actual----------------------------------------------------------
            $val_defect_list = $_SESSION['mostrar'];
          }elseif ($etiqueta['DEFECTO'] == "") {
            //No trae nada por defecto lo dejo en blanco------------------------------------------------------------
            $val_defect_list = "";
          }
          //ESCRIBO EL HTML DEL LISTBOX-----------------------------------------------------------------------------
          echo "<td><select id='box_etq_".$id."' class='form-control'>";
          //ESCRIBO EL PRIMER ITEM DE LA LISTA O LO DEJO EN BLANCO SI NO ES REQUERIDO-------------------------------
          //RECORRO LOS CAMPOS DEL LISTADO--------------------------------------------------------------------------    
          while ($listado=mysqli_fetch_array($item_lista)) {
              echo "<option>".$listado['DESCRIPCION']."</option>";
          }

     	//============================================================================================================
      	//POSEE UNA SUBLISTA------------------------------------------------------------------------------------------
      	}elseif ($listado['SUBLISTA_CON'] != 0) {
          	//VALIDO SI TRAE UN VALOR POR DEFECTO---------------------------------------------------------------------
          	if ($listado['DEFECTO'] == "##USER##") {
            	//Trae por defecto el valor del usuario actual----------------------------------------------------------
            	$val_defect_list = $_SESSION['mostrar'];
          	}elseif ($listado['DEFECTO'] == "") {
            	//No trae nada por defecto lo dejo en blanco------------------------------------------------------------
            	$val_defect_list = "";
         	}
        	//Con el valor de SUBLITA_CON buscar EL VALOR DE LA LISTA RELACIONADA---------------------------------------
        	$sub_lista_rel = listaRelacionada($listado['CODIGO'], $listado['SUBLISTA_CON']);
        	//EVALUO SI LA SUB-LISTA ESTA RELACIONADA CON UN USUARIO Y A SU VEZ CON UNA ORGANIZACION--------------------
        	if ($sub_lista_rel == "##USER##" AND $listado['LISTA'] == -2 ) {
              //====================================================================================================
              //SE ESTA RELACIONANDO UN USUARIO CON UNA ORGANIZACION------------------------------------------------
              //VARIABLE DEL CONTACTO ACTUAL
              $contact = $_SESSION["contacto"];
              //BUSCO LOS CONTACTOS Y ORGANIZACIONES RELACIONADAS---------------------------------------------------
              $base = contacRelacionados($bd, $contact);
              //ESCRIBO EL INICIO DEL HTML DEL LISTBOX--------------------------------------------------------------
              echo "<td><select id='box_etq_'".$id."' class='form-control'>";
              //ESCRIBO EL PRIMER ITEM DE LA LISTA O LO DEJO EN BLANCO SI NO ES REQUERIDO-------------------------------
              //RECORRO EL ARRAY DE RELACIONES PARA CARGAR LOS ID DE ORGANIZACIONES RELACIONADAS--------------------
              while ($row = $base->fetch_object()){
                  //EVALUAR Y CARGAR LA VARIABLE DEPENDIENDO EN QUE CAMPO ESTE EL ID DEL----------------------------
                  // CONTACTACTO PRINCIPAL Y EL RELACIONADO---------------------------------------------------------
                  if ($contact == $row->CONTACTO) {
                      //CAMPO DE CONTACTO ES IGUAL AL  ID DEL RAIZ CARGO LA VARIABLE CON EL ------------------------
                      //CODIGO DEL CAMPO ORGANIZACION---------------------------------------------------------------
                      $datos_contac = datosContacRelacionados($bd, $row->ORGANIZACION, $user);
                  }elseif ($contact == $row->ORGANIZACION) {
                      //HAGO LO VICEVERSA---------------------------------------------------------------------------
                      $datos_contac = datosContacRelacionados($bd, $row->CONTACTO, $user);
                  }
                  //ESCRIBO EL HTML DE LOS ITEM DE LISTADO DE RELACION SACANDO LOS ITEMS VACIOS---------------------
                  if ($datos_contac['MOSTRAR'] != "") {
                    echo "<option>".$datos_contac['MOSTRAR']."</option>";
                  }
                  //ESCRIBO EL FINAL DEL HTML DEL LISTBOX-----------------------------------------------------------
              }
            }
              
        }else{
            //====================================================================================================
            //NO ESTA RELACIONANDO UN USUARIO CON UNA ORGANIZACION------------------------------------------------
            //Con el valor de SUBLITA_CON buscar EL VALOR DE LA LISTA RELACIONADA---------------------------------
            $item_lista = itemContactos($bd, $listado['LISTA'], $user);
            //ESCRIBO EL INICIO DEL HTML DEL LISTBOX--------------------------------------------------------------
            echo "<td><select id='box_etq_'".$id."' class='form-control'>";
            //Si la lista no esta como requerida se muestra el primer campo en blanco----------------------------
            echo "<option>".$val_defect_list."</option>";
            //RECORRO LOS CAMPOS DEL LISTADO---------------------------------------------------------------------   
            while ($listado=mysqli_fetch_array($item_lista)) {
                echo "<option>".$listado['DESCRIPCION']."</option>";
            }
        } 
    }
}
//===================================================================================================================
//============================================HTML===================================================================
//===================================================================================================================
//===================================================================================================================
//============================================FUNCIONES==============================================================
//===================================================================================================================
// FUNCION PARA OBTENER VALOR PARAMETRO DE BUSQUEDAS POR CONTENIDO--------------------------------------------------
function contenidoEtiqueta($bd, $id_etq, $campo_etq) 
{
  $sql =  " SELECT ET.DESCRIPCION, EE.TIPO, EE.LISTA, EE.SUBLISTA_CON, EE.DEFECTO, EE.CODIGO, EE.CONEX_ODBC, EE.DESCRIP_ODBC, EE.ESQUEMA
            FROM BIBLIOTECA_ETIQUETAS ET
			INNER JOIN ESQUEMAS_ESTRUCTURA EE
			ON ET.ESQUEMA = EE.ESQUEMA
            WHERE ET.CODIGO = '$id_etq' AND  EE.CODIGO = $campo_etq LIMIT 1";
  $base = $bd->query($sql);
  $row = mysqli_fetch_array($base);
  return $row;
  $base->close();

}
// FUNCION PARA OBTENER el valor del campo de la etiqueta--------------------------------------------------
function campoEtiqueta($bd, $id_etq) 
{
  $sql =  " SELECT ET.GRUPOE
			FROM BIBLIOTECA_ETIQUETAS ET
            WHERE ET.CODIGO = '$id_etq' LIMIT 1";
  $base = $bd->query($sql);
  $row = mysqli_fetch_array($base);
  $campo_etq = $row["GRUPOE"];
  return $campo_etq;
  $base->close();

}
 //FUNCION PARA OBTENER   LOS ITEMS DE LA LISTA CLIENTES O CONTACTOS------------------------
 function itemContactos($bd, $id, $user){
  //DETERMINO EL TIPO DE CONTACTO BUSCADO
  switch ($id) {
    case -1: 
      //CONTACTO
      $tipo = "C.CONTACTO = 1";
      break;

    case -2:
      //ORGANIZACION
      $tipo = "C.ORGANIZACION = 1";
      break;
    
    case -5:
      //ORGANIZACION Y CONTACTO
      $tipo = "( C.ORGANIZACION = 1 OR C.CONTACTO = 1 )";
      break;
  }
  //SQL
  $sql =  " SELECT DISTINCT C.MOSTRAR AS DESCRIPCION
            FROM CONTACTOS C
            LEFT JOIN CONTACTOS_RELACIONES R
            ON R.CONTACTO = C.CODIGO
            LEFT JOIN CONTACTOS_GRUPOS G
            ON R.GRUPO = G.CODIGO
            WHERE C.ACTIVO = 1 AND $tipo AND (( G.AMBITO = '' OR G.AMBITO = 'PUB' )
            OR ( G.AMBITO = 'PRV' AND G.USUARIO = '$user' ) OR G.AMBITO IS NULL) ORDER BY MOSTRAR ASC";
  $base = $bd->query($sql);
  return $base;
  $base->close();
 } 
  //FUNCION PARA OBTENER   LOS ITEMS DE LA LISTA---------------------------------------------
 function itemLista($bd, $lista){
  $sql =  " SELECT E.DESCRIPCION
            FROM ETIQUETAS E
            WHERE E.GRUPO = $lista ORDER BY E.DESCRIPCION ASC";
  $base = $bd->query($sql);
  return $base;
  $base->close();
 }
   //FUNCION PARA OBTENER EL VALOR DE LA LISTA RELACIONADA A UN CAMPO----------------------------------------
 function listaRelacionada($id_esq, $id_cod){
  global $bd;
  $sql =  " SELECT E.DEFECTO
            FROM ESQUEMAS_ESTRUCTURA E
            WHERE E.ESQUEMA = $id_esq AND E.CODIGO = $id_cod";
  $base = $bd->query($sql);
  $result = mysqli_fetch_array($base);
  return $result['DEFECTO'];
  $base->close();
 } 
  //FUNCION PARA EL ARRAY DE LOS DATOS DE LOS CONTATOS RELACIONADOS AL CONTACTO
function datosContacRelacionados($bd, $id_contac_rel, $user)
{
  $sql = "SELECT C.MOSTRAR
          FROM CONTACTOS C
          LEFT JOIN CONTACTOS_RELACIONES R
          ON R.CONTACTO = C.CODIGO
          LEFT JOIN CONTACTOS_GRUPOS G
          ON R.GRUPO = G.CODIGO
          WHERE C.CODIGO = $id_contac_rel AND C.ORGANIZACION = 1 AND C.ACTIVO = 1 AND (( G.AMBITO<>'PRV' ) OR ( G.AMBITO = 'PRV' AND G.USUARIO = '$user' ) OR G.AMBITO IS NULL ) ORDER BY C.MOSTRAR ASC";
    $base = $bd->query($sql);
    $row = mysqli_fetch_array($base);
    return $row;
    $base->close();
} 
//FUNCION PARA EL ARRAY DE LOS CONTACTOS RELACIONADOS AL CONTACTO
function contacRelacionados($bd, $contact)
{
  $sql = "SELECT CO.CONTACTO, CO.ORGANIZACION
          FROM CONTACTOS_ORGANIZACIONES CO
          WHERE  CO.CONTACTO = $contact OR CO.ORGANIZACION = $contact  ";
    $base = $bd->query($sql);
    return $base;
    $base->close();
}
//funcion para obtener los datos de la conecion externa--------------------------------------------------
function datosConexExterna($bd, $cod_odbc, $id_esq, $cod_campo)
{
  $sql =  " SELECT E.CODIGO, E.DESCRIPCION, E.CONEXION, E.TABLA, E.CAMPOCLAVE, E.TIPOCLAVE, E.DRIVER, EE.DESCRIP_ODBC
            FROM CONEXIONES_EXTERNAS E
            INNER JOIN ESQUEMAS_ESTRUCTURA EE
            ON EE.CONEX_ODBC = E.CODIGO
            WHERE E.CODIGO = $cod_odbc AND EE.CODIGO = $cod_campo AND EE.ESQUEMA = $id_esq";
  $base = $bd->query($sql);
  $result = mysqli_fetch_array($base);
  $base->close();
  return $result;
 } 
?>