#!/usr/bin/php -q
<?php

define('FTP_HOST', 'ftp.scores-decisions.com');
define('FTP_USER', 'bilansext');
define('FTP_PASS', 'j12azt78');
define('FTP_DIR', 'send');

// Paramètres
if ( in_array($argv[1], array('--help', '-help', '-h', '-?')) ) {
?>
Envoi les bilans saisie par les clients

Sans aucun paramètre, traitement automatique.

Mode test avec les options -t, --test pour voir ce qui va être fait

Utilisation :
<?php echo $argv[0]; ?> >> /vers/fichier.log
<?php
	exit;
}

require_once realpath(dirname(__FILE__)).'/../config/prepend.php';
require_once realpath(dirname(__FILE__)).'/../framework/common/mysql.php';
require_once realpath(dirname(__FILE__)).'/../framework/common/dates.php';

//==> Functions

function getRemoteFilename($infos)
{
	$date = WDate::dateT('d/m/Y', 'Ymd', $infos['bilanCloture']);
	$file = $infos['siren'].'_'.
		$infos['format'].$date.'_'.
		$infos['bilanDuree'].'_'.
		$infos['confidentiel'].'_'.
		$infos['utilisateurId'];
	
	if ($infos['env']=='PRD') {
		return $file;
	}
	return $file.'_'.
		$infos['env'];
}


function saveDateEnvoi($ref)
{
	$wdb = new WDB('sdv1');
	$data = array( 'dateEnvoi' => date('Y-m-d H:m:s') );
	$wdb->update('bilansaisie', $data, "ref='$ref'");
}


function listBilans()
{
	$wdb = new WDB('sdv1');
	$liste = $wdb->select(
		'bilansaisie',
		'ref, utilisateurId, confidentiel, siren, bilanCloture, bilanDuree, fichier, env',
		"dateEnvoi='0000-00-00 00:00:00' AND fichier!=''", false, MYSQL_ASSOC
	);
	return $liste;
}

function sendToFtp($localFile, $remoteFile)
{
	$conn_id = ftp_connect(FTP_HOST);
	$login_result = ftp_login($conn_id, FTP_USER, FTP_PASS);
	ftp_chdir($conn_id, FTP_DIR);
	if (ftp_put($conn_id, $remoteFile, $localFile, FTP_BINARY)) {
	 	return true;
	}
	ftp_close($conn_id);
	return false;
}

//==> Début programme

$test = false;
if ( in_array($argv[1], array('--test', '-t')) ) {
	$test = true;
}

/**
 * Liste les fichiers qui peuvent être traités
 */
$listBilans = listBilans();
$tabFichier = array();
foreach ($listBilans as $infos)
{
	$filename = $infos['ref'].'-'.$infos['siren'];
	$extValide = array('pdf', 'tiff');
	$fileExist = false;
	foreach ($extValide as $ext) {
		if (file_exists(PATH_DATA.'/bilanclient/'.$filename.'.'.$ext)) {
			$fileExist = true;
			$tabFichier[] = array(
				'ref' => $infos['ref'],
				'localFile' => $filename.'.'.$ext,
				'remoteFile' => getRemoteFilename($infos).'.'.$ext,
			);
		
			break;
		}
	}
	//Erreur fichier inexistant
	if (!$fileExist) {
		echo "Fichier manquant, Ref:".$infos['ref']."\n";
	}
}

if ($test) exit;

/**
 * Envoi sur le FTP
 */
foreach ($tabFichier as $fichier)
{
	echo "Envoi du fichier ".$fichier['localFile']." => ".
		$fichier['remoteFile'].
		" (".$fichier['ref'].")\n";
	if ( sendToFtp(PATH_DATA.'/bilanclient/'.$fichier['localFile'], $fichier['remoteFile']) ) {
		saveDateEnvoi($fichier['ref']);
		echo "Envoi terminé.\n";
	} else {
		echo "Erreur d'envoi !\n";
	}
}