<?php
namespace Modules\Fournisseur\Outil;

use Helpers\Outil\Roles;
use Helpers\Outil\Sql;
use Skeleton\Router;
use Modules\Fournisseur\Repository\GestFourniss;
use Helpers\ChampsSupplementaire\ChampSupp;

class DroitUtilisateur
{
    public $router;
   // use \Skeleton\Controller\Response;
    
    public function __construct(Router $router)
    {
        $this->router= $router;
    }
    
    /**
     * Contrôler l'existence d'un paramètre Fournisseur
     * @param \PDO $pdo
     * @return boolean
     */
    public function parametrageFournisseurPresent($pdo)
    {
        $sql = new GestFourniss($pdo);
        $retour = $sql->parametrageFournisseurActif();
        
        if ($retour) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * fonction générant le tableau des parametrage des onglet fournisseurs
     *
     * @param \pdo $pdo
     * @return boolean[]
     */
    public function parametrageOngletFournisseur($pdo)
    {
        $arrayParam = [];
        $sql = new GestFourniss($pdo);
        $listePARAVRAC = $sql->parametrageOngletFournisseur();
        if ($listePARAVRAC) {
            foreach ($listePARAVRAC as $value) {
                $arrayParam[$value['CODEPARV']] = ($value['LIB01PARV']=='N'? false:true);
            }
        }
        
        if (($listePARAVRAC['CS_NONVISIBLE']??'') == true) {
            if (ChampSupp::CSObligatoirePresent($pdo, 'FOURNISS')) {
                $listePARAVRAC['CS_NONVISIBLE'] = false;
            }
        }
        
        return $arrayParam;
    }
    
    /**
     * Fonction permettant de voir si l'utilisateur a le droit de voir un fournisseur prospect (si celui-ci est prospect) ou reférécé (idem) ou les deux.
     *
     * @param array<mixed>|string $fournis
     * @param  \pdo $pdo
     * @return boolean
     */
    // phpcs:ignore
    public function DroitUtilisateur(\PDO $pdo, $fournis)
    {
        // @phpstan-ignore-next-line
        if (sql::boolSql(($fournis['PROSPECT']??null))) {
            if (!roles::droitsUtilisateur($pdo, 'HA_PRO_VIS')) {
                return false;
            }
        } else {
            if (!roles::droitsUtilisateur($pdo, 'HA_FOU_VIS')) {
                return false;
            }
        }
        
        return true;
    }
    
    /**
     * Comme ::DroitUtilisateur mais pour la modification
     *
     * @param string|int $fournis
     * @return boolean
     */
    // phpcs:ignore
    public function DroitModificationFournisseurOK(\PDO $pdo, $fournis)
    {
        if ($fournis) {
            if (!roles::droitsUtilisateur($pdo, 'HA_PRO_MOD')) {
                return false;
            }
        } else {
            if (!Roles::droitsUtilisateur($pdo, 'HA_FOU_MOD')) {
                return false;
            }
        }

        return true;
    }
}
