<?php
namespace Helpers\ExportTo;

class Generate
{
    use \Traits\ExportTo\Csv;
    use \Traits\ExportTo\Xml;
    use \Traits\ExportTo\Excel;

    public string $fileName;
    
    /**
     * fonction convertissent un array en un fichier de type $typeExport.
     *
     * @param string $exportDocument    : nom du fichier a généré
     * @param string $typeExport        : type d'export souhaité
     * @param array<mixed> $article            : liste a exporter
     * @param array<mixed> $keyColonne         : pour le excel, les colonnes du tableau
     * @param bool $noKeyColonne
     * @param bool $timestamp           : Ajoute ou non la date et heure de création du fichier dans le nom du fichier
     * @return string                   : file name relative to tmp dir
     */
    public function __construct(string $exportDocument, string $typeExport, array $article, $keyColonne = [], $noKeyColonne = false, $timestamp = true)
    {
        $this->fileName = '';
        if (empty($exportDocument)) {
            return;
        }
        if ($typeExport == 'csv') {
            $this->convert_to_csv($article, $exportDocument, ';');
        }
        
        if ($typeExport == 'csvV2') {
            $this->fileName = $this->convert_to_csv_V2($article, $exportDocument, ';', $keyColonne);
        }
        
        // if ($typeExport == 'pdf') {
        //     /** @phpstan-ignore-next-line */
        //     $info = $this->convert_to_pdf($article, $exportDocument, ';');
        // }
        // if ($typeExport == 'word') {
        //     /** @phpstan-ignore-next-line */
        //     $info = $this->convert_to_word($article, $exportDocument, ';');
        // }
        if ($typeExport == 'excel') {
                /**
             * TODO BAILA
             * Changement de la library dans la prochaine version 1041ab
             */
            
            $this->fileName = $this->convert_to_excel($article, $exportDocument, $keyColonne, $noKeyColonne, $timestamp);
        }
        
        if ($typeExport == 'xml') {
            $this->convert_to_xml($article, $exportDocument);
        }
    }

    public function getExcel():string
    {
        return $this->fileName;
    }
}
