<?php
///////////////////////////////////////////////////////////////////////////////
define('DIR_ESPECIAL', 'SIGNIFICANT');
//////////// VARIABLES ////////////////////////////////////////////////////////
$grapado = (isset($_POST["doc_fichero_1"]) AND isset($_POST["doc_fichero_2"])) ? get_id_unico() : '' ;
$clasificar = 0;
$ambito = "PUB";
$origen = "AWA";
$dir_raiz = "AWA INBOX";
$user = $_SERVER["HTTP_CLIENT_ID"];
$ordenador = "api_ext";
////////// DOCUMENTO 1 ////////////////////////////////////////////////////////
//BUSCO LA CLAVE DEL DOCUMENTO
$doc = consultarClaveDocumento($bd_conn, $_POST["workstepid"]);
//CONSULO SI EL DOCUMETO POSEE O NO EL VERSIONADO ACTIVO-------------------------------
$doc_datos = datosDocumento($bd_conn,$doc); 
//ACTUALIZO EL CAMPO Y ACTIVO EL VERSIONADO DEL DOCUMENTO----------------------
UpdateVersionadoDocumento($bd_conn, $doc);
//SUFIJO DE LA TABLA---------------------------------------------------------------
$sufijo = $doc_datos["SUFIJO"];
//
$version_actual = "0";
$padre =  $doc_datos["PADRE"];
$permiso = permisosDir($bd_conn,$padre);
$archivo = archivoHeredado($bd_conn,$padre);
$acceso_doc = accesoDoc($bd_conn, $padre);
$ubic_padre_doc = ubicacionPadreDoc($bd_conn, $padre);
$ubicacion = $ubic_padre_doc.$padre."/";
$tipo = "D";
//OBTENER LA VERSION BASE DEL DOCUMENTO--------------------------------------------
$datos_version_base = versionBaseDocumento($bd_conn,$doc,$sufijo,$version_actual);
//VARIABLES------------------------------------------------------------------------
//PARTE
$parte = $datos_version_base["PARTE"];
//VERSION
$version = "1.00";
//FICHERO
$fichero = mysqli_real_escape_string($bd_conn, $datos_version_base["FICHERO"]);
//TAMANO
$tamano = $datos_version_base["TAMANO"];
//ENTRADA
$entrada = $datos_version_base["ENTRADA"];
//COMPRIMIDO
$comprimido = $datos_version_base["COMPRIMIDO"];
//TAMANOREAL
$tamano_real = $datos_version_base["TAMANOREAL"];
//ENCRIPTADO
$encriptado = $datos_version_base["ENCRIPTADO"];
//CREO EL REGISTRO DEL VERSIONADO DEL DOCUMENTO EN LA DE FICHEROS------------------
creaRegistroTablaFicheros($bd_conn, $doc, $parte, $version, $fichero, $tamano, $entrada, $tamano_real, $sufijo);
//=================================================================================
//CREO EL REGISTRO DE LA NUEVA VERSION---------------------------------------------
//AUMENTO LA VERSION ACTUAL
$nueva_version = $version + 0.01;
//Tamaño    
$tamano = (isset($_POST['doc_size_1'])) ? $_POST["doc_size_1"] : 0 ;
$tamano_real = (isset($_POST['doc_size_1'])) ? $_POST["doc_size_1"] : 0 ;
$binario = base64_decode($coding_file_1);
$binario = mysqli_real_escape_string($bd_conn, $binario);
//CREO EL REGISTRO DEL NUEVO DOCUMENTO EN LA TABLA DE LOS FICHEROS-----------------
creaRegistroTablaFicheros($bd_conn, $doc, $parte, $nueva_version, $binario, $tamano, $entrada, $tamano_real, $sufijo);
//ACTUALIZO LA VERSION EN LA TABLA DE ELEMENTOS------------------------------------
UpdateNuevaVersionDocumento($bd_conn, $doc, $nueva_version, $grapado);
//=================================================================================
//HAGO EL UPDATE DEL FICHERO ACTUAL DEL DOC EN LA DE FICHERO-----------------------
UpdateDocumentoActual($bd_conn, $doc, $binario, $tamano, $tamano_real, $sufijo);	
//COMPRUEBO SI EL DOCUMENTO FIRMADO ESTA DENTRO DE UN EXPEDIENTE///////////////
$has_exp = consultarExpDocumentoFirmado($bd_conn, $doc);
///////// DOCUMENTO 2 /////////////////////////////////////////////////////////
if (isset($_POST["doc_fichero_2"])) {
	$coding_file_2 = $_POST["doc_fichero_2"];
	$clave = get_id_unico();
	$entrada = get_id_unico();
	//$nombre = (isset($_POST['doc_name_2'])) ? trim($_POST['doc_name_2']) : "doc_grapado.pdf" ;
	$nombre = 'COMPROBANTE AUDITORÍA ' .  $doc_datos["NOMBRE"];
	$tamano = (isset($_POST['doc_size_2'])) ? $_POST["doc_size_2"] : 0 ;
	$ext = get_extension($nombre);
	$exist_doc = docExist($bd_conn, $nombre, $padre, $ambito);
	while ( $exist_doc == 1) {
		$a = explode( '.', $nombre );
		$nombre_doc = $a[0];
		$ext_doc = end( $a );
		$cant_duplicado = numeroDocsDuplicados($bd_conn, $nombre_doc, $padre);
		$new_num = $cant_duplicado + 1;
		$nombre = $nombre_doc."(".$new_num.").".$ext_doc;
		$exist_doc = docExist($bd_conn, $nombre, $padre, $ambito);
	}
	$binario = base64_decode($coding_file_2);
	$binario = mysqli_real_escape_string($bd_conn, $binario);
	$max_fichero = maxTamanoFichero($bd_conn);
	$tabla_sufijo = tablaDestDisp($bd_conn, $tamano, $max_fichero, $name_avanws);
	if ($tabla_sufijo == "") {
		$sufijo = substr(get_id_unico(),0, 14);
		$tabla_sufijo = "FICHEROS_" . $sufijo;
		$sql = "CREATE TABLE ". $tabla_sufijo . " LIKE FICHEROS_PATRON";
		$base = $bd->query(strtoupper($sql));
	}else{
		$sufijo = substr($tabla_sufijo, 9, 14);
	}
	$parte = 1;
	$entrada = get_id_unico();
	$fichero_ok = subirContenido($bd_conn, $parte, $sufijo, $binario, $tamano, $clave, $entrada);
	if ($parte == 1) {
		$partes = $parte;
	}else{
		$partes = $parte -1;
	}
	docBibliotecaElementos($bd_conn, $clave, $nombre, $ext, $padre, $tamano, $acceso_doc, $user, $entrada, $ordenador, $partes, $sufijo, $ambito, $permiso, $ubicacion, $origen, $archivo, $grapado, $tipo);
	//EVALUO SI RELACIONO EL COMPROBANTE A UN EXPEDIENTE///////////////////////
	if ($has_exp != '') {
		$cod_etq = get_id_unico();
		creaRegistroTablaBibliotecaExp($bd_conn, $cod_etq, $clave, $has_exp);
	}
	historialLog($bd_conn, $clave, $user, $nombre, $ordenador, $ambito, $acceso_doc, $tamano);
}
///////////////////////////////////////////////////////////////////////////////
$data[] = array ( 
    "status" => " OK",
	"message" => "success : the document was updated correctly!"
);
///////////////////////////////////////////////////////////////////////////////
function creaRegistroTablaBibliotecaExp($bd, $cod_etq, $clave, $has_exp)
{
    $query = "  INSERT INTO BIBLIOTECA_ETIQUETAS (CODIGO, CLAVE, DESCRIPCION, GRUPOE, ESQUEMA, FECHA, VALOR)
                VALUES ( '$cod_etq', '$clave', '$has_exp', 1, -1, now(), '$has_exp' )";
    mysqli_query($bd, $query);
}
function consultarExpDocumentoFirmado($bd, $clave_doc) {
	$sql =  " 	SELECT E.DESCRIPCION
				FROM BIBLIOTECA_ETIQUETAS E
				WHERE E.CLAVE = '$clave_doc' AND E.GRUPOE = 1 AND E.ESQUEMA = -1 LIMIT 1";
  	$base = $bd->query($sql);
  	$row = mysqli_fetch_array($base);
  	$result = $row['DESCRIPCION'];
  	return $result;
  	$base->close();
}
function consultarClaveDocumento($bd, $workstepid) {
	$sql =  " 	SELECT F.CLAVE
				FROM INTER_ESIGNANYWHERE_FIRMADOS F
				WHERE F.ID_SERBAN = '$workstepid' LIMIT 1";
  	$base = $bd->query($sql);
  	$row = mysqli_fetch_array($base);
  	$result = $row['CLAVE'];
  	return $result;
  	$base->close();
}
function UpdateDocumentoActual($bd, $doc, $fichero, $tamano, $tamano_real, $sufijo)
{
    $query = "  UPDATE FICHEROS_".$sufijo." 
                SET FICHERO = '$fichero', TAMANO = $tamano, TAMANOREAL = $tamano_real
                WHERE CLAVE = '$doc' AND VERSION = '0' ";
    mysqli_query($bd, $query);
}
function UpdateNuevaVersionDocumento($bd, $doc, $nueva_version, $grapado)
{
    $query = "  UPDATE BIBLIOTECA_ELEMENTOS 
                SET VERSION = '$nueva_version', MODIFICACION = now(), GRAPADO = '$grapado'
                WHERE CLAVE = '$doc'";
    mysqli_query($bd, $query);
}
function UpdateVersionadoDocumento($bd, $doc)
{
    $query = "  UPDATE BIBLIOTECA_ELEMENTOS 
                SET VERSIONADO = 1, VERSION = '1.00', MODIFICACION = now()
                WHERE CLAVE = '$doc'";
    mysqli_query($bd, $query);
}
function creaRegistroTablaFicheros($bd, $doc, $parte, $version, $fichero, $tamano, $entrada, $tamano_real, $sufijo)
{
    $query = "  INSERT INTO FICHEROS_".$sufijo." (CLAVE, VERSION, ENTRADA, TAMANO, TAMANOREAL, PARTE, FICHERO)
                VALUES ( '$doc', '$version', '$entrada', $tamano, $tamano_real, $parte, '$fichero')";
    mysqli_query($bd, $query);
}
function versionBaseDocumento($bd,$doc,$sufijo,$version_actual)
{
    $sql =  "   SELECT *
                FROM FICHEROS_".$sufijo."
                WHERE CLAVE = '$doc' AND VERSION = '$version_actual' LIMIT 1";
    $result = $bd->query($sql);
    $row = mysqli_fetch_array($result);
    return $row;
}
function datosDocumento($bd,$doc)
{
    $sql =  "   SELECT E.VERSION, E.VERSIONADO, E.SUFIJO, E.PADRE, E.NOMBRE
                FROM BIBLIOTECA_ELEMENTOS E
                WHERE E.CLAVE = '$doc' LIMIT 1";
    $result = $bd->query($sql);
    $row = mysqli_fetch_array($result);
    return $row;
}
function historialLog($bd, $clave, $user, $nombre, $ordenador, $ambito, $acceso_doc, $tamano) {
	mysqli_query($bd, "INSERT INTO BIBLIOTECA_HISTORIAL 
						(CLAVE, USUARIO, FECHA, ACCION, DOCUMENTO, CARPETA, ORDENADOR, AMBITO, ACCESO, TIPO, TAMANO, CREADOR, CONTROL, AWA) 
						VALUES 
						('$clave', '$user', now(), '1', '$nombre', '$user', '$ordenador', '$ambito', '$acceso_doc', 'D', $tamano, '$user', 0, 1)") ;
}
function docBibliotecaElementos($bd, $clave, $nombre, $ext, $padre, $tamano, $acceso_doc, $user, $entrada, $ordenador, $partes, $sufijo, $ambito, $permiso, $ubicacion, $origen, $archivo, $grapado, $tipo) {
	mysqli_query($bd, "INSERT INTO BIBLIOTECA_ELEMENTOS 
						(CLAVE, NOMBRE, EXTENSION, PADRE, TIPO, FECHA, TAMANO, AMBITO, ACCESO, CREADOR, ENTRADA, ORDENADOR, MODIFICACION, PARTES, VERMIN, SUFIJO, UBICACION, ORIGEN, ARCHIVO, GRAPADO)
						VALUES 
						('$clave', '$nombre', '$ext', '$padre', '$tipo', now(), $tamano, '$ambito', '$permiso', '$user', '$entrada', '$ordenador', now(), $partes, '1.0', '$sufijo', '$ubicacion', '$origen', $archivo, '$grapado')") ;
}
function subirContenido($bd, $parte, $sufijo, $data, $tamano, $clave, $entrada) {
	$fichero_ok = mysqli_query($bd, "INSERT INTO FICHEROS_".$sufijo." 
									(CLAVE, PARTE, VERSION, FICHERO, TAMANO, ENTRADA, COMPRIMIDO, TAMANOREAL, ENCRIPTADO) 
									VALUES 
									('$clave', $parte, 0, '$data', $tamano, '$entrada', 0, $tamano, 0)");
	return $fichero_ok;
}
function tablaDestDisp($bd, $tamano, $max_fichero, $name_avanws) {
	$sql =  " 	SELECT TABLE_NAME,ROUND(DATA_LENGTH/(1024*1024*1024),1) AS GB
				FROM INFORMATION_SCHEMA.TABLES
				WHERE TABLE_SCHEMA = '".$name_avanws."'
				AND TABLE_NAME LIKE 'FICHEROS_2%%'
				AND (ROUND(DATA_LENGTH/(1024*1024*1024),1) + ROUND($tamano/(1024*1024*1024),1)) < (ROUND($max_fichero,1))
				ORDER BY DATA_LENGTH LIMIT 1";
  	$base = $bd->query($sql);
  	$row = mysqli_fetch_array($base);
  	$tabla_sufijo = $row['TABLE_NAME'];
  	return $tabla_sufijo;
  	$base->close();
}
function maxTamanoFichero($bd) {
	$sql =  " 	SELECT VALOR
				FROM PARAMETROS
				WHERE CODIGO = 'TAM_TABLABLOB'
				AND GRUPO = 'PRG'";
  	$base = $bd->query($sql);
  	$row = mysqli_fetch_array($base);
  	$max_fich = $row['VALOR'];
  	return $max_fich;
  	$base->close();
}
function numeroDocsDuplicados($bd, $nombre_doc, $padre_Del_doc){
    $sql =  " SELECT COUNT(E.CLAVE) AS TOTAL
              FROM BIBLIOTECA_ELEMENTOS E
              WHERE E.NOMBRE LIKE '$nombre_doc(%%' AND E.PADRE = '$padre_Del_doc'";
    $base = $bd->query($sql);
    $result = mysqli_fetch_array($base);
    $total = $result['TOTAL'];
    $base->close();
    return $total;
   }
function docExist($bd, $nombre, $padre, $ambito) {
	$sql =  " 	SELECT COUNT(NOMBRE) AS CUANTOS
				FROM BIBLIOTECA_ELEMENTOS
				WHERE NOMBRE = '$nombre' AND PADRE = '$padre' AND PAPELERA = 0 AND AMBITO = '$ambito'";
  	$base = $bd->query($sql);
  	$row = mysqli_fetch_array($base);
  	$doc_exist = $row['CUANTOS'];
  	return $doc_exist;
  	$base->close();
}
function padreINBOX($bd,$user) {
	$sql = "	SELECT P.VALOR
				FROM PARAMETROS P
				WHERE P.CODIGO = 'CARP_INBOX' AND P.USUARIO = '$user'";
	$base = $bd->query($sql);
	$row = mysqli_fetch_array($base);
	$acceso = $row['VALOR'];
	return $acceso;
	$base->close();
}
function permisosDir($bd,$padre) {
	$sql = "	SELECT ACCESO
				FROM BIBLIOTECA_ELEMENTOS
				WHERE CLAVE = '$padre'";
	$base = $bd->query($sql);
	$row = mysqli_fetch_array($base);
	$acceso = $row['ACCESO'];
	return $acceso;
	$base->close();
}
function archivoHeredado($bd,$padre) {
	$sql = "	SELECT E.ARCHIVO
				FROM BIBLIOTECA_ELEMENTOS E
				WHERE E.CLAVE = '$padre'";
	$base = $bd->query($sql);
	$row = mysqli_fetch_array($base);
	$acceso = $row['ARCHIVO'];
	return $acceso;
	$base->close();
}
function accesoDoc($bd, $padre) {
	$sql = "	SELECT ACCESO
				FROM BIBLIOTECA_ELEMENTOS
				WHERE CLAVE = '$padre' AND TIPO = 'C' AND PAPELERA = 0";
	$base = $bd->query($sql);
	@$row = mysqli_fetch_array($base);
	$acceso_doc = $row['ACCESO'];
	return $acceso_doc;
	$base->close();
}
function ubicacionPadreDoc($bd, $id)
{
	$sql =  " 	SELECT E.UBICACION
				FROM BIBLIOTECA_ELEMENTOS E
				WHERE E.CLAVE = '$id'";
  	$base = $bd->query($sql);
  	$result = mysqli_fetch_array($base);
  	$ubic = $result['UBICACION'];
  	$base->close();
  	return $ubic;
}
function get_extension($nombre) {
	// Convierto la cadena en un arreglo
	$a = explode( '.', $nombre );
	$ext = end( $a );
	$ext = strtoupper( $ext );
	return $ext;
}
function get_id_unico() {
    return date( "YmdHis" ) . sprintf( "%04d", rand( 0, 9999 ) );
}
function directorioEspecial($bd, $clave_padre, $nombre_dir)
{
	$sql =  " 	SELECT COUNT(E.CLAVE) AS TOTAL, E.CLAVE
				FROM BIBLIOTECA_ELEMENTOS E
				WHERE E.PADRE = '$clave_padre' AND E.NOMBRE = '$nombre_dir'";
  	$base = $bd->query($sql);
  	$result = mysqli_fetch_array($base);
  	$base->close();
  	return $result;
}
?>