<?php

namespace Modules\GlobalApplication\MenuContextuel;

use API\Partenaire\IEntityApprovalCompare;
use API\Partenaire\Service\PartenaireService;
use Helpers\Outil\MenuContextuel;
use Helpers\Outil\Roles;
use Helpers\Outil\Sql;
use Helpers\Trad\ITrad;
use Helpers\Trad\Trad;
use Modules\Fournisseur\Outil\DroitUtilisateur;
use Skeleton\Router;

class WorkflowMenuContextuel extends MenuContextuel
{
    public string $module;

    /**
     * @var array<mixed>
     */
    public $droit;

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

        $DroitUtilisateur = new DroitUtilisateur($this->router);

        $this->trad = $trad;
        $this->module = $module;
        $this->droit = [
            'HA_PRO_VIS'        => roles::droitsUtilisateur($this->pdo, 'HA_PRO_VIS'),
            'HA_FOU_VIS'        => roles::droitsUtilisateur($this->pdo, 'HA_FOU_VIS'),
            'Modif_Prospect'    => $DroitUtilisateur->DroitModificationFournisseurOK($this->pdo, 1),
            'Modif_Refere'      => $DroitUtilisateur->DroitModificationFournisseurOK($this->pdo, 0),
            'HA_SE_AJSI'        => Roles::droitsUtilisateur($this->pdo, 'HA_SE_AJSI'),
            'HA_SE_CHSI'        => Roles::droitsUtilisateur($this->pdo, 'HA_SE_CHSI'),
            'HA_SE_SATT'        => Roles::droitsUtilisateur($this->pdo, 'HA_SE_SATT'),
        ];
    }

    /**
     * @param array<mixed> $infoDemande
     * @param array<mixed> $object
     * @return array<mixed>
     */
    public function generateSuiviEvent($infoDemande, $object)
    {
        $menuContextuel = [];
        
        if (sql::boolSql($object['GERE_HAP']) == false) {
            $menuContextuel['listeSecondaire'][] = [
                'libelle' => $this->trad->t('Modifier'),
                'lien' => '',
                'lienJs' => $this->ajaxPopup(
                    $this->router->generateUri('GlobalApplication.WorkflowEvenement.modificationEventWF', ['type' => $this->module, 'codeDemande' => $infoDemande['CODE_DEMANDE'], 'numOrdre' => $object['NUM_ORD']]),
                    $this->trad->t('Modification d\'un événement'),
                ),
            ];

            $menuContextuel['listeSecondaire'][] = [
                'libelle' => $this->trad->t('Supprimer'),
                'lien' => '',
                'lienJs' => $this->popupConfirm(
                    true,
                    $this->router->generateUri('GlobalApplication.WorkflowEvenement.suppressionEventWF', ['type' => $this->module, 'codeDemande' => $infoDemande['CODE_DEMANDE'], 'numOrdre' => $object['NUM_ORD']]),
                    $this->trad->t('Etes-vous sûr de vouloir supprimer l\'évènement').' '.$object['LIBELLE'].' ?',
                    true,
                    'commandes'
                ),
            ];
        }

        return $menuContextuel;
    }

    /**
     * @param array<mixed> $doc
     * @return array<mixed>
     */
    public function generateSuiviDoc($doc)
    {
        $menuContextuel = [];

        if (!empty($doc['COD_ENR'])) {
            $menuContextuel['listeSecondaire'][] = [
                'libelle'   => $this->trad->t('Ouvrir le document'),
                'lien'      => $this->router->generateUri(
                    'Fournisseur.DocFournisseur.downloadFichier',
                    [
                        'id'    => $doc['COD_ENR'],
                        'ordre' => $doc['NO_ORDRE']
                    ]
                ),
                'lienJs'    => '',
            ];
        }

        $menuContextuel['listeSecondaire'][] = [
            'libelle'   => $this->trad->t('Ouvrir la fiche du document'),
            'lien'      => $this->router->generateUri(
                'GlobalApplication.WorkflowDocument.ficheDocument',
                [
                    'codEnr'    => $doc['COD_ENR'],
                    'noOrdre'   => $doc['NO_ORDRE'],
                ]
            ),
            'lienJs'    => '',
        ];

        if (!empty($doc['COD_ENR'])) {
            $menuContextuel['listeSecondaire'][] = [
                'libelle' => $this->trad->t('Ouvrir la fiche fournisseur'),
                'lien' => $this->router->generateUri(
                    'Fournisseur.Fournisseur.index',
                    [
                        'id' => $doc['COD_ENR']
                    ]
                ),
                'target' => '_blank',
            ];
        }

        return $menuContextuel;
    }
}
