<?php

namespace Paheko;

use Paheko\Files\Files;
use Paheko\Entities\Files\File;
use Paheko\Plugin\RecusFiscaux\Utils;

$session->requireAccess($session::SECTION_CONFIG, $session::ACCESS_ADMIN);

// récupérer les champs des noms
$champsNom = Utils::getChampsNom($config, $plugin);

$csrf_key = 'recusfiscaux_config';

$form->runIf('save', function () use ($plugin, $champsNom) {
    // Objet de l'asso
    $plugin->setConfigProperty('objet_asso', trim(f('objet_asso')));

    // Articles du CGI
    $confArticles = $plugin->getConfig('articlesCGI');
    // effacer l'ancienne configuration
    for ($i = 0; $i < count($confArticles); ++$i) {
        $confArticles[$i]->valeur = false;
    }
    // et copier la nouvelle
    $art_sel  = f('articlesCGI') ?: [];
    foreach ($art_sel as $article) {
        $confArticles[$article]->valeur = true;
    }
    $plugin->setConfigProperty('articlesCGI', $confArticles);

    // Taux de réduction
    $confTaux = $plugin->getConfig('reduction');
    // effacer l'ancienne configuration
    for ($i = 0; $i < count($confTaux); ++$i) {
        $confTaux[$i]->valeur = false;
    }
    // et copier la nouvelle
    $taux_sel = f('tauxReduction') ?: [];
    foreach ($taux_sel as $taux) {
        $confTaux[$taux]->valeur = true;
    }
    $plugin->setConfigProperty("reduction", $confTaux);

    // Informations au sujet du responsable
    $plugin->setConfigProperty('nom_responsable', trim(f('nom_responsable') ?: '') ?: null);
    $plugin->setConfigProperty('fonction_responsable', trim(f('fonction_responsable') ?: '') ?: null);
    $plugin->setConfigProperty('ville_asso', trim(f('ville_asso') ?: '') ?: null);

    // signature
    if (isset($_SESSION['sig_file']) && count($_SESSION['sig_file']) > 0) {
        // supprimer la signature précédente, si besoin
        if (
            null !== $plugin->getConfig('signature')
                &&
            $plugin->getConfig('signature') != $_SESSION['sig_file'][0]->path
        ) {
            $sig_file = \Paheko\Files\Files::get($plugin->getConfig('signature'));
            if (null !== $sig_file) {
                $sig_file->delete();
            }
        }
        // puis installer la nouvelle
        $plugin->setConfigProperty('signature', $_SESSION['sig_file'][0]->path);
    }

    // Numérotation des reçus
    $configNum = $plugin->getConfig('numerotation');
    $formNum = clone $configNum;
    if ($configNum->prefixe != trim(f('prefixe'))) {
        $formNum->prefixe = trim(f('prefixe'));
    }
    $formNum->annee = f('annee');
    $formNum->membre = f('membre');
    $formNum->sequentiel = f('sequentiel');
    $formNum->valeur_init = f('valeur_init');
    $plugin->setConfigProperty('numerotation', $formNum);

    // Impression des adresses de courriel
    $plugin->setConfigProperty('imprimerCourriel', trim(f('imprimerCourriel') ?: '') ?: null);

    // champs pour le nom et prénom
    foreach ($champsNom as $nom => $champ) {
        $champ->position = 0;
    }
    $noms_sel = f('champsNom') ?: [];
    $i = -count($noms_sel);
    foreach ($noms_sel as $nom) {
        $champsNom[$nom]->position = $i++;
    }
    $plugin->setConfigProperty('champsNom', $champsNom);

    // enregistrer la nouvelle config
    $plugin->save();
}, $csrf_key, PLUGIN_ADMIN_URL . 'config.php?ok');


// test fonctions fichiers : voir files.sor
// $fichiers = Files::list('config');
// error_log("fichiers config = " . print_r($fichiers, true));
// $fichiers = Files::list('ext/recusfiscaux');
// error_log("fichiers ext/recusfiscaux = " . print_r($fichiers, true));
$sig_file = Files::get('ext/recusfiscaux/default_signature.png');
// error_log("sig_file = " . print_r($sig_file, true));

//error_log("config.php::config=" . print_r($plugin->getConfig(), true));


// trier les champs de nom pour l'affichage
uasort($champsNom, function ($a, $b) {
    return $a->position - $b->position;
});

$path = qg('path') ?: File::CONTEXT_CONFIG;
$tpl->assign('default_signature',  '/' . 'ext/recusfiscaux/default_signature.png');
// $tpl->assign('default_signature', \Paheko\WWW_URL . "plugin/recusfiscaux/default_signature.png");
$tpl->assign('plugin_config', $plugin->getConfig());
$tpl->assign('plugin_css', ['style.css']);
$tpl->assign('numerotation', $plugin->getConfig('numerotation'));
$tpl->assign(compact('csrf_key', 'path', 'champsNom'));
$tpl->display(PLUGIN_ROOT . '/templates/config.tpl');