<?php

namespace Modules\Additional\Specifique\Client158\Modules\EtatStatistique\Service;

use Helpers\Outil\Date;
use Helpers\Trad\ITrad;
use PDO;

class EtatStatistiqueService
{
    /**
     * trad
     *
     * @var ITrad
     */
    private $trad;
    private PDO $pdo;

    public function __construct(ITrad $trad, PDO $pdo)
    {
        $this->trad   = $trad;
        $this->pdo    = $pdo;
    }

    /**
     * getTableColumns
     *
     * @return array<mixed>
     */
    public function getTableColumns(): array
    {
        $columns = [
            'liba1'             => $this->trad->t('SI'),
            'responsable_si'    => $this->trad->t('Responsable'),
            'AXE_DEUX'          => $this->trad->t('Code Axe 2'),
            'liba2'             => $this->trad->t('Poste budgétaire'),
            'CODE_PER'          => $this->trad->t('Période budgétaire'),
            'BUDGE'             => $this->trad->t('Budget'),
            'CONSOMME'          => $this->trad->t('Consommé'),
            'NO_DA'             => $this->trad->t('N° de la DA'),
            'NO_PO_DA'          => $this->trad->t('Ligne DA'),
            'suivi_projet'      => $this->trad->t('Suivi projet'),
            'NO_CA'             => $this->trad->t('N° de la Cde'),
            'NO_PO_CA'          => $this->trad->t('Ligne de la Cde'),
            'SSCPTEANA'         => $this->trad->t('Compte comptable'),
            'CODE_FOU'          => $this->trad->t('Fournisseur'),
            'CODE_ART'          => $this->trad->t('Code article'),
            'LIBELLE_ARTICLE'   => $this->trad->t('Désign. article'),
            'DES_SOMM'          => $this->trad->t('Désign. commande'),
            'CONTMEMO'          => $this->trad->t('Désign. comp.'),
            'MONTANT_HT'        => $this->trad->t('Montant HT'),
            'date_dern_livr'    => $this->trad->t('Dte dern. livr.'),
            'DATE_ENR'          => $this->trad->t('Dte dern. fact.'),
            'NUM_FACT'          => $this->trad->t('N° dern. facture'),
            'FACTURE'           => $this->trad->t('Montant facturé'),
        ];

        return $columns;
    }
    
    /**
     * getUoList
     *
     * @return string
     */
    public function getUoList(): string
    {
        $list = (new \Modules\Ajax\Repository\Listes($this->pdo))->SectionImputation([
            'si_valide' => 'on',
            'panier' => '1',
            'CODE_STE' => $_SESSION['Session_SocUsrProfil'],
        ], true);

        $return = ' IN (';

        foreach ($list as $si) {
            $return .= '\'' . $si['CODE_SI'] . '\', ';
        }

        return substr($return, 0, strlen($return) - 2) . ') ';
    }
    
    /**
     * getTableExport
     *
     * @param  array<mixed> $data
     * @return array<mixed>
     */
    public function getTableExport(array $data): array
    {
        $array = [];
        $dateTool = new Date();


        foreach ($data as $ligneExport) {
            $array[] = [
                'liba1'             => ($ligneExport['liba1'] != ''
                                        ? ($ligneExport['liba1'] . ' (' . $ligneExport['CODE_SI'] . ')')
                                        : $ligneExport['CODE_SI']),
                'responsable_si'    => $ligneExport['responsable_si'],
                'AXE_DEUX'          => $ligneExport['AXE_DEUX'],
                'liba2'             => $ligneExport['liba2'],
                'CODE_PER'          => $ligneExport['CODE_PER'],
                'BUDGE'             => number_format($ligneExport['BUDGE'] ?? 0, 2, ',', ''),
                'CONSOMME'          => number_format($ligneExport['CONSOMME'] ?? 0, 2, ',', ''),
                'NO_DA'             => $ligneExport['NO_DA'],
                'NO_PO_DA'          => $ligneExport['NO_PO_DA'],
                'suivi_projet'      => $ligneExport['suivi_projet'],
                'NO_CA'             => $ligneExport['NO_CA'],
                'NO_PO_CA'          => $ligneExport['NO_PO_CA'],
                'SSCPTEANA'         => ($ligneExport['SCA_LABEL'] != ''
                                        ? ($ligneExport['SCA_LABEL'] . ' (' . $ligneExport['SSCPTEANA'] . ')')
                                        : $ligneExport['SSCPTEANA']),
                'CODE_FOU'          => ($ligneExport['RS'] != ''
                                        ? ($ligneExport['RS'] . ' (' . $ligneExport['CODE_FOU'] . ')')
                                        : $ligneExport['CODE_FOU']),
                'CODE_ART'          => $ligneExport['CODE_ART'],
                'LIBELLE_ARTICLE'   => $ligneExport['LIBELLE_ARTICLE'],
                'DES_SOMM'          => $ligneExport['DES_SOMM'],
                'CONTMEMO'          => $ligneExport['CONTMEMO'],
                'MONTANT_HT'        => number_format($ligneExport['MONTANT_HT'] ?? 0, 2, ',', ''),
                'date_dern_livr'    =>  $ligneExport['date_dern_livr'] != ''
                                            ? $dateTool->dateConverte($ligneExport['date_dern_livr'], null)
                                            : '',
                'DATE_ENR'          => $ligneExport['DATE_ENR'] != ''
                                        ? $dateTool->dateConverte($ligneExport['DATE_ENR'], null)
                                        : '',
                'NUM_FACT'          => $ligneExport['NUM_FACT'],
                'FACTURE'           => number_format($ligneExport['FACTURE'] ?? 0, 2, ',', ''),
            ];
        }

        return $array;
    }
}
