<?php

namespace Modules\Fournisseur\MenuContextuel;

use Helpers\Outil\MenuContextuel;
use Helpers\Outil\Sql;
use Helpers\Trad\ITrad;
use Helpers\Trad\Trad;
use Skeleton\Router;

class DocFournisseurMenuContextuel extends MenuContextuel
{
    /**
     * @var array<mixed> droit
     */
    public $droit;

    public function __construct(\PDO $pdo, Router $router, ITrad $trad)
    {
        parent::__construct($pdo, $router, $trad);

        $this->droit = [];
    }

    /**
     * generate
     *
     * @param array<mixed> $doc As loaded by DocAtt::detail
     * @return array<mixed>
     */
    public function generate(
        array $doc,
        string $id,
        bool $gestionAlg
    ): array {
        $menuContextuel = [];

        $cat = $doc['CODE_CAT'];
        $noOrdre = $doc['NO_ORDRE'];
        $title = $doc['TITRE'];
        $inutile = Sql::boolSql($doc['DOC_INUTILE']);

        $codePartenaire = $doc['CodePartenaire']; // old partenaire system (HIVEO / EAT / ALG)

        if ($inutile === 0 && $doc['NumOrder'] != '-1') {
            $paramOrdre = trim($doc['ORDRE_PARAM']);
            if (!$paramOrdre) {
                $paramOrdre = $noOrdre;
            }
            
            $menuContextuel['listeSecondaire'][] = [
                'libelle' => $this->trad->t('Déclarer "Sans objet"'),
                'lien' => '',
                'lienJs' => $this->popupConfirm(
                    true,
                    $this->router->generateUri(
                        'Fournisseur.DocFournisseur.sansObjet',
                        ['id' => $id, 'cat' => $cat, 'noOrdre' => $paramOrdre]
                    ),
                    Trad::strBuild($this->trad->t('Etes-vous sûr de vouloir passer le document @1@ en sans objet ?'), $title),
                    true,
                    '',
                )
            ];
        }

        if ($inutile === 0 && $noOrdre && (($codePartenaire != 'ALG' && $gestionAlg) || $gestionAlg == false)) {
            $menuContextuel['listeSecondaire'][] = [
                'libelle' => $this->trad->t('Modifier'),
                'lien' => '',
                'lienJs' => $this->redirectJSWithPost(
                    $this->router->generateUri(
                        'Fournisseur.DocFournisseur.editDocAtt',
                        ['id' => $id]
                    ),
                    (string)json_encode(['titre' => $title])
                ),
            ];
        }

        if (($codePartenaire != 'ALG' && $gestionAlg && $codePartenaire != 'HIVEO' && $codePartenaire != 'EAT') || $gestionAlg == false) {
            $menuContextuel['listeSecondaire'][] = [
                'libelle' => $this->trad->t('Créer une nouvelle version'),
                'lien' => $this->router->generateUri(
                    'Fournisseur.DocFournisseur.ajoutDocAtt',
                    ['id' => $id]
                    + (empty($doc['NO_ORDRE']) ? [
                        'type' => 'P', /* Doc missing -> use Canva ID */
                        'ordre' => $doc['ORDRE_PARAM'],
                    ] : [
                        'type' => 'D', /* Use document ID */
                        'ordre' => $doc['NO_ORDRE']
                    ])
                ),
            ];
        }

        if ($noOrdre && $inutile == 0 && (($codePartenaire != 'ALG' && $gestionAlg) || $gestionAlg == false)) {
            $menuContextuel['listeSecondaire'][] = [
                'libelle' => $this->trad->t('Supprimer'),
                'lien' => '',
                'lienJs' => $this->popupConfirm(
                    true,
                    $this->router->generateUri(
                        'Fournisseur.DocFournisseur.supprimer',
                        ['id' => $id, 'noOrdre' => $noOrdre]
                    ),
                    Trad::strBuild($this->trad->t('Êtes-vous sûr de vouloir supprimer le document @1@ ?'), $title),
                    true,
                    'documents_rattaches_fournisseur',
                )
            ];
        }

        if (!empty($doc['DT_VERSION'])) {
            $menuContextuel['listeSecondaire'][] = [
                'libelle' => $this->trad->t('Voir historique'),
                'lien' => '',
                'lienJs' => "AjaxListeHisto('" . ($this->router->generateUri('Fournisseur.DocFournisseur.listeHisto', ['id' => $id])) . "', '" . addslashes($title) . "');",
            ];
        }

        return $menuContextuel;
    }
}
