<?php

namespace Modules\Facture\Rules;

use Helpers\Outil\Roles;
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_FA_CMOD'    => Roles::droitsUtilisateur($this->pdo, 'HA_FA_CMOD', $_SESSION["Session_Login"]), // Droit de modification facture
            'HA_FA_VAEC'    => Roles::droitsUtilisateur($this->pdo, 'HA_FA_VAEC', $_SESSION["Session_Login"]), // Droit de modification de date d'échéance
            'HA_FA_VALI'    => Roles::droitsUtilisateur($this->pdo, 'HA_FA_VALI', $_SESSION["Session_Login"]), // Droit de validation facture/avoir
            'HA_FA_LIT'     => Roles::droitsUtilisateur($this->pdo, 'HA_FA_LIT', $_SESSION["Session_Login"]), // Droit de création/suppression de litige sur la facture
            'HA_FA_SUPP'    => Roles::droitsUtilisateur($this->pdo, 'HA_FA_SUPP', $_SESSION["Session_Login"]), // Droit de suppresion facture/avoir
            'HA_FA_SUPC'    => Roles::droitsUtilisateur($this->pdo, 'HA_FA_SUPC', $_SESSION["Session_Login"]), // Droit de suppresion facture/avoir
            'HA_ED_ATT'     => Roles::droitsUtilisateur($this->pdo, 'HA_ED_ATT', $_SESSION["Session_Login"]), // édition d'une attestation d'achat en franchise de TVA NON UTILISÉ pour le moment
            'HA_NOT_NM'     => Roles::droitsUtilisateur($this->pdo, 'HA_NOT_NM', $_SESSION["Session_Login"]), // Activer ou désactiver la notation manuelle depuis une commande NON UTILISÉ pour le moment
            'HA_FA_LIS'     => Roles::droitsUtilisateur($this->pdo, 'HA_FA_LIS', $_SESSION["Session_Login"]), // Droit édition/impression image facture
            'HA_FA_REG'     => Roles::droitsUtilisateur($this->pdo, 'HA_FA_REG', $_SESSION["Session_Login"]), // Droit de règlement de facture
            'HA_FA_VISU'    => Roles::droitsUtilisateur($this->pdo, 'HA_FA_VISU', $_SESSION["Session_Login"]), // Droit de visu facture
            'U8zXaa77yt'    => Roles::droitsUtilisateur($this->pdo, 'U8zXaa77yt', $_SESSION["Session_Login"]), // Droit de visu facture
            'HA_FA_EXPM'    => Roles::droitsUtilisateur($this->pdo, 'HA_FA_EXPM', $_SESSION["Session_Login"]), // Droit export en masse de factures
            'HA_FA_XT'      => Roles::droitsUtilisateur($this->pdo, 'HA_FA_XT', $_SESSION["Session_Login"]), // Droit édition état cca
            'HA_FAC_ARC'    => Roles::droitsUtilisateur($this->pdo, 'HA_FAC_ARC', $_SESSION["Session_Login"]),
            'HA_FA_IMP'     => Roles::droitsUtilisateur($this->pdo, 'HA_FA_IMP', $_SESSION["Session_Login"]),
        ];

        $this->droits = $droits;
    }

    public function init(): bool
    {
        return ($this->droits['HA_FA_VISU'] || $this->droits['U8zXaa77yt']);
    }

    public function invoiceCreatEditAccess(): bool
    {
        return $this->droits['HA_FA_CMOD'];
    }

    public function invoiceValidAccess(): bool
    {
        return $this->droits['HA_FA_VALI'];
    }

    public function changeInvoiceDueDateAccess(): bool
    {
        return $this->droits['HA_FA_VAEC'];
    }

    public function invoiceDisputeAccess(): bool
    {
        return $this->droits['HA_FA_LIT'];
    }

    public function invoiceDeleteAccess(): bool
    {
        return ($this->droits['HA_FA_SUPP'] || $this->droits['HA_FA_SUPC']);
    }

    public function printingEditingInvoiceAccess(): bool
    {
        return $this->droits['HA_FA_LIS'];
    }

    public function invoicePayingAccess(): bool
    {
        return $this->droits['HA_FA_REG'];
    }

    public function bulkExportInvoiceAccess(): bool
    {
        return $this->droits['HA_FA_EXPM'];
    }

    public function deferredChargesAccess(): bool
    {
        return $this->droits['HA_FA_XT'];
    }

    public function invoiceImpressionAccess(): bool
    {
        return $this->droits['HA_FA_IMP'];
    }
    public function invoiceAffichage(): bool
    {
        return $this->droits['HA_FAC_ARC'];
    }
}
