<?php

namespace Modules\Evaluation\Rules;

use Helpers\Outil\Roles;
use Helpers\Outil\Sql;
use Modules\GlobalApplication\Repository\LicenceOxalys;
use Psr\Http\Message\ServerRequestInterface;

class Main
{
    protected ServerRequestInterface $request;
    protected \PDO $pdo;
    /**
     * @var array<mixed>
     */
    protected array $droits;

    /**
     * __construct
     *
     * @param  ServerRequestInterface $request
     * @return void
     */
    public function __construct(ServerRequestInterface  $request, \PDO $pdo)
    {
        $this->request  = $request;
        $this->pdo      = $pdo;
        $droits = [
            'HA_MQUESCM' => Roles::droitsUtilisateur($this->pdo, 'HA_MQUESCM', $_SESSION["Session_Login"]), // Droit de création et modification des modèles et les catégories de modèles
            'HA_CEVAVIS' => Roles::droitsUtilisateur($this->pdo, 'HA_CEVAVIS', $_SESSION["Session_Login"]), // Droit de visu des campagnes
            'HA_CEVALCM' => Roles::droitsUtilisateur($this->pdo, 'HA_CEVALCM', $_SESSION["Session_Login"]), // Droit de création et modification des campagnes
            'HA_CEVASUP' => Roles::droitsUtilisateur($this->pdo, 'HA_CEVASUP', $_SESSION["Session_Login"]), // Droit de suppression des campagnes d'évaluation
            'HA_BIBQTCM' => Roles::droitsUtilisateur($this->pdo, 'HA_BIBQTCM', $_SESSION["Session_Login"]), // Droit de création et modification de questionnaire
        ];

        $this->droits = $droits;
    }

    /**
     * init
     *
     * @return bool
     */
    public function init(): bool
    {
        return true;
    }

    public function licenceActive() : bool
    {
        if (!(new LicenceOxalys($this->pdo))->evalFournActive()
            && !Roles::GetALL()
        ) {
            return false;
        }

        return true;
    }

    public function modelCreatEditAccess(): bool
    {
        if (($this->droits['HA_MQUESCM'] && $this->licenceActive()) || Roles::GetALL()) {
            return true;
        } else {
            return false;
        }
    }

    public function campaignCreatEditAccess(): bool
    {
        if (($this->droits['HA_CEVALCM'] && $this->licenceActive() ) || Roles::GetALL()) {
            return true;
        } else {
            return false;
        }
    }

    public function campaignDeleteAccess(): bool
    {
        if (($this->droits['HA_CEVASUP'] && $this->licenceActive()) || Roles::GetALL()) {
            return true;
        } else {
            return false;
        }
    }

    // ATTENTION LES QUESTIONNAIRES SONT UTILISER DEPUIS LES CONSULTATIONS !
    public function questionnaireCreatEditAccess(): bool
    {
        if ($this->droits['HA_BIBQTCM'] || Roles::GetALL()) {
            return true;
        } else {
            return false;
        }
    }
}
