<?php require_once('../Connections/dbaseconn.php'); ?>
<?php
ob_start(); // Inizia il buffering dell'output
require '../../vendor/autoload.php';

use PhpOffice\PhpWord\PhpWord;
use PhpOffice\PhpWord\IOFactory;

// Collegati al database
$conn = new mysqli($servername, $username, $password, $database);

if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

// Recupera il uniquecode dal GET
$uniquecode = $_GET['uniquecode'];

// Query per ottenere i dati
$sql = "SELECT material_category, parameter, unit_of_measure, additional_requirement_note
        FROM rslxls 
        WHERE uniquecode = '$uniquecode'
        ORDER BY material_category";

$result = $conn->query($sql);

// Crea una nuova istanza di PHPWord e imposta l'orientamento della pagina in landscape
$phpWord = new PhpWord();
$section = $phpWord->addSection(array('orientation' => 'landscape'));

// Se ci sono risultati
if ($result->num_rows > 0) {
    // Aggiungi un titolo al documento
    $section->addText('Report for Unique Code: ' . htmlspecialchars($uniquecode), array('bold' => true, 'size' => 16));

    // Variabile per tracciare la categoria attuale
    $currentCategory = null;

    while ($row = $result->fetch_assoc()) {
        // Se la categoria cambia, crea una nuova tabella per la categoria
        if ($currentCategory !== $row['material_category']) {
            $currentCategory = $row['material_category'];

            // Aggiungi uno spazio bianco prima della tabella del material_category
            $section->addTextBreak(1);

            // Aggiungi una tabella solitaria per il material_category con sfondo blu scuro e testo bianco
            $categoryTable = $section->addTable(array('borderSize' => 1, 'borderColor' => '000000', 'cellMargin' => 50));
            $categoryTable->addRow();
            $categoryTable->addCell(12000, array('bgColor' => '000080'))->addText(htmlspecialchars($currentCategory), array('bold' => true, 'color' => 'FFFFFF', 'size' => 14), array('alignment' => 'center'));

            // Aggiungi uno spazio bianco dopo la tabella del material_category
            $section->addTextBreak(1);

            // Crea una tabella per i parametri della categoria
            $table = $section->addTable(array('borderSize' => 1, 'borderColor' => '000000', 'cellMargin' => 50));
            $table->addRow();
            $table->addCell(2000, array('bgColor' => 'E6E6FF'))->addText("Parameter", array('bold' => true));
            $table->addCell(1500, array('bgColor' => 'E6E6FF'))->addText("Unit", array('bold' => true));
            $table->addCell(1000, array('bgColor' => 'E6E6FF'))->addText(""); // Colonna vuota
            $table->addCell(3000, array('bgColor' => 'E6E6FF'))->addText("Test method reference", array('bold' => true));
        }

        // Gestisci il valore della colonna additional_requirement_note e codifica i caratteri speciali
        $additionalNote = !empty($row['additional_requirement_note'])
            ? htmlspecialchars($row['additional_requirement_note'])
            : 'N/A';

        // Aggiungi una riga per i dati
        $table->addRow();
        $table->addCell(2000)->addText(htmlspecialchars($row['parameter']));
        $table->addCell(1500)->addText(htmlspecialchars($row['unit_of_measure']));
        $table->addCell(1000)->addText(""); // Colonna vuota
        $table->addCell(3000)->addText($additionalNote);
    }

    // Aggiungi uno spazio bianco alla fine del documento
    $section->addTextBreak(1);
} else {
    $section->addText("No records found for uniquecode: " . htmlspecialchars($uniquecode));
}

// Salva il file e invialo al browser per il download
$filename = "RSL_Report_$uniquecode.docx";

// Imposta le intestazioni per il download del file
header("Content-Description: File Transfer");
header('Content-Disposition: attachment; filename="' . $filename . '"');
header('Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document');
header('Content-Transfer-Encoding: binary');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Expires: 0');

// Pulisci il buffer di output per evitare problemi
ob_clean();
// Salva il file nel buffer e invialo al browser
$objWriter = IOFactory::createWriter($phpWord, 'Word2007');
$objWriter->save("php://output");
exit();
?>



