<?php

namespace Modules\Signature\MenuContextuel;

use Entity\Model\Paravrac;
use Helpers\ChampsSupplementaire\ChampSupp;
use Helpers\Outil\MenuContextuel;
use Helpers\Outil\Roles;
use Helpers\Outil\Sql;
use Helpers\Trad\ITrad;
use Helpers\Trad\Trad;
use Modules\Commande\Rules\GestionCommande;
use Modules\GlobalApplication\Repository\LicenceOxalys;
use Skeleton\Router;

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

    /**
     * @param array<mixed> $droit
     */
    public function __construct(\PDO $pdo, Router $router, ITrad $trad, $droit)
    {
        parent::__construct($pdo, $router, $trad);

        $param = Sql::paravrac($this->pdo, 'OXAPROC', 'SUIVI_BUDGET');
        if ($param) {
            $param = explode('|', $param);
        } else {
            $param = [];
        }
        
        $droit['HA_CA_VIPX'] = Roles::droitsUtilisateur($this->pdo, 'HA_CA_VIPX');
        $droit['HA_CA_IMP'] = Roles::droitsUtilisateur($this->pdo, 'HA_CA_IMP');
        $droit['HA_SE_AJSI'] = Roles::droitsUtilisateur($this->pdo, 'HA_SE_AJSI');
        $droit['HA_SE_CHSI'] = Roles::droitsUtilisateur($this->pdo, 'HA_SE_CHSI');
        $droit['HA_CA_IMIN'] = Roles::droitsUtilisateur($this->pdo, 'HA_CA_IMIN');
        
        $droit['ConsoBudgetSign'] =  $param[1]=='O'? true:false;

        $this->droit = $droit;
    }

    /**
     * @param array<mixed> $obj
     * @param string|null $signataire
     * @return array<mixed>
     */
    public function generate($obj, $signataire = '')
    {
        $menuContextuel = [];

        if ($_SESSION['AuthModifCdeSign']) {
            $menuContextuel['listeSecondaire'][] = [
                'libelle' => $this->trad->t('Modifier & signer'),
                'lien' => $this->router->generateUri('Signature.SignatureCde.editAndSign', ['idDoc' => $obj['NO_CDE'], 'signataire' => $signataire]),
            ];
        }

        if ($this->droit['HA_SE_SATT']) {
            $menuContextuel['listeSecondaire'][] = [
                'libelle' => $this->trad->t('Signataires attendus'),
                'lienJs' => $this->ajaxPopup(
                    $this->router->generateUri('Signature.SignatureCde.signatureAttendu', ['idDoc' => $obj['NO_CDE']]),
                    $this->trad->t('Signataires attendus pour la commande N°').' '.$obj['NO_CDE']
                ),
            ];
        }
        
        
        $menuContextuel['listeSecondaire'][] = [
            'libelle' => $this->trad->t('Refuser'),
            'lien' => false,
            'lienJs' => "popupSign('R', '".$obj['NO_CDE']."');",
        ];
                    
        if ($obj['SIGNAT'] == $_SESSION["Session_Login"]) {
            if ($this->droit['HA_SE_AJSI']) {
                $menuContextuel['listeSecondaire'][] = [
                    'libelle' => $this->trad->t('Ajouter un signataire'),
                    'lien' => false,
                    'lienJs' => $this->ajaxPopup(
                        $this->router->generateUri('Signature.SignatureCde.ajoutSignataire', ['idDoc' => $obj['NO_CDE']]),
                        $this->trad->t('Ajouter signataire commande n°').' '.$obj['NO_CDE']
                    ),
                ];
            }
            
            if ($this->droit['HA_SE_CHSI']) {
                $menuContextuel['listeSecondaire'][] = [
                    'libelle' => $this->trad->t('Changer de signataire'),
                    'lien' => $this->router->generateUri('Signature.SignatureCde.changementSignataire', ['idDoc' => $obj['NO_CDE']]),
                    'lienJs' => false,
                ];
            }
        }

        if ($this->droit['HA_CA_VEV']) {
            $menuContextuel['listeSecondaire'][] = [
                'libelle' => $this->trad->t('Suivi'),
                //'lien' => $this->router->generateUri('Commande.SuiviCommande.suivi', ['idCommande' => $obj['NO_CDE']]),
                'lien' => $this->router->generateUri('Commande.Workflow.summary', ['commandeId' => $obj['NO_CDE']]),
                'lienJs' => false,
            ];

            $menuContextuel['listeSecondaire'][] = [
                'libelle' => $this->trad->t('Commentaires autres signataires'),
                'lien' => $this->router->generateUri('Commande.SuiviCommande.suivi', ['idCommande' => $obj['NO_CDE'], 'MODULE' => 'signataire']),
            ];
        }

        $menuContextuel['listeSecondaire'][] = [
            'libelle' => $this->trad->t('Pièces Jointes'),
            'lien' => $this->router->generateUri('Commande.PieceJointe.index', ['idCommande' => $obj['NO_CDE']]),
        ];

        $menuContextuel['listeSecondaire'][] = [
            'libelle' => $this->trad->t('Documents rattachés'),
            'lien' => $this->router->generateUri('GlobalApplication.DocumentRattaches.document', ['MODULE' => 'Commande', 'id' => $obj['NO_CDE']]),
        ];

        if ($this->droit['ConsoBudgetSign'] && $this->droit['HA_CA_VIPX']) {
            $menuContextuel['listeSecondaire'][] = [
                'libelle' => $this->trad->t('Conso. budget'),
                'lienJs' => $this->ajaxPopupV2(
                    $this->router->generateUri('GlobalApplication.ConsommationBudgetaire.index', ['typeDoc' => 'CDE', 'numDoc' => $obj['NO_CDE']]),
                    'filtre_suivi',
                    $this->trad->t('Consommation budgétaire de la CDE n°') . $obj['NO_CDE'],
                ),
            ];
        }

        if ($this->droit['HA_CA_VIPX'] && ($this->droit['HA_CA_IMP'] || $this->droit['HA_CA_IMIN'])) {
            $menuContextuel['listeSecondaire'][] = [
                'libelle' => $this->trad->t('Document PDF'),
                'lien' => $this->router->generateUri('Commande.GestionCommande.impressionPDF', ['idCommande' => $obj['NO_CDE'], 'mode' => 'chiffree']),
            ];
        }
        

        return $menuContextuel;
    }
}
