<?php 
include $_SERVER['DOCUMENT_ROOT'].'/core/load.php';
header('Content-Type: application/json; charset=utf-8');

$erreur = array();
$sortie = array();

$body = file_get_contents("php://input");
$jsonTab = json_decode($body, true);

if($jsonTab === null){
	$msg = 'UP GED Flux vide: '."\n";
	/*logError($msg);*/
	http_response_code(400);
	exit();
}

$obligatoire = array(
	'idClient',
	'file',
	'idDossier',
	'idUser',
	'typeUser',
	'nomUser',
	'nomOrigine',
	'idParam',
	'statut',
	'creation'
);

foreach ($obligatoire as $value) {
	if(!isset($jsonTab[$value])){
		$erreur[] = 'Argument : '.$value.' absent';
	}
}

if(count($erreur) > 0){
	$msg = 'UP GED Erreur Arguments : '."\n";
	$msg .= 'Erreur :'."\n";
	$msg .= json_encode($erreur, JSON_PRETTY_PRINT);
	$msg .= 'Fulx :'."\n";
	$jsonTab['file'] = 'Supp pour le log';
	$msg .= json_encode($jsonTab, JSON_PRETTY_PRINT);
	logError($msg);
	http_response_code(400);
	exit();
}

if($jsonTab['idClient'] != apache_getenv('idClient')){
	$msg = 'UP GED ID client incorrect : '."\n";
	$msg .= 'Fulx :'."\n";
	$jsonTab['file'] = 'Supp pour le log';
	$msg .= json_encode($jsonTab, JSON_PRETTY_PRINT);
	logError($msg);
	http_response_code(400);
	exit();
}

$file = $jsonTab['file'];

$nomServeur = generateRandomString().'-'.$jsonTab['creation'].'.pdf';
$root = $_SERVER['DOCUMENT_ROOT'].'/documents/';
$folder = $root.date('Y/W', $jsonTab['creation']);



if(!is_dir($folder)){
	if(!is_dir($root.date('Y', $jsonTab['creation']))){
		mkdir($root.date('Y', $jsonTab['creation']), 0755);
		mkdir($folder, 0755);
	}
	else{
		mkdir($folder, 0755);
	}
}

//file_put_contents($folder.'/'.$nomServeur, base64_decode($file));

$folderTemp = $root.'/temp';
if(!is_dir($folderTemp)){
	mkdir($folderTemp, 0755);
}

$tempFile = $folderTemp.'/'.$nomServeur;
$finalFile = $folder.'/'.$nomServeur;

file_put_contents($tempFile, base64_decode($file));

$command = "gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -dPreserveAnnots=false -sOutputFile=$finalFile $tempFile";
$p_result =  exec($command);
unlink($tempFile);

if(file_exists($folder.'/'.$nomServeur)){

	$argGet = array(
		'idDossier' => $jsonTab['idDossier'],
		'idUser' => $jsonTab['idUser'],
		'typeUser' => $jsonTab['typeUser'],
		'nomUser' => $jsonTab['nomUser'],
		'nomOrigine' => $jsonTab['nomOrigine'],
		'nomServeur' => $nomServeur,
		'idParam' => $jsonTab['idParam'],
		'statut' => $jsonTab['statut'],
		'creation' => $jsonTab['creation']
	);

	if(isset($jsonTab['ged2archive']) AND is_array($jsonTab['ged2archive']) AND count($jsonTab['ged2archive']) > 0){
		$argGet['ged2archive'] = $jsonTab['ged2archive'];
	}

	if(isset($jsonTab['idUserAction'])){
		$argGet['idUserAction'] = $jsonTab['idUserAction'];
		$argGet['typeUserAction'] = $jsonTab['typeUserAction'];
		$argGet['nomUserAction'] = $jsonTab['nomUserAction'];
	}
	if(isset($jsonTab['idUserView'])){
		$argGet['idUserView'] = $jsonTab['idUserView'];
		$argGet['typeUserView'] = $jsonTab['typeUserView'];
		$argGet['nomUserView'] = $jsonTab['nomUserView'];
	}
	if(isset($jsonTab['parent'])){
		$argGet['parent'] = $jsonTab['parent'];
	}

	$return = sendApi($argGet, url2Api(apache_getenv('agenceURL')));

	if($return['info']['http_code'] === 200){
		echo $return['response'];
	}
	else{
		$msg = 'UP GED Agence 400 : '."\n";
		$msg .= '_SESSION :'."\n";
		$msg .= json_encode($_SESSION, JSON_PRETTY_PRINT);
		$msg .= 'Retour API Agence:'."\n";
		$msg .= json_encode($return, JSON_PRETTY_PRINT);
		logError($msg);
		echo 0;
		exit();
	}
}
else{
	$msg = 'UP GED Erreur File Exists: '."\n";
	$msg .= 'Folder :'."\n";
	$msg .= $folder.'/'.$nomServeur."\n";
	$msg .= 'Fulx :'."\n";
	$msg .= json_encode($jsonTab, JSON_PRETTY_PRINT);
	logError($msg);
	http_response_code(400);
	exit();
}
?>