<?php

// Para la elaboración de los documentos asociados a los trámites.
function MiraListados($idtramite){
	global $conn;
	$sql="select * from ct_informes where CataTramite_idCataTramite = ".$idtramite;
	$resql=db_query($sql,$conn);
	while ($data=db_fetch_array($resql)){
	// Evaluacion de si se debe generar el informe
	if (condicion_informe($data)) {
		// Insert de documento
			$VcodigoDocumento='';
			$id = $_REQUEST['editid1'];
			if ($data['SeArchiva']){
					$VcodigoDocumento = DarNumeroDocumento(); // Obtiene el  Código de documento
					$sql="insert into wf_documentos (Expedientes_idExpedientes, NumeroDocumento, Titulo, EntradaSalida, FechaCreacion) values
						(".$id.",'".$VcodigoDocumento."','".$data['Titulo']."','',now())";
					$res=db_exec($sql,$conn);
					$iddoc=$conn->insert_id ;
					//   $iddoc=mysql_insert_id();
			}
		// Confección del nombre del archivo			
		$nombrefich=preg_replace('(:| |-)', '', $data['NombreArchivo'].'_'.now()).".".$data['Formato'];

		if ($data['EsWordPHP']){
			// Informe de PHPWord
			$report = informe_phpword($id,$idtramite,$VcodigoDocumento,$data);		
    } else {
			// Informe de JasperServer
			$report = informe_jasper($id,$idtramite,$VcodigoDocumento,$data);
		}

		// adicional para salvar el documento al file system
		$pathExpediente=preg_replace('(:| |-|/)', '_', $_SESSION['NumeroExpediente']) ;
		$path = "../Documentos/Workflow/".$pathExpediente."/";
		mkdir($path, 0700);
    $file = $path.$nombrefich;
    $fp = fopen($file, "w");
    fwrite($fp, $report);
    fclose($fp);
                
    $tamano= strlen($report); // Tamaño del fichero
    $fileArray = [];
    $fileArray[0][name]= $file;
    $fileArray[0][usrName]= $nombrefich;
    $fileArray[0][size]= $tamano;
    $fileArray[0][type]= "application/word";
    $fileFileSystem=my_json_encode($fileArray);
                
		// Creación del seudocampo de múltiples archivos               
		if ($data['SeArchiva']){
				$Fichero = mysqli_real_escape_string($conn, $report);

				$sql="insert into wf_fichero (Documentos_idDocumentos, Titulo, FechaAlta, Usuario, Fichero, TipoICDA, NombreFichero, FicheroFileSystem)
					values (".$iddoc.",'Generado por el sistema',now(),'".$_SESSION['UserID']."',NULL,'No',NULL,'".$fileFileSystem."')";
		/* salva del blob
				$sql="insert into wf_fichero (Documentos_idDocumentos, Titulo, FechaAlta, Usuario, Fichero, TipoICDA, NombreFichero, FicheroFileSystem)
					values (".$iddoc.",'Generado por el sistema',now(),'".$_SESSION['UserID']."','".$Fichero."','No','".$nombrefich."','".$fileFileSystem."')";
		*/		
				$res=db_exec($sql,$conn);
		}else{
				header("Content-Disposition: attachment; filename=$nombrefich");
				header('Content-Type: application/word');
				echo $report;
				exit(); // Hay que actualizarlo para que genere el fichero y siga la tramitación que corresponda

			}
		}
	}
}

// Evaluación de Condiciones de cada Informe. Si no hay fichero, siempre es necesario el informe
function condicion_informe($data) {
$CondicionPHP = '';
$SeDebeCrearInforme=1;
// get information about uploaded files
$fileArray = my_json_decode($data["FicheroCondicion"]);
for($i = 0; $i < count($fileArray); $i++)
{
	$CondicionPHP = 	$fileArray[$i]["name"];
	include $CondicionPHP;
}
return $SeDebeCrearInforme;
}


// Obtención del informe a través de Jasperserbver
function informe_jasper($id,$idtramite,$VcodigoDocumento,$data){
  // REST V2 JasperServer
		require_once('Reports/ConexionJasper.php');
		$report_unit = basename($data['PathJasper']);
		$report_path = dirname($data['PathJasper'])."/";
		$report_format = $data['Formato'];
		$report_params=array('ID'=>$id,'idtramite'=>$idtramite,'CodigoDocumento'=>$VcodigoDocumento);

    $report = $jasper->getReport($report_path . $report_unit, $report_format, $report_params);
		return $report;
}

// Obtención del informe a través de PHPWord
function informe_phpword($id,$idtramite,$VcodigoDocumento,$data){
$InformeDOCX = '';
$InformePHP = '';
$report='';
// get information about uploaded files
$fileArray = my_json_decode($data["FicherosDeWordPHP"]);
for($i = 0; $i < count($fileArray); $i++)
{
  if ($fileArray[$i]["type"] == 'text/html') {
		$InformePHP = 	$fileArray[$i]["name"];
		} else {
		$InformeDOCX = $fileArray[$i]["name"];
		}
}
// Ejecucición de la fusión del Template de PHPWord
$_SESSION['InformeDOCX'] = $InformeDOCX;
include_once $InformePHP;

$report = file_get_contents($temp_file);

// borrar archivo temporal
unlink($temp_file);

return $report;
}

?>