<?php
namespace Modules\Fournisseur\Controller;

use API\Partenaire\IFournissLink;
use Entity\Model\AdrFourn;
use Entity\Model\ChiffAffaireFour;
use Entity\Model\Contfour;
use Helpers\Ariane\ArianeSub;
use Helpers\Outil\Sql;
use Modules\API\APIExterne\TwigExtension\OutilAPIExtension;
use Modules\Fournisseur\Repository\FircheFournissRepo;
use Skeleton\Controller\Controller;
use Entity\Model\Fourniss;
use Modules\Fournisseur\Repository\Groupement;
use Helpers\Ariane\Ariane;
use Helpers\Trad\Trad;

class RecapFournisseurController extends Controller
{


    public function indexAction(): string
    {
        $idFrs = $this->request->getAttribute('id');
        $trad  = $this->getTranslationService();

        $infoFrs        = (new FircheFournissRepo($this->pdo))->infoFrs($idFrs);
        $listeCtc       = (new Contfour($this->pdo))->findAll(['CODE_FOU' => $idFrs]);
        $chiffreAffaire = (new ChiffAffaireFour($this->pdo))->findAll(['CODE_FOUR' => $idFrs]);

        $tabPeriodicite =
            [
                'M' => $trad->t('Mensuelle'),
                'T' => $trad->t('Trimestrielle'),
                'S' => $trad->t('Semestrielle'),
                'A' => $trad->t('Annuelle'),
            ];
        
        ariane::generate(5, $trad->t('Détail fournisseur'));
        ArianeSub::init();
        ArianeSub::generate(0, 0, $trad->t('Fiche fournisseur'), $this->router->generateUri('Fournisseur.RecapFournisseur.index', ['id' => $idFrs]));

        $parametrageOnglet = (new FournisseurController($this->renderer, $this->pdo, $this->router, $this->contenaire))->getParametrageOnglet($infoFrs);

        if (($parametrageOnglet['HISTO_NONVISIBLE'] ?? false) != true) {
            ArianeSub::generate(0, 3, $trad->t('Historique'), $this->router->generateUri('GlobalApplication.Historique.historique', ['MODULE' => 'Fournisseur', 'id' => $idFrs]), 0);
        }
        if (($parametrageOnglet['EVAL_NONVISIBLE'] ?? false) != true) {
            ArianeSub::generate(0, 4, $trad->t('Evaluation'), $this->router->generateUri('Evaluation.Resultat.comparativeView', ['supplier' => $idFrs]), 0);
        }
        if (($parametrageOnglet['INDICATEURS_NONVISIBLE'] ?? false) != true) {
            ArianeSub::generate(0, 5, $trad->t('Indicateurs'), $this->router->generateUri('Fournisseur.Fournisseur.indicateurs', ['id' => $idFrs]), 0);
        }
        $Api = new \Modules\API\APIExterne\Repository\Partenaire($this->pdo);

        if (($parametrageOnglet['OXA360_NONVISIBLE'] ?? false) != true) {
            $posAriane = 10;

            $listPatenaire = $this->getPartenaireService()->getListByFourniss($idFrs);
            foreach ($listPatenaire as $partenaire) {
                if (!($partenaire instanceof IFournissLink)) {
                    continue;
                }
                $route = $partenaire->getRouteDetail();
                if ($route == null) {
                    continue;
                }
                ArianeSub::generate(
                    0,
                    $posAriane++,
                    (new OutilAPIExtension($this->pdo, $this->contenaire, $this->router))
                        ->generateHtmlLogo($partenaire),
                    $this->router->generateUri(
                        $route,
                        ['fournissId' => $idFrs],
                    ),
                );
            }

            if ($Api->fournisseurIsConnectActivite($idFrs, 'INFOLG')) {
                ArianeSub::generate(0, $posAriane++, '<img src ="' . $this->contenaire->get('baseUrl') . 'img/API/logo-info-legale.png" height="20px"/>', $this->router->generateUri('API.InfoLegale.indicateur', ['idFournisseur' => $idFrs]), 0);
            }

            if ($Api->fournisseurIsConnectActivite($idFrs, 'BVD')) {
                ArianeSub::generate(0, $posAriane++, '<img src ="' . $this->contenaire->get('baseUrl') . 'img/API/logo-BVD.png" height="20px"/>', $this->router->generateUri('API.BVD.index', ['idFournisseur' => $idFrs]), 0);
            }
        }

        return $this->renderer->render('@Fournisseur/Fournisseur/Recap', [
            'idFrs'             => $idFrs,
            'infoFrs'           => $infoFrs,
            'listeCtc'          => $listeCtc,
            'chiffreAffaire'    => $chiffreAffaire,
            'tabPeriodicite'    => $tabPeriodicite,
            'parametrageOnglet' => $parametrageOnglet,
            'paramTaxe'         => Sql::parametrageTaxePays($this->pdo, $infoFrs['CODE_PAYS']),
        ]);
    }
}
