<?php 
//-----------------------------------------------------------------------------------------
//-----------------------------EJECUTO LA ACCION SELECIONADA DEL WF-----------------------
//----------------------------------------------------------------------------------------- 
session_start();
//-----------VARIABLES-------------------------------------------------------------------
$doc = "20".$_POST['id'];
$wf = $_POST['wf'];
$ahora = date('YmdHis');
//-------------------------------------------
$result_wf = "";
$result_doc = "";
$result_est = "";
$result_acc = "000000000000000000";
$result_dest = "INICIADO EN WORKFLOW";
$result_user = $_SESSION["user"];
$result_ord = $_SESSION["host"];
$result_desc = "INICIADO EN WORKFLOW";
$actual = 1;
//-----------CONEXION-------------------------------------------------------------------
require_once '../conexion/conexion.php';
$bd = new connexion();
$bd->query("SET NAMES 'utf8'");
//=========================================================================================
//--------------INICIO DE NUEVO WF---------------------------------------------------------
//========================================================================================= 
//OBTENGO LOS DATOS DEL DOCUMENTO-------------------------------------
$id_doc = datosDoc();
//OBTENGO EL ID Y ESTADO INICIAL DEL WF-------------------------------- 
$row_wf = estadoDoc();
$id_wf = $row_wf["ID_WF"];
//EVALUDO PARA CARGAR EL ESTADO ACTUAL DEL DOCUMENTO PROVENIR D EUNA ASOCIACION-------------
if ($_POST["asoc"]==1) {
  //OBTENGO EL ID DEL ESTADO DEL DOCUMENTO
  $sql =  " SELECT E.CODIGO
            FROM WF_ESTADOS E
            WHERE E.CODIGO = ".$_POST['est']."";
  $base = $bd->query($sql);
  $result = mysqli_fetch_array($base);
  $id_est = $result['CODIGO'];
}else{
  $id_est = $row_wf["ID_EST"];
  
}
//HAGO EL INSERT DEL DOC AL NUEVO WF----------------------------------
insertWFdoc();
//==============================================================================
//ACTUALIZO LA TABLA DE ESTADOS-------------------------------------------------
//CUENTO LA CANT DE REGISTROS DEL ESTADO FINAL  EN EL NUEW WF LUEGO DE LA ACCION
$num_doc = cantDoc();
//ACTUALIZO LA CANT DE REGISTROS LUEGO DE LA ACCION
updateCantDoc();
//=========================================================================================
//--------------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();
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();
if ($desc_tarea == "") {
	$desc_estado = descEstado();
	$asunto = "WF - ".$desc_estado;
}else{
	$asunto = $desc_tarea;
}
//CONSTANTES VARIAS
$tiporep = 1;
$numrep = 10;
$tipoavi = -1;
$numdocs = 1;
$monousuario = 1;
//IDTAR
$ult_tar = ultimaTarea();
$idtar = $ult_tar + 1;
//CODIGOS DE EL ESTADO Y WF
//$id_wf y $id_est
//INSERTO EL REGISTRO EN LA TABLA DE TAREAS
insertTarea();
//=========================================================================================
//====================================TABLA TAREAS DOCUMENTO===============================
//Hago el REGISTRO
insertTareaDocumento();
//=========================================================================================
//====================================TABLA TAREAS CONTACTOS===============================
//CREO EL REGISTRO DEL CREADOR
$tipo = "C";
$contacto = 0;
insertTareaContactos();
//CARGO LOS USUARIOS INVOLUCRADOS EN EL ESTADO
$usuario_tarea = userTarea();

//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);
}
	
//===============================================================================
//CIERRO VARIABLES---------------------------------------------------------------
mysqli_close($bd);
unset($bd, $sql, $base, $num_doc, $row_reg, $id_est, $id_wf, $row_wf, $actual, $result_est, $result_desc, $result_ord, $result_user, $result_acc, $result_doc, $result_wf, $id_doc);
//=========================================================================================
//======================FUNCIONES==========================================================
//=========================================================================================
//FUNCION PARA EL INSERT A LA TABLA TAREAS_CONTACTOS---------------------------------------
function insertTareaContactos(){
  global $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 OBTENER LOS USUARIOS IMPLICADOS EN LA TAREA---------------------------------
function userTarea(){
  global $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_DOCUMENTO---------------------------------------
 function insertTareaDocumento(){
  global $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(){
  global $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 DATOS DEL DOCUMENTO-------------------------------------------------
 function datosDoc(){
  global $bd, $doc;
  $sql =  " SELECT BE.CLAVE
			FROM BIBLIOTECA_ELEMENTOS BE
			WHERE BE.CLAVE = '$doc'";
  $base = $bd->query($sql);
  $result = mysqli_fetch_array($base);
  $id_doc = $result['CLAVE'];
  $base->close();
  return $id_doc;
 }
 //FUNCION PARA OBTENER EL WF Y ESTADO INICIAL-------------------------------------------------
 function estadoDoc(){
  global $bd, $wf;
  $sql =  " SELECT e.CODIGO AS ID_WF, es.CODIGO AS ID_EST
			FROM WF_ELEMENTOS e INNER JOIN WF_ESTADOS es
			ON e.CODIGO = es.WORKFLOW
			WHERE e.DESCRIPCION = '$wf' AND es.INICIAL = 1";
  $base = $bd->query($sql);
  $row_wf = mysqli_fetch_array($base);
  $base->close();
  return $row_wf;
 }
 //FUNCION PARA EL INSERT AL WF_HISTORIAL-------------------------------------------------------
 function insertWFdoc(){
  global $bd, $id_wf, $id_doc, $id_est, $result_acc, $result_user, $actual, $result_ord, $result_desc;
  $sql =  " INSERT INTO WF_HISTORIAL (WORKFLOW, DOCUMENTO, ESTADO, FECHA, ACCION, USUARIO, ACTUAL, ORDENADOR, DESCRIPCION) 
			VALUES ('$id_wf', '$id_doc', '$id_est', now(), '$result_acc', '$result_user', $actual, '$result_ord', '$result_desc')";
  mysqli_query($bd, $sql);
 }
 //FUNCION PARA CONTAR LA CANT DE REGISTROS DEL ESTADO FINAL  EN EL NUEW WF LUEGO DE LA ACCION--
 function cantDoc(){
  global $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(){
  global $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 obtener la clave unica del registro--------------------------------------------------------
function get_id_unico() {
	return date( "YmdHis" ) . sprintf( "%04d", rand( 0, 9999 ) );
}
//FUNCION PARA CALCULAR EL PLAZO DE VENCIMIENTO DEL DOCUMENTO----------------------------------------------
 function plazoDoc(){
  global $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 DESCRIPCION DE LA TAREA DEL ESTADO DEL WF------------------------------------------
 function descTarea(){
  global $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 OBTENER LA DESCRIPCION DEL ESTADO DEL WF------------------------------------------
 function descEstado(){
  global $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 EL ULTIMO ID DE LAS TAREAS------------------------------------------
 function ultimaTarea(){
  global $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;
 }
?> 