<?php

namespace Modules\Fournisseur\MenuContextuel;

use Helpers\Outil\MenuContextuel;
use Helpers\Trad\ITrad;
use Helpers\Trad\Trad;
use Modules\Fournisseur\Repository\DocAtt;
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  string $id
     * @param  string $cat
     * @param  string $noOrdre
     * @param  string $title
     * @param  int $inutile
     * @param  string $paramOrdre
     * @param  string $type
     * @param  string $alpha3
     * @param  bool $gestionAlg
     * @return array<mixed>
     */
    public function generate(string $id, string $cat, string $noOrdre, string $title, int $inutile, string $paramOrdre, string $type, string $alpha3, bool $gestionAlg): array
    {
        $menuContextuel = [];

        if ($inutile === 0) {
            $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 && (($alpha3 != '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 (($alpha3 != 'ALG' && $gestionAlg && $alpha3 != 'HIVEO' && $alpha3 != 'EAT') || $gestionAlg == false) {
            $menuContextuel['listeSecondaire'][] = [
                'libelle' => $this->trad->t('Créer une nouvelle version'),
                'lien' => '',
                'lienJs' => $this->redirectJSWithPost(
                    $this->router->generateUri(
                        'Fournisseur.DocFournisseur.ajoutDocAtt',
                        ['id' => $id, 'type' => $type]
                    ),
                    (string)json_encode(['titre' => $title])
                ),
            ];
        }

        if ($noOrdre && $inutile == 0 && (($alpha3 != '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 ((new DocAtt($this->pdo))->docAttHistoAll($id, $title)) {
            $menuContextuel['listeSecondaire'][] = [
                'libelle' => $this->trad->t('Voir historique'),
                'lien' => '',
                'lienJs' => "AjaxListeHisto(
                    '" . ($this->router->generateUri('Fournisseur.DocFournisseur.listeHisto', ['id' => $id])) . "', 
                    '" . $title . "'
                );",
            ];
        }

        return $menuContextuel;
    }
}
