<?php

namespace Modules\Consultation\MenuContextuel;

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

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

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

    /**
     * @param array<mixed> $consultation
     * @param array<mixed> $fournisseur
     * @return array<mixed>
     */
    public function generate(string $idAO, $consultation, $fournisseur, bool $canEdit)
    {
        $menuContextuel =[];

        $enCours = ($consultation['DTE_VALID_AO'] != '00000000');

        if ($canEdit) {
            $menuContextuel['listeSecondaire'][] = [
                'lien' => $this->router->generateUri('Consultation.AjoutFournisseur.editFournisseur', ['idAO' => $idAO, 'idFrs' => $fournisseur['CODE_FOU'], 'typeFG' => $fournisseur['TYPE_FG']]),
                'libelle' => $this->trad->t('Modifier les informations fournisseur'),
                'lienJs'  => false,
            ];

            $menuContextuel['listeSecondaire'][] = [
                'lien' => false,
                'libelle' => $this->trad->t('Supprimer'),
                'lienJs'  => $this->popupConfirm(
                    true,
                    $this->router->generateUri('Consultation.AjoutFournisseur.deleteFournisseur', ['idAO' => $idAO, 'idFrs' => $fournisseur['CODE_FOU'], 'typeFG' => $fournisseur['TYPE_FG']]),
                    $this->trad->t('Etes-vous sûr de vouloir supprimer le fournisseur').' '.$fournisseur['RS'].' ?',
                    false,
                    'refreshFrs',
                    '',
                    false,
                    'filtre_Consultation'
                ),
            ];
        }

        if (Sql::boolSql($consultation['ACC_CONF']) && Sql::boolSql($fournisseur['ACC_CONF_VALID']) == false && $enCours) {
            if ($fournisseur['FIC_ACC_CONF_SIGNE'] == '') {
                $menuContextuel['listeSecondaire'][] = [
                    'lien' => false,
                    'libelle' => $this->trad->t('Ajouter un accord de confidentialité'),
                    'lienJs'  => $this->ajaxPopupV2(
                        $this->router->generateUri('Consultation.AjoutFournisseur.popupCreateEditAccord', ['idAO' => $idAO, 'idFrs' => $fournisseur['CODE_FOU'], 'typeFG' => $fournisseur['TYPE_FG'], 'mode' => 'create'])
                    ),
                ];
            } else {
                $menuContextuel['listeSecondaire'][] = [
                    'lien' => false,
                    'libelle' => $this->trad->t('Valider l\'accord de confidentialité'),
                    'lienJs'  => $this->popupConfirm(
                        true,
                        $this->router->generateUri('Consultation.AjoutFournisseur.ajaxValiderAccord', ['idAO' => $idAO, 'idFrs' => $fournisseur['CODE_FOU'], 'typeFG' => $fournisseur['TYPE_FG']]),
                        $this->trad->t('Etes-vous sûr de vouloir valider l\'accord de confidentialité du fournisseur').' '.($fournisseur['TYPE_FG']=='F'? $fournisseur['RS']:$fournisseur['RS_GRP']).' ?',
                        false,
                        'refreshFrs',
                        '',
                        false,
                        'filtre_Consultation'
                    ),
                ];

                $menuContextuel['listeSecondaire'][] = [
                    'lien' => false,
                    'libelle' => $this->trad->t('Refuser l\'accord de confidentialité'),
                    'lienJs'  => $this->ajaxPopupV2(
                        $this->router->generateUri('Consultation.AjoutFournisseur.popupRefuserAccord', ['idAO' => $idAO, 'idFrs' => $fournisseur['CODE_FOU'], 'typeFG' => $fournisseur['TYPE_FG']])
                    ),
                ];

                $menuContextuel['listeSecondaire'][] = [
                    'lien' => false,
                    'libelle' => $this->trad->t('Modifier l\'accord de confidentialité'),
                    'lienJs'  => $this->ajaxPopupV2(
                        $this->router->generateUri('Consultation.AjoutFournisseur.popupCreateEditAccord', ['idAO' => $idAO, 'idFrs' => $fournisseur['CODE_FOU'], 'typeFG' => $fournisseur['TYPE_FG'], 'mode' => 'edit'])
                    ),
                ];

                $menuContextuel['listeSecondaire'][] = [
                    'lien' => false,
                    'libelle' => $this->trad->t('Supprimer l\'accord de confidentialité'),
                    'lienJs'  => $this->popupConfirm(
                        true,
                        $this->router->generateUri('Consultation.AjoutFournisseur.ajaxDeleteAccord', ['idAO' => $idAO, 'idFrs' => $fournisseur['CODE_FOU'], 'typeFG' => $fournisseur['TYPE_FG']]),
                        $this->trad->t('Etes-vous sûr de vouloir supprimer l\'accord de confidentialité du fournisseur').' '.($fournisseur['TYPE_FG']=='F'? $fournisseur['RS']:$fournisseur['RS_GRP']).' ?',
                        false,
                        'refreshFrs',
                        '',
                        false,
                        'filtre_Consultation'
                    ),
                ];
            }
        }

        if ($enCours
         && ((sql::boolSql($fournisseur['GEREPORTAIL']) == false || $fournisseur['ctcOxalinkActif'] == 0) or $this->droit['HA_AO_SRF'])
         && ((sql::boolSql($consultation['ACC_CONF']) && sql::boolSql($fournisseur['ACC_CONF_VALID'])) or sql::boolSql($consultation['ACC_CONF']) ==false )) {
            $menuContextuel['listeSecondaire'][] = [
                'lien' => $this->router->generateUri('Consultation.SaisieReponses.createEditEntet', ['idAO' => $idAO, 'idFrs' => $fournisseur['CODE_FOU'], 'typeFG' => $fournisseur['TYPE_FG']]),
                'libelle' => $this->trad->t('Ajouter une réponse'),
                'lienJs'  => false,
            ];
        }


        return $menuContextuel;
    }
}
