<?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'];
$campo_etq = $_POST['campo'];
$id_esq = $_POST['esquema'];
$id_txt = $_POST['txt'];
//===================================================================================================================
//============================================ACCIONES===============================================================
//===================================================================================================================
//bUSCO LOS DATOS DEL CAMPO------------------------------------------------------------------------------------------
//$campo_etq = campoEtiqueta($bd, $id_etq);
//Busco el contenido de la etiqueta----------------------------------------------------------------------------------
$etiqueta = contenidoEtiqueta($bd, $id_esq, $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_txt.'" type="text" class="form-control input-sm" value="">';
}
//DATE o FECHA
if ($etiqueta['TIPO'] == 'D') {
	//ES del tipo fecha
	//Devuelvo el contenido de la Etiqueta-------------------------------------------------------------------------------
	echo '<input id="box_etq_'.$id_txt.'" 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_txt.'" type="text" class="form-control input-sm" value="">';
}

//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_txt."' 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_txt."' 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_txt."' 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_esq, $campo_etq) 
{
  $sql =  " SELECT EE.TIPO, EE.LISTA, EE.SUBLISTA_CON, EE.DEFECTO, EE.CODIGO, EE.CONEX_ODBC, EE.DESCRIP_ODBC, EE.ESQUEMA
            FROM ESQUEMAS_ESTRUCTURA EE
            WHERE  EE.ESQUEMA = '$id_esq' 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;
 } 
?>