<?php 
//session_start();
//-----------VARIABLES-------------------------------------------------------------------
$esq = $_POST['id_esq'];
$result_acc = "000000000000000000";
//$result_user = $_SESSION["user"];
$result_user = "avanbox";
//$result_ord = $_SESSION["host"];
$result_ord = "EXT";
$result_desc = "INICIADO EN WORKFLOW";
$actual = 1;
$docs = $_POST['docs'];
$total_docs = count($docs);
$ahora = date('YmdHis');
$ok = 0;
//-----------CONEXION-------------------------------------------------------------------
require_once '../../conn/conexion.php';
$bd = new connexion();
$bd->query("SET NAMES 'utf8'");
//=========================================================================================
//--------------INICIO DE NUEVO WF---------------------------------------------------------
//========================================================================================= 
//OBTENGO EL CODIGO DLE WF----------------------------------------------------------------
$wf_aut = codigoWorkflow($bd,$esq);
//=========================================================================================
//--------------evaluo condiciones para acceder al estado----------------------------------
//========================================================================================= 
while ($row2 = $wf_aut->fetch_object()){
		
		//VALIDO QUE CUMPLA LAS CONDICIONES DE ENTRADA DE POSEERLAS----------------------------------------------------------------
		//RECORRO LOS DOCUMENTOS PARA INICIARLOS EN EL WF--------------------------------------------------------------------------
		for($d=0;$d<$total_docs;$d++){
			//CARGO CADA CLAVE DE LOS DOCUMENTOS INCLUIDOS-------------------------------------------------------------------------
			$clave_doc = $docs[$d];
			//=====================================================================================================================
			//EVALUO LAS CONDICIONES PARA EL INGRESO AL WF=========================================================================
			//CPONSULTO EL VALOR ASIGNADO AL CAMPO DEL DOCUMENTO-------------------------------------------------------------------
			$valor_etiq_doc = valorCampoEtiquetaDoc($bd, $row2->ESQUEMA, $clave_doc, $row2->CONCEPTO);
			if ($valor_etiq_doc != "") {
				//EVALUO EL OPERADOR ASIGNADO PARA EJECUTAR LA ACCION------------------------------------------------------------------
		        if ( $acciones->OPERADOR == 0 AND ( strtoupper(trim($valor_etiq_doc)) == strtoupper(trim($row2->VALOR1 )))) {
		        	//CUMPLE LA CONDICION Y PASO A INCLUIRLO AL WF---------------------------------------------------------------------
		            $ok = 1;
		        }
		        //EVALUO SI EL OPERADOR ES 1 = ">" ------------------------------------------------------------------------------------
		        if ( $acciones->OPERADOR == 1 AND ( strtoupper(trim($valor_etiq)) > strtoupper(trim($acciones->VALOR1)))) {
		            //CUMPLE LA CONDICION Y PASO A INCLUIRLO AL WF---------------------------------------------------------------------
		            $ok = 1;
		        }
		        //EVALUO SI EL OPERADOR ES 2 = "<" ------------------------------------------------------------------------------------
		        if ( $acciones->OPERADOR == 2 AND ( strtoupper(trim($valor_etiq)) < strtoupper(trim($acciones->VALOR1)))) {
		            //CUMPLE LA CONDICION Y PASO A INCLUIRLO AL WF---------------------------------------------------------------------
		            $ok = 1;
		        }
		        //EVALUO SI EL OPERADOR ES 3 = "ENTRE" --------------------------------------------------------------------------------
		        if ( $acciones->OPERADOR == 3 AND ( strtoupper(trim($valor_etiq)) < strtoupper(trim($acciones->VALOR1)) AND strtoupper(trim($valor_etiq)) > strtoupper(trim($acciones->VALOR2)))) {
		            //CUMPLE LA CONDICION Y PASO A INCLUIRLO AL WF---------------------------------------------------------------------
		            $ok = 1;
		        }
		        //EVALUO SI EL OPERADOR ES 4 = "distinto" -----------------------------------------------------------------------------
		        if ( $acciones->OPERADOR == 4 AND ( strtoupper(trim($valor_etiq)) != strtoupper(trim($acciones->VALOR1)))) {
		            //CUMPLE LA CONDICION Y PASO A INCLUIRLO AL WF---------------------------------------------------------------------
		            $ok = 1;
		        }
		    }else{
		    	$ok = 1;
		    }
	        //CUMPLE CON ALGUNA DE LAS CONDICIONES DE ACCESO Y LA INCLUYO AL WF----------------------------------------------------
	        if ( $ok == 1 ) {
	        	$ok = 0;
				//=================================================================================================================
				//RECORRO VALIDANDO LA EXISTENCIA DE MAS DE UN WF ASIGNADO---------------------------------------------------------
				$wf_asig = detalleWorkflow($bd, $esq, $row2->WORKFLOW);
				while ($row = $wf_asig->fetch_object()){
					//CARGO EL CODIGO DEL WF CON CADA ROW DEL ARRAY----------------------------------------------------------------
					$cod_wf = $row->WORKFLOW;
					//OBTENGO EL ESTADO INICAL DEL WF------------------------------------------------------------------------------
					$est_inic = estadoInicialWF($bd, $cod_wf);
					//HAGO EL INSERT DEL DOC AL NUEVO WF---------------------------------------------------------------------------
					insertWFdoc($bd, $cod_wf, $clave_doc, $est_inic, $result_acc, $result_user, $actual, $result_ord, $result_desc);
					//===============================================================================================================
					//--------------ACCIONES WF AL ENTRAR AL ESTADO------------------------------------------------------------------
					//===============================================================================================================
					//EVALUO SI EXISTE ACCION AL ENTRAR EN EL ESTADO-----------------------------------------------------------------
					$exist_acc_ent = consultarAccionesEntrada($bd, $est_inic, $esq);
					//EVALUO SI EXISTE ALGUNA ACCION ASIGNADA AL ESTADO--------------------------------------------------------------
					if ( $exist_acc_ent >= 1) {
					    //CONSULTAR SI EL ESTADO POSEE UNA ACCION ASIGNADA-----------------------------------------------------------
					    $accion_ent = accionEntrarEstadoWF($bd, $est_inic, $esq);
					    //RECORRO LAS ACCIONES ASIGNADAS AL ESTADO-------------------------------------------------------------------
					    while ($acciones = $accion_ent->fetch_object()){
					        //CPONSULTO EL VALOR ASIGNADO AL CAMPO DEL DOCUMENTO-----------------------------------------------------
					        $valor_etiq = valorCampoEtiquetaDoc($bd, $esq, $clave_doc, $acciones->CONCEPTO);
					        echo $valor_etiq;
					        //EVALUO EL OPERADOR ASIGNADO PARA EJECUTAR LA ACCION----------------------------------------------------
					        if ( $acciones->OPERADOR == 0 AND ( $valor_etiq == $acciones->VALOR1 )) {
					            //SE CONDICIONA A QUE SEA IGUAL AL DE LA ETIQUETA Y CONSULTO LOS DATOS DE LA ACCION A REALIZAR-------
					            $cod_acc_asig = datosAccionEntradaEjecutar($bd, $acciones->ACCION);
					            //DOY DE BAJA EL ESTADO ANTERIOR DEL DOCUMENTO-------------------------------------------------------
					            sacarDocEstadoAnt($bd, $clave_doc, $est_inic);
					            //HAGO EL INSERT DEL DOCUMENTO AL NUEVO ESTADO-------------------------------------------------------
					            docNuevoEstadoAsignado($bd, $cod_acc_asig["WORKFLOW"], $clave_doc, $cod_acc_asig["DESTINO"], $cod_acc_asig["CODIGO"], $result_user, $actual, $result_ord, $cod_acc_asig["DESCRIPCION"] );
					            //ACTUALIZO LAS VARIABLES SEGUN EL NUEVO ESTADO------------------------------------------------------
					            $est_inic = $cod_acc_asig["DESTINO"];
					        }
					        //EVALUO SI EL OPERADOR ES 1 = ">" ----------------------------------------------------------------------
					        if ( $acciones->OPERADOR == 1 AND ( $valor_etiq > $acciones->VALOR1 )) {
					            //SE CONDICIONA A QUE SEA IGUAL AL DE LA ETIQUETA Y CONSULTO LOS DATOS DE LA ACCION A REALIZAR-------
					            $cod_acc_asig = datosAccionEntradaEjecutar($bd, $acciones->ACCION);
					            //DOY DE BAJA EL ESTADO ANTERIOR DEL DOCUMENTO-------------------------------------------------------
					            sacarDocEstadoAnt($bd, $clave_doc, $est_inic);
					            //HAGO EL INSERT DEL DOCUMENTO AL NUEVO ESTADO-------------------------------------------------------
					            docNuevoEstadoAsignado($bd, $cod_acc_asig["WORKFLOW"], $clave_doc, $cod_acc_asig["DESTINO"], $cod_acc_asig["CODIGO"], $result_user, $actual, $result_ord, $cod_acc_asig["DESCRIPCION"] );
					            //ACTUALIZO LAS VARIABLES SEGUN EL NUEVO ESTADO------------------------------------------------------
					            $est_inic = $cod_acc_asig["DESTINO"];
					        }
					        //EVALUO SI EL OPERADOR ES 2 = "<" ----------------------------------------------------------------------
					        if ( $acciones->OPERADOR == 2 AND ( $valor_etiq < $acciones->VALOR1 )) {
					            //SE CONDICIONA A QUE SEA IGUAL AL DE LA ETIQUETA Y CONSULTO LOS DATOS DE LA ACCION A REALIZAR-------
					            $cod_acc_asig = datosAccionEntradaEjecutar($bd, $acciones->ACCION);
					            //DOY DE BAJA EL ESTADO ANTERIOR DEL DOCUMENTO-------------------------------------------------------
					            sacarDocEstadoAnt($bd, $clave_doc, $est_inic);
					            //HAGO EL INSERT DEL DOCUMENTO AL NUEVO ESTADO-------------------------------------------------------
					            docNuevoEstadoAsignado($bd, $cod_acc_asig["WORKFLOW"], $clave_doc, $cod_acc_asig["DESTINO"], $cod_acc_asig["CODIGO"], $result_user, $actual, $result_ord, $cod_acc_asig["DESCRIPCION"] );
					            //ACTUALIZO LAS VARIABLES SEGUN EL NUEVO ESTADO------------------------------------------------------
					            $est_inic = $cod_acc_asig["DESTINO"];
					        }
					        //EVALUO SI EL OPERADOR ES 3 = "ENTRE" ----------------------------------------------------------------------
					        if ( $acciones->OPERADOR == 3 AND ( $valor_etiq < $acciones->VALOR1 AND $valor_etiq > $acciones->VALOR2 )) {
					            //SE CONDICIONA A QUE SEA IGUAL AL DE LA ETIQUETA Y CONSULTO LOS DATOS DE LA ACCION A REALIZAR-------
					            $cod_acc_asig = datosAccionEntradaEjecutar($bd, $acciones->ACCION);
					            //DOY DE BAJA EL ESTADO ANTERIOR DEL DOCUMENTO-------------------------------------------------------
					            sacarDocEstadoAnt($bd, $clave_doc, $est_inic);
					            //HAGO EL INSERT DEL DOCUMENTO AL NUEVO ESTADO-------------------------------------------------------
					            docNuevoEstadoAsignado($bd, $cod_acc_asig["WORKFLOW"], $clave_doc, $cod_acc_asig["DESTINO"], $cod_acc_asig["CODIGO"], $result_user, $actual, $result_ord, $cod_acc_asig["DESCRIPCION"] );
					            //ACTUALIZO LAS VARIABLES SEGUN EL NUEVO ESTADO------------------------------------------------------
					            $est_inic = $cod_acc_asig["DESTINO"];
					        }
					        //EVALUO SI EL OPERADOR ES 4 = "distinto" ---------------------------------------------------------------
					        if ( $acciones->OPERADOR == 4 AND ( $valor_etiq != $acciones->VALOR1)) {
					            //SE CONDICIONA A QUE SEA IGUAL AL DE LA ETIQUETA Y CONSULTO LOS DATOS DE LA ACCION A REALIZAR-------
					            $cod_acc_asig = datosAccionEntradaEjecutar($bd, $acciones->ACCION);
					            //DOY DE BAJA EL ESTADO ANTERIOR DEL DOCUMENTO-------------------------------------------------------
					            sacarDocEstadoAnt($bd, $clave_doc, $est_inic);
					            //HAGO EL INSERT DEL DOCUMENTO AL NUEVO ESTADO-------------------------------------------------------
					            docNuevoEstadoAsignado($bd, $cod_acc_asig["WORKFLOW"], $clave_doc, $cod_acc_asig["DESTINO"], $cod_acc_asig["CODIGO"], $result_user, $actual, $result_ord, $cod_acc_asig["DESCRIPCION"] );
					            //ACTUALIZO LAS VARIABLES SEGUN EL NUEVO ESTADO------------------------------------------------------
					            $est_inic = $cod_acc_asig["DESTINO"];
					        }
					    }
					}
					//================================================================================================================
					//ACTUALIZO LA TABLA DE ESTADOS-----------------------------------------------------------------------------------
					//CUENTO LA CANT DE REGISTROS DEL ESTADO FINAL  EN EL NUEW WF LUEGO DE LA ACCION----------------------------------
					$num_doc = cantDoc($bd, $est_inic);
					//ACTUALIZO LA CANT DE REGISTROS LUEGO DE LA ACCION---------------------------------------------------------------
					updateCantDoc($bd, $num_doc, $ahora, $est_inic);
					//===============================================================================================================
					//--------------INSERCION DE LA NUEVA TAREA----------------------------------------------------------------------
					//===============================================================================================================
					//====================================TABLA TAREAS ==============================================================
					//DATOS PARA EL INSERT DE LA NUEVA TAREA-------------------------------------------------------------------------
					$clave_tarea = get_id_unico();
					$fch_inic = date('Y-m-d');
					//CALCULO LA FECHA FIN-----------------------------------------------------------------
					$plazo = plazoDoc($bd, $est_inic);
					if ($plazo == 0) {
						$fch_fin = strtotime('+1 year', strtotime($fch_inic));
						$fch_fin = date('Y-m-d', $fch_fin );
					}else{
						$fch_fin = strtotime('+'.$plazo.' day', strtotime($fch_inic));
						$fch_fin = date('Y-m-d', $fch_fin);
					}
					//DIA----------------------------------------------------------------------------------
					$dia = 0;
					//HORAS--------------------------------------------------------------------------------
					$hora_inic = date('H:i');
					$hora_fin =	date('H:i');
					//ASUNTO------------------------------------------------------------------------------
					$desc_tarea = descTarea($bd, $est_inic);
					if ($desc_tarea == "") {
						$desc_estado = descEstado($bd, $est_inic);
						$asunto = "WF - ".$desc_estado;
					}else{
						$asunto = $desc_tarea;
					}
					//CONSTANTES VARIAS-------------------------------------------------------------------
					$tiporep = 1;
					$numrep = 10;
					$tipoavi = -1;
					$numdocs = 1;
					$monousuario = 1;
					//IDTAR-------------------------------------------------------------------------------
					$ult_tar = ultimaTarea($bd);
					$idtar = $ult_tar + 1;
					//INSERTO EL REGISTRO EN LA TABLA DE TAREAS--------------------------------------------
					insertTarea($bd, $clave_tarea, $fch_inic, $fch_fin, $dia, $hora_inic, $hora_fin, $asunto, $tiporep, $numrep, $tipoavi, $numdocs, $monousuario, $idtar, $est_inic, $row2->WORKFLOW);
					//===================================================================================================================
					//====================================TABLA TAREAS DOCUMENTO=========================================================
					//Hago el REGISTRO
					insertTareaDocumento($bd, $clave_tarea, $clave_doc);
					//===================================================================================================================
					//====================================TABLA TAREAS CONTACTOS=========================================================
					//CREO EL REGISTRO DEL CREADOR--------------------------------------------------------
					$tipo = "C";
					$contacto = 0;
					insertTareaContactos($bd, $clave_tarea, $tipo, $contacto);
					//CARGO LOS USUARIOS INVOLUCRADOS EN EL ESTADO----------------------------------------
					$usuario_tarea = userTarea($bd, $est_inic);
					//INSERTO TODOS LOS CAMPOS------------------------------------------------------------
					if ($resultado = $usuario_tarea) {
					    /* obtener el array asociativo */
					    while ($fila = mysqli_fetch_row($resultado)) {
					        $query = "  INSERT INTO TAREAS_CONTACTOS (CLAVE, TIPO, CONTACTO, ESTADO, PORCENTAJE, CANCELADA, AVISO, MENSAJE, ADJUNTO) 
					              VALUES ('$clave_tarea', '$fila[1]', $fila[0], 'I', 0, 0, 0, 0, 0)";
					        mysqli_query($bd, $query);
					    }
					    /* liberar el conjunto de resultados */
					    mysqli_free_result($resultado);
					}
					//-----------------------------------------------------------------------------------------
					//-----------------------------------------------------------------------------------------
					//------------NOTIFICACIONES DE SISTEMA----------------------------------------------------
					$id_doc = $clave_doc;
					//$cod_est_wf =
					//BUSCAR EL CODIGO DEL ESTADO DEL WORKFLOW---------------------------------------------------------------------------
					$cod_est_wf = codigoEstadoWorkflow($bd, $cod_wf);
					//COMPUEBO SI EXISTEN AVISOS PARA ESTE ESTADO------------------------------------------------------------------------
					$avisos = plantillaAvisos($bd, $cod_est_wf);
					//VALIDO LA EXISTENCIA DE AVISOS-------------------------------------------------------------------------------------
					if ($avisos != '') {
					  //EXISTEN AVISOS Y PASO A RECORRERLOS PARA SER ENVIADOS------------------------------------------------------------
					  while ($row = $avisos->fetch_object()){
					      //EVALUO LA FORMA DE ENVIO D ELA NOTIFICACIÓN N = SISTEMA Y CORREO E ------------------------------------------
					      if ($row->FORMA == 'E') {
					        //VERIFICO EL TIPO DE ENVIO C= AL ENTRAR AL ESTADO-----------------------------------------------------------
					        if ($row->ENVIO == 'C') {
					            //EVALUAR SI LLEVA RETARDO LA NOTIFICACIÓN---------------------------------------------------------------
					            if ($row->HORARET == 0 AND $row->INTERVALORET == 0 AND $row->HORAINF == '' AND $row->DIAINF == 0) {
					              //NO LLEVA RETARDO ASI QUE PROCEDO A HACER EL REGISTRO-------------------------------------------------
					              //VARIABLES DE LOS AVISOS------------------------------------------------------------------------------
					              //CODIGO AVISO
					              $cod_aviso = $row->CODIGO;
					              //FECHA
					              $fecha = 'now()';
					              //FECHA DEL AVISO
					              $fecha_envio = 'now()';
					              //VARIABLE DE LA FORMA DE ENVIO
					              $forma_envio = $row->FORMA;
					              //VARIABLE TIEMPO DE ENVIO
					              $tiempo_envio = $row->ENVIO;
					              //VARIABLE DEL ENVIO DE LINK AWA
					              $link = $row->LINK;
					              //VARIABLE AVISADO
					              $avisado = 0;
					              //VARAIBLE ENVIADO
					              $enviado = 0;
					              //VARIABLE ENVIAR
					              $enviar = 1;
					              //VARIABLE INICIAL
					              $inicial = 1;
					              //=====================================================================================================
					              //EVALUO LOS DESTINATARIOS DE LA NOTIFICACIÓN==========================================================
					              //SE ENVIA LA NOTIFICACION A UN USUARIO================================================================
					              if ($row->TIPO == 'U') {
					                //ME CREO EN CODIGO DE LA NOTIFICACION---------------------------------------------------------------
					                $cod_notif = get_id_unico();
					                //VARIABLE DEL CONTACTO------------------------------------------------------------------------------
					                $contacto = $row->CONTACTO;
					                //BUSCO EL MAIL DEL USUARIO--------------------------------------------------------------------------
					                $email = emailContacto($bd, $contacto);
					                //HAGO EL INSER DE LA NOTIFICACION-------------------------------------------------------------------
					                crearNotificacion($bd, $cod_notif, $fecha, $cod_aviso, $fecha_envio, $id_doc, $cod_est_wf, $forma_envio, $tiempo_envio, $link, $email, $contacto, $avisado, $enviado, $enviar, $inicial);
					              }
					              //SE ENVIA LA NOTIFICACION A UN GRUPO DE USUARIOS======================================================
					              if ($row->TIPO == 'G') {
					                //VARIABLE DEL CONTACTO------------------------------------------------------------------------------
					                $grupo = -1;
					                //BUSCO LOS EMAILS DEL GRUPO DE USUARIO--------------------------------------------------------------
					                $array_email = correoGrupoContactos($bd, $grupo);
					                while ($email_contacto = $array_email->fetch_object()){
					                  //ME CREO EN CODIGO DE LA NOTIFICACION-------------------------------------------------------------
					                  $cod_notif = get_id_unico();
					                  //EMAIL DEL USUARIO CORRESPONDIENTE----------------------------------------------------------------
					                  $email = $email_contacto->EMAIL1;
					                  //CODIGO DEL CONTACTO CORRESPONDIENTE--------------------------------------------------------------
					                  $contacto = $email_contacto->CODIGO;
					                  //HAGO EL INSER DE LA NOTIFICACION-----------------------------------------------------------------
					                  crearNotificacion($bd, $cod_notif, $fecha, $cod_aviso, $fecha_envio, $id_doc, $cod_est_wf, $forma_envio, $tiempo_envio, $link, $email, $contacto, $avisado, $enviado, $enviar, $inicial);
					                }
					              }
					              //SE ENVIA LA NOTIFICACION A UN GRUPO DE USUARIOS======================================================
					              if ($row->TIPO == 'C') {
					                //ME CREO EN CODIGO DE LA NOTIFICACION---------------------------------------------------------------
					                $cod_notif = get_id_unico();
					                //VARIABLE DEL CONTACTO------------------------------------------------------------------------------
					                $contacto = $row->CONTACTO;
					                //BUSCO EL MAIL DEL USUARIO--------------------------------------------------------------------------
					                $email = emailContacto($bd, $contacto);
					                //HAGO EL INSER DE LA NOTIFICACION-------------------------------------------------------------------
					                crearNotificacion($bd, $cod_notif, $fecha, $cod_aviso, $fecha_envio, $id_doc, $cod_est_wf, $forma_envio, $tiempo_envio, $link, $email, $contacto, $avisado, $enviado, $enviar, $inicial);
					              }
					              //SE ENVIA LA NOTIFICACION A UN GRUPO DE USUARIOS======================================================
					              if ($row->TIPO == 'D') {
					                //ME CREO EN CODIGO DE LA NOTIFICACION---------------------------------------------------------------
					                $cod_notif = get_id_unico();
					                //VARIABLE DEL CONTACTO------------------------------------------------------------------------------
					                $contacto = -2;
					                //BUSCO EL MAIL DEL USUARIO--------------------------------------------------------------------------
					                $email = $row->EMAIL;
					                //HAGO EL INSER DE LA NOTIFICACION-------------------------------------------------------------------
					                crearNotificacion($bd, $cod_notif, $fecha, $cod_aviso, $fecha_envio, $id_doc, $cod_est_wf, $forma_envio, $tiempo_envio, $link, $email, $contacto, $avisado, $enviado, $enviar, $inicial);
					              }
					            }
					            
					        }
					      //=============================================================================================================
					      //SE ENVIARA UNA NOTIFICACION DE SISTEMA-----------------------------------------------------------------------
					      }elseif ($row->FORMA == 'N') {
					        //VERIFICO EL TIPO DE ENVIO C= AL ENTRAR AL ESTADO-----------------------------------------------------------
					        if ($row->ENVIO == 'C') {
					            //EVALUAR SI LLEVA RETARDO LA NOTIFICACIÓN---------------------------------------------------------------
					            if ($row->HORARET == 0 AND $row->INTERVALORET == 0 AND $row->HORAINF == '' AND $row->DIAINF == 0) {
					              //NO LLEVA RETARDO ASI QUE PROCEDO A HACER EL REGISTRO-------------------------------------------------
					              //VARIABLES DE LOS AVISOS------------------------------------------------------------------------------
					              //CODIGO AVISO
					              $cod_aviso = $row->CODIGO;
					              //FECHA
					              $fecha = 'now()';
					              //FECHA DEL AVISO
					              $fecha_envio = 'now()';
					              //VARIABLE DE LA FORMA DE ENVIO
					              $forma_envio = $row->FORMA;
					              //VARIABLE TIEMPO DE ENVIO
					              $tiempo_envio = $row->ENVIO;
					              //VARIABLE DEL ENVIO DE LINK AWA
					              $link = 0;
					              //VARIABLE AVISADO
					              $avisado = 0;
					              //VARAIBLE ENVIADO
					              $enviado = 0;
					              //VARIABLE ENVIAR
					              $enviar = 0;
					              //VARIABLE INICIAL
					              $inicial = 1;
					              //=====================================================================================================
					              //EVALUO LOS DESTINATARIOS DE LA NOTIFICACIÓN==========================================================
					              //SE ENVIA LA NOTIFICACION A UN USUARIO================================================================
					              if ($row->TIPO == 'U') {
					                //ME CREO EN CODIGO DE LA NOTIFICACION---------------------------------------------------------------
					                $cod_notif = get_id_unico();
					                //VARIABLE DEL CONTACTO------------------------------------------------------------------------------
					                $contacto = $row->CONTACTO;
					                //BUSCO EL MAIL DEL USUARIO--------------------------------------------------------------------------
					                $email = '';
					                //HAGO EL INSER DE LA NOTIFICACION-------------------------------------------------------------------
					                $ok = crearNotificacion($bd, $cod_notif, $fecha, $cod_aviso, $fecha_envio, $id_doc, $cod_est_wf, $forma_envio, $tiempo_envio, $link, $email, $contacto, $avisado, $enviado, $enviar, $inicial);
					                echo $cod_aviso;
					              }
					              //SE ENVIA LA NOTIFICACION A UN GRUPO DE USUARIOS======================================================
					              if ($row->TIPO == 'G') {
					                //VARIABLE DEL CONTACTO------------------------------------------------------------------------------
					                $grupo = -1;
					                //BUSCO LOS EMAILS DEL GRUPO DE USUARIO--------------------------------------------------------------
					                $array_email = correoGrupoContactos($bd, $grupo);
					                while ($email_contacto = $array_email->fetch_object()){
					                  //ME CREO EN CODIGO DE LA NOTIFICACION-------------------------------------------------------------
					                  $cod_notif = get_id_unico();
					                  //EMAIL DEL USUARIO CORRESPONDIENTE----------------------------------------------------------------
					                  $email = $email_contacto->EMAIL1;
					                  //CODIGO DEL CONTACTO CORRESPONDIENTE--------------------------------------------------------------
					                  $contacto = $email_contacto->CODIGO;
					                  //HAGO EL INSER DE LA NOTIFICACION-----------------------------------------------------------------
					                  crearNotificacion($bd, $cod_notif, $fecha, $cod_aviso, $fecha_envio, $id_doc, $cod_est_wf, $forma_envio, $tiempo_envio, $link, $email, $contacto, $avisado, $enviado, $enviar, $inicial);
					                }
					              }
					              //SE ENVIA LA NOTIFICACION A UN GRUPO DE USUARIOS======================================================
					              if ($row->TIPO == 'C') {
					                //ME CREO EN CODIGO DE LA NOTIFICACION---------------------------------------------------------------
					                $cod_notif = get_id_unico();
					                //VARIABLE DEL CONTACTO------------------------------------------------------------------------------
					                $contacto = $row->CONTACTO;
					                //BUSCO EL MAIL DEL USUARIO--------------------------------------------------------------------------
					                $email = emailContacto($bd, $contacto);
					                //HAGO EL INSER DE LA NOTIFICACION-------------------------------------------------------------------
					                crearNotificacion($bd, $cod_notif, $fecha, $cod_aviso, $fecha_envio, $id_doc, $cod_est_wf, $forma_envio, $tiempo_envio, $link, $email, $contacto, $avisado, $enviado, $enviar, $inicial);
					              }
					              //SE ENVIA LA NOTIFICACION A UN GRUPO DE USUARIOS======================================================
					              if ($row->TIPO == 'D') {
					                //ME CREO EN CODIGO DE LA NOTIFICACION---------------------------------------------------------------
					                $cod_notif = get_id_unico();
					                //VARIABLE DEL CONTACTO------------------------------------------------------------------------------
					                $contacto = -2;
					                //BUSCO EL MAIL DEL USUARIO--------------------------------------------------------------------------
					                $email = $row->EMAIL;
					                //HAGO EL INSER DE LA NOTIFICACION-------------------------------------------------------------------
					                crearNotificacion($bd, $cod_notif, $fecha, $cod_aviso, $fecha_envio, $id_doc, $cod_est_wf, $forma_envio, $tiempo_envio, $link, $email, $contacto, $avisado, $enviado, $enviar, $inicial);
					              }
					            }
					            
					        }
					      }
					      
					  }
					}


				}
			}
		}
}
//=====================================================================================================================================================
//--------------FUNCIONES------------------------------------------------------------------------------------------------------------------------------
//=====================================================================================================================================================
//FUNCION PARA OBTENER LOS USUARIOS IMPLICADOS EN LA TAREA---------------------------------
function userTarea($bd, $id_est){
  
  $sql =  " SELECT U.CONTACTO, P.FUNCION
  			FROM WF_PERMISOS P INNER JOIN USUARIOS U
      		ON P.USUARIO = U.USUARIO
      		WHERE P.CODIGO = '$id_est'";
  $base = $bd->query($sql);
  return $base;
  $base->close();
 }
//FUNCION PARA EL INSERT A LA TABLA TAREAS_CONTACTOS---------------------------------------
function insertTareaContactos($bd, $clave_tarea, $tipo, $contacto){
  
  $sql =  " INSERT INTO TAREAS_CONTACTOS (CLAVE, TIPO, CONTACTO, ESTADO, PORCENTAJE, CANCELADA, AVISO, MENSAJE, ADJUNTO) 
			VALUES ('$clave_tarea', '$tipo', $contacto, '', 0, 0, 0, 0, 0)";
  mysqli_query($bd, $sql);
 }
//FUNCION PARA EL INSERT A LA TABLA TAREAS_DOCUMENTO---------------------------------------
 function insertTareaDocumento($bd, $clave_tarea, $id_doc){
 
  $sql =  " INSERT INTO TAREAS_DOCUMENTOS (CLAVE, DOCUMENTO) 
			VALUES ($clave_tarea, $id_doc)";
  mysqli_query($bd, $sql);
 }
//FUNCION PARA EL INSERT A LA TABLA TAREAS-------------------------------------------------
 function insertTarea($bd, $clave_tarea, $fch_inic, $fch_fin, $dia, $hora_inic, $hora_fin, $asunto, $tiporep, $numrep, $tipoavi, $numdocs, $monousuario, $idtar, $id_est, $id_wf){
  
  $sql =  " INSERT INTO TAREAS (CLAVE, FECHAINI, FECHAFIN, DIA, HORAINI, HORAFIN, ASUNTO, TIPOREP, NUMREP, TIPOAVI, NUMDOCS, MONOUSUARIO, IDTAR, ESTADOWF, WORKFLOW) 
			VALUES ('$clave_tarea', '$fch_inic', '$fch_fin', $dia, '$hora_inic', '$hora_fin', '$asunto', $tiporep, $numrep, $tipoavi, $numdocs, $monousuario, $idtar, '$id_est', '$id_wf')";
  mysqli_query($bd, $sql);
 }
 //FUNCION PARA OBTENER EL ULTIMO ID DE LAS TAREAS-----------------------------------------
 function ultimaTarea($bd){
  
  $sql =  " SELECT MAX(T.IDTAR) AS ULTIMA
			FROM TAREAS T";
  $base = $bd->query($sql);
  $result = mysqli_fetch_array($base);
  $ult_tar = $result['ULTIMA'];
  $base->close();
  return $ult_tar;
 }
 //FUNCION PARA OBTENER LA DESCRIPCION DEL ESTADO DEL WF-----------------------------------
 function descEstado($bd, $id_est){
  
  $sql =  " SELECT ES.DESCRIPCION 
			FROM WF_ESTADOS ES
			WHERE ES.CODIGO = $id_est";
  $base = $bd->query($sql);
  $result = mysqli_fetch_array($base);
  $desc_estado = $result['DESCRIPCION'];
  $base->close();
  return $desc_estado;
 }
//FUNCION PARA OBTENER LA DESCRIPCION DE LA TAREA DEL ESTADO DEL WF------------------------
 function descTarea($bd, $id_est){
  
  $sql =  " SELECT ES.DESCRIP_TAREA 
			FROM WF_ESTADOS ES
			WHERE ES.CODIGO = $id_est";
  $base = $bd->query($sql);
  $result = mysqli_fetch_array($base);
  $desc_tarea = $result['DESCRIP_TAREA'];
  $base->close();
  return $desc_tarea;
 } 
//FUNCION PARA CALCULAR EL PLAZO DE VENCIMIENTO DEL DOCUMENTO------------------------------
 function plazoDoc($bd, $id_est){
  
  $sql =  " SELECT ES.PLAZO 
			FROM WF_ESTADOS ES
			WHERE ES.CODIGO = $id_est";
  $base = $bd->query($sql);
  $result = mysqli_fetch_array($base);
  $plazo = $result['PLAZO'];
  $base->close();
  return $plazo;
 }
//Funcion para obtener la clave unica del registro------------------------------------------
function get_id_unico() {
	return date( "YmdHis" ) . sprintf( "%04d", rand( 0, 9999 ) );
}
//FUNCION PARA CONTAR LA CANT DE REGISTROS DEL ESTADO FINAL  EN EL NUEW WF LUEGO DE LA ACCION--
 function cantDoc($bd, $id_est){
  
  $sql =  " SELECT COUNT(h.DOCUMENTO) AS REGISTROS 
            FROM WF_HISTORIAL h
            INNER JOIN BIBLIOTECA_ELEMENTOS E
            ON E.CLAVE = h.DOCUMENTO
            WHERE h.ESTADO = $id_est  AND h.ACTUAL = 1";
  $base = $bd->query($sql);
  $result = mysqli_fetch_array($base);
  $num_doc = $result['REGISTROS'];
  $base->close();
  return $num_doc;
 }	
 //FUNCION PARA ACTUALIZAR LA CANT DE REGISTROS LUEGO DE LA ACCION-------------------------------
 function updateCantDoc($bd, $num_doc, $ahora, $id_est){
  
  $sql =  " UPDATE WF_ESTADOS e
			SET e.NUMDOCS = $num_doc, e.FECHAMOD = '$ahora'
			WHERE e.CODIGO = $id_est";
  mysqli_query($bd, $sql);
 }	
//FUNCION PARA EL INSERT AL WF_HISTORIAL-------------------------------------------------------
 function insertWFdoc($bd, $wf_aut, $clave_doc, $est_inic, $result_acc, $result_user, $actual, $result_ord, $result_desc)
 {
  $sql =  " INSERT INTO WF_HISTORIAL (WORKFLOW, DOCUMENTO, ESTADO, FECHA, ACCION, USUARIO, ACTUAL, ORDENADOR, DESCRIPCION) 
      VALUES ('$wf_aut', $clave_doc, '$est_inic', now(), '$result_acc', '$result_user', $actual, '$result_ord', '$result_desc')";
  mysqli_query($bd, $sql);
 }
//OBTENGO EL CODIGO DEL ESTADO INICIAL DEL WF-----------------------------------------
function estadoInicialWF($bd, $wf_aut)
{
  $sql =  " SELECT E.CODIGO
		    FROM WF_ESTADOS E
		    WHERE E.WORKFLOW = '$wf_aut' AND E.INICIAL = '1'";
  $base = $bd->query($sql);
  $result = mysqli_fetch_array($base);
  $est_inic = $result['CODIGO'];
  $base->close();
  return $est_inic;
}
//OBTENGO EL CODIGO DEL WORKFLOWS PARA LA INCLUSION AUTOMATICA------------------------
function codigoWorkflow($bd,$esq)
{
  $sql =  "   	SELECT E.WORKFLOW, E.ESQUEMA, E.CODIGO, E.CONCEPTO, E.OPERADOR, E.VALOR1, E.VALOR2
		        FROM WF_ESQUEMAS E
		        WHERE E.ESQUEMA = $esq";
  $base = $bd->query($sql);
  return $base;
  $base->close();
}
//RECORRO EL ARRAY PARA VERIFICAR LA EXISTENCIA DE MAS DE UN WF ASIGNADO--------------
function detalleWorkflow($bd, $esq, $workflow)
{
  $sql =  "   	SELECT E.WORKFLOW
		        FROM WF_ESQUEMAS E
		        WHERE E.ESQUEMA = $esq AND E.WORKFLOW = '$workflow'";
  $base = $bd->query($sql);
  return $base;
}
//CREO EL REGISTRO DE LA NUEVA NOTA EN LA BILIOTECA------------------------------------------------------------------
function crearNotificacion($bd, $cod_notif, $fecha, $cod_aviso, $fecha_envio, $id_doc, $cod_est_wf, $forma_envio, $tiempo_envio, $link, $email, $contacto, $avisado, $enviado, $enviar, $inicial)
{

  $query = "  INSERT INTO WF_NOTIFICACIONES ( CODIGO, AVISO, FECHA, FECHA_AVISO, DOCUMENTO, ESTADO, FORMAENVIO, TIPOENVIO, AVISADO, ENVIADO, ENVIAR, INICIAL, LINK, EMAIL, CONTACTO )
        VALUES ( '$cod_notif', '$cod_aviso', $fecha, $fecha_envio, $id_doc, '$cod_est_wf', '$forma_envio', '$tiempo_envio', $avisado, $enviado, $enviar, $inicial, $link, '$email', $contacto )";
  mysqli_query($bd, $query);
}
//fUNCION PARA OBTENER EL CODIGO DEL ESTADO DEL WORKFLOW-------------------------------------------------------------
function correoGrupoContactos($bd, $grupo) {
    
    $sql =  "   SELECT C.EMAIL1, C.CODIGO
                FROM USUARIOS U
                INNER JOIN CONTACTOS C
                ON U.CONTACTO = C.CODIGO
                WHERE U.GRUPO = $grupo";
    $base = $bd->query($sql);
    return $base;
    $base->close();
}
//fUNCION PARA OBTENER EL CORREO DEL CONTACTO------------------------------------------------------------------------
function emailContacto($bd, $contacto) {
    
    $sql =  "   SELECT C.EMAIL1
                FROM CONTACTOS C
                WHERE C.CODIGO = $contacto";
    $base = $bd->query($sql);
    $row = mysqli_fetch_array($base);
    $email = $row['EMAIL1'];
    return $email;
    $base->close();
}
//fUNCION PARA OBTENER EL CODIGO DEL ESTADO DEL WORKFLOW-------------------------------------------------------------
function plazoEstadoWF($bd, $cod_est_wf) {
    
    $sql =  "   SELECT WE.PLAZO
                FROM WF_ESTADOS WE
                WHERE WE.CODIGO = '$cod_est_wf'";
    $base = $bd->query($sql);
    $row = mysqli_fetch_array($base);
    $plazo = $row['PLAZO'];
    return $plazo;
    $base->close();
}
//fUNCION PARA OBTENER EL CODIGO DEL ESTADO DEL WORKFLOW-------------------------------------------------------------
function codigoEstadoWorkflow($bd, $cod_wf) {
    
    $sql =  "   SELECT DISTINCT WE.CODIGO
				FROM WF_ACCIONES WA
				INNER JOIN WF_ESTADOS WE
				ON WA.ESTADO = WE.CODIGO
				INNER JOIN WF_ELEMENTOS WEL
				ON WE.WORKFLOW = WEL.CODIGO
				WHERE WE.WORKFLOW = '$cod_wf' AND WE.INICIAL = 1 LIMIT 1";
    $base = $bd->query($sql);
    $row = mysqli_fetch_array($base);
    $cod_est_wf = $row['CODIGO'];
    return $cod_est_wf;
    $base->close();
}
//fUNCION PARA OBTENER EL CODIGO DEL ESTADO DEL WORKFLOW-------------------------------------------------------------
function plantillaAvisos($bd, $cod_est_wf) {
    
    $sql =  "   SELECT *
                FROM WF_AVISOS WA
                WHERE WA.ESTADO = '$cod_est_wf'";
    $base = $bd->query($sql);
    return $base;
    $base->close();
}
//CREO EL REGISTRO DEL DOCUMENTO EN EL NUEVO ESTADO----------------------------------------
function docNuevoEstadoAsignado( $bd, $result_wf, $clave_doc, $result_dest, $result_acc, $result_user, $actual, $result_ord, $result_desc )
{

  $query = "INSERT INTO WF_HISTORIAL  ( WORKFLOW, DOCUMENTO, ESTADO, FECHA, ACCION, USUARIO, ACTUAL, ORDENADOR, DESCRIPCION )
            VALUES ( '$result_wf', $clave_doc, '$result_dest', now(), '$result_acc', '$result_user', $actual, '$result_ord', '$result_desc')";
  mysqli_query($bd, $query);
}
//FUNCION PARA ACTUALIZAR EL ESTADO ANTERIOR DEL DOCUMENTO----------------------------------
function sacarDocEstadoAnt($bd, $clave_doc, $est_inic)
{

  $query = "UPDATE WF_HISTORIAL 
            SET ACTUAL = 0
            WHERE DOCUMENTO = $clave_doc AND ACTUAL = 1 AND ESTADO = $est_inic";
  mysqli_query($bd, $query);
}
//FUNCION PARA CONSULTAR LOS DATOS DE LA ACCION A EJECUTAR---------------------------------
function datosAccionEntradaEjecutar($bd, $cod_acc)
{
    $sql =  "   SELECT WA.CODIGO, WA.ESTADO, WA.DESTINO, WA.DESCRIPCION, WA.DESCRIP_TRAZA, WE.WORKFLOW
                FROM WF_ACCIONES WA
                INNER JOIN WF_ESTADOS WE
                ON WE.CODIGO = WA.ESTADO
                WHERE WA.CODIGO = '$cod_acc' LIMIT 1";
    $base = $bd->query($sql);
    $row = mysqli_fetch_array($base);
    return $row;
    $base->close();   
}
//FUNCION PARA CONSULTAR EL VALOR DE LA ETIQUETA A EVALUAR EN EL DOCUMENTO-----------------
function valorCampoEtiquetaDoc($bd, $esq, $clave_doc, $etiqueta)
{
    $sql =  "    SELECT DISTINCT BE.DESCRIPCION
                 FROM BIBLIOTECA_ETIQUETAS BE
                 WHERE BE.ESQUEMA = $esq AND BE.CLAVE = $clave_doc AND BE.GRUPOE = $etiqueta LIMIT 1";
    $base = $bd->query($sql);
    $row = mysqli_fetch_array($base);
    $result = $row["DESCRIPCION"];
    return $result;
    $base->close();   
}
//fUNCION PARA CONSULTAR SI EXISTE Y LOS DATOS DE UNA ACCION AL ENTRAR AL ESTADO DEL WF----
function accionEntrarEstadoWF($bd, $est_inic, $esq) 
{
    $sql =  "   SELECT WC.CONCEPTO, WC.OPERADOR, WC.VALOR1, WC.VALOR2, WC.ACCION
                FROM WF_CAMBIOS WC
                WHERE WC.ESTADO = '$est_inic' AND WC.ESQUEMA = $esq";
    $base = $bd->query($sql);
    $result = $base;
    return $result;
    $base->close();
}
//FUNCION PARA CONSULTAR SI EL ESTAO POSEE ACCIONES----------------------------------------
function consultarAccionesEntrada($bd, $est_inic, $esq)
{
    $sql =  "   SELECT COUNT( WC.CODIGO ) AS TOTAL
                FROM WF_CAMBIOS WC
                WHERE WC.ESTADO = '$est_inic' AND WC.ESQUEMA = $esq";
    $base = $bd->query($sql);
    $row = mysqli_fetch_array($base);
    $result = $row["TOTAL"];
    return $result;
    $base->close();
}
?> 