<?php
session_start();

if (isset($_SESSION['utente']) &&
isset($_SESSION['NOME_Impianto']) &&
isset($_SESSION['Matricola_CALL']) &&
isset($_SESSION['Analisi35']) &&
isset($_SESSION['nvasca']) &&
isset($_SESSION['PIP300']) &&
isset($_SESSION['ADDR_V'])) {

$utente = $_SESSION['utente'];
$NOME_Impianto = $_SESSION['NOME_Impianto'];
$Matricola_CALL = $_SESSION['Matricola_CALL'];
$Analisi35 = $_SESSION['Analisi35'];
$nvasca = $_SESSION['nvasca'];
$nome_utente = $_SESSION['nome_utente'];
$PIP300 = $_SESSION['PIP300'];
$ADDR_V = $_SESSION['ADDR_V'];

}

include 'header.php';

$Full = ($Analisi35 == 0) ? 1 : 0;

if($utente == 2){
    $Titolo = $NOME_Impianto." - ".$nvasca.($Full ? " - PRO5":" - PRO3");
}else{
    $Titolo = $NOME_Impianto." - ".$nvasca;
}


$data_start = $_POST["data_start"];
$data_stop  = $_POST["data_stop"];


$start = DateTime::createFromFormat('d/m/Y',$data_start);
$stop  = DateTime::createFromFormat('d/m/Y',$data_stop);
$stop->modify('+1 day');

$periodo = new DatePeriod($start,new DateInterval('P1D'),$stop);


$data = [];
$timeStamps = [];
$tableRows = [];


foreach ($periodo as $data_corrente){

$giorno = $data_corrente->format("d");
$mese   = $data_corrente->format("m");
$anno   = $data_corrente->format("Y");

$SkPIP300 = str_pad($PIP300,6,'0',STR_PAD_LEFT);
$Tipo_Strumento = str_pad($Matricola_CALL,2,'0',STR_PAD_LEFT);
$Indirizzo = str_pad($ADDR_V,2,'0',STR_PAD_LEFT);

$file = "C:\\xampp\\htdocs\\archivi\\$anno\\$mese\\{$SkPIP300}_{$Tipo_Strumento}_{$Indirizzo}_{$giorno}{$mese}{$anno}.CSV";

if (!file_exists($file)) continue;

$handle = fopen($file,"r");

if ($handle){

while (($row = fgetcsv($handle,1000,";")) !== FALSE){

$timeStamps[] = $giorno.'/'.$mese.' '.$row[0];

$row[1] = (float)str_replace(',','.',$row[1]);
$row[2] = (float)str_replace(',','.',$row[2]);
$row[3] = (float)str_replace(',','.',$row[3]);

$data['Cloro Libero ppm'][] = ($row[1]==100 || $row[1]>5)?null:$row[1];
$data['pH'][] = ($row[2]==100 || $row[2]>8 || $row[2]<6)?null:$row[2];
$data['°C'][] = ($row[3]==100 || $row[3]>35 || $row[3]<25)?null:$row[3];

$cl_comb = "";
$redox = "";

if($Full){

$row[4] = (float)str_replace(',','.',$row[4]);
$row[5] = (float)str_replace(',','.',$row[5]);

$data['Cloro Combinato ppm'][] = ($row[4]==100 || $row[4]>5)?null:$row[4];
$data['Redox mV'][] = ($row[5]<0 || $row[5]>1000)?null:$row[5];

$cl_comb = $row[4];
$redox = $row[5];

}

$tableRows[] = [
'data' => $giorno.'/'.$mese.'/'.$anno,
'ora' => $row[0],
'cloro' => $row[1],
'ph' => $row[2],
'temp' => $row[3],
'cloro_comb' => $cl_comb,
'redox' => $redox
];

}

fclose($handle);

}

}



if(isset($_POST['download_csv'])){

header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename="dati_impianto.csv"');

$output = fopen("php://output","w");

if($Full){

fputcsv($output,
["Data","Ora","Cloro libero","pH","Temperatura","Cloro combinato","Redox"],
";");

}else{

fputcsv($output,
["Data","Ora","Cloro libero","pH","Temperatura"],
";");

}

foreach($tableRows as $r){

if($Full){

fputcsv($output,
[$r['data'],$r['ora'],$r['cloro'],$r['ph'],$r['temp'],$r['cloro_comb'],$r['redox']],
";");

}else{

fputcsv($output,
[$r['data'],$r['ora'],$r['cloro'],$r['ph'],$r['temp']],
";");

}

}

fclose($output);
exit();

}



$chartSettings = [
'Cloro Libero ppm'=>['color'=>'blue','min'=>0,'max'=>5],
'pH'=>['color'=>'green','min'=>6,'max'=>8],
'°C'=>['color'=>'red','min'=>25,'max'=>35]
];

if($Full){

$chartSettings['Cloro Combinato ppm']=['color'=>'orange','min'=>0,'max'=>5];
$chartSettings['Redox mV']=['color'=>'purple','min'=>0,'max'=>1000];

}

?>

<!DOCTYPE html>
<html>

<head>

<title>Grafici</title>

<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>

<style>

body{
background:#C0C0C0;
margin:0;
padding:0;
}

.header{
color:#007bff;
text-align:center;
padding:20px;
font-size:32px;
font-weight:bold;
}

.chart-container{
background:white;
margin:0 auto 20px auto;
width:80%;
padding:20px;
border:1px solid black;
}

table{
width:80%;
margin:auto;
background:white;
}

th{
background:#e0e0e0;
}

td,th{
padding:6px;
text-align:center;
}

</style>

</head>

<body>

<div class="header"><?php echo $Titolo; ?></div>

<div style="text-align:center;margin:20px">

<form method="post">

<input type="hidden" name="download_csv" value="1">
<input type="hidden" name="data_start" value="<?php echo $data_start; ?>">
<input type="hidden" name="data_stop" value="<?php echo $data_stop; ?>">

<button type="submit" style="font-size:18px;padding:10px">Scarica dati CSV</button>

</form>

</div>


<?php

foreach ($chartSettings as $label=>$settings){

echo '<div class="chart-container">';
echo '<canvas id="chart'.md5($label).'"></canvas>';
echo '</div>';

echo '<script>';

echo 'new Chart(document.getElementById("chart'.md5($label).'"),{';

echo 'type:"line",';

echo 'data:{';

echo 'labels:'.json_encode($timeStamps).',';

echo 'datasets:[{';

echo 'label:"'.$label.'",';

echo 'data:'.json_encode($data[$label] ?? []).',';

echo 'borderColor:"'.$settings['color'].'",';

echo 'tension:0.1';

echo '}]';

echo '},';

echo 'options:{';

echo 'scales:{y:{min:'.$settings['min'].',max:'.$settings['max'].'}}';

echo '}';

echo '});';

echo '</script>';

}

?>

<br>

<table border="1">

<tr>

<th>Data</th>
<th>Ora</th>
<th>Cloro libero</th>
<th>pH</th>
<th>Temperatura</th>

<?php if($Full){ ?>

<th>Cloro combinato</th>
<th>Redox</th>

<?php } ?>

</tr>

<?php

foreach($tableRows as $r){

echo "<tr>";

echo "<td>".$r['data']."</td>";
echo "<td>".$r['ora']."</td>";
echo "<td>".$r['cloro']."</td>";
echo "<td>".$r['ph']."</td>";
echo "<td>".$r['temp']."</td>";

if($Full){
echo "<td>".$r['cloro_comb']."</td>";
echo "<td>".$r['redox']."</td>";
}

echo "</tr>";

}

?>

</table>

<br><br>

</body>
</html>