<?php
namespace Modules\Fournisseur\Controller;

use Skeleton\Controller\Controller;
use Entity\Model\Fourniss;
use Modules\Fournisseur\Repository\CentreEmetteur;
use Modules\Fournisseur\Repository\ZoneGeo;
use Modules\Fournisseur\Repository\SousFamille;
use Modules\GlobalApplication\Repository\Bdd;
use Modules\Fournisseur\Repository\MotsClefs;
use Modules\Fournisseur\Repository\Attestations;
use Modules\Fournisseur\Repository\AttestationsVisaGlobal;
use Modules\Fournisseur\Repository\Distribuees;
use Modules\Fournisseur\Repository\ConditionGeneral;
use Entity\Model\Hastutil;
use Entity\Model\Paravrac;
use Modules\Fournisseur\Outil\DroitUtilisateur;
use Helpers\Ariane\ArianeSub;
use Modules\Fournisseur\Repository\GestFourniss;
use Modules\GlobalApplication\Repository\Incidents;

class InteractionsController extends Controller
{

    
    public function interactionsAction()
    {
        $id = $this->request->getAttribute('id');
        
        $fournis = new Fourniss($this->pdo);
        $fournis = $fournis->find($id);

        $DroitUtilisateur = new DroitUtilisateur($this->router);
        if (!$DroitUtilisateur->DroitUtilisateur($this->pdo, $fournis) && $DroitUtilisateur->parametrageFournisseurPresent($this->pdo)) {
            $parametrageOnglet = $DroitUtilisateur->parametrageOngletFournisseur($this->pdo);
        }
        
        /* calcule nombre incident */
        $IncidentFournisseur = new Incidents($this->pdo);
        $IncidentFournisseur = $IncidentFournisseur->listeIncident($id, [], 'FOU');
        $nb_incident = count($IncidentFournisseur);
        
        /* calcule nombre attestations */
        $listeAttestations = new Attestations($this->pdo);
        $listeAttestations = $listeAttestations->ListeAttestationFournisseur($id, []);
        $nb_attestations = count($listeAttestations);
        
        /* calcule nombre attestations vg*/
        $listeAttestationVG = new AttestationsVisaGlobal($this->pdo);
        $listeAttestationVG = $listeAttestationVG->ListeAttestationFournisseur($id, []);
        $nb_AttestationVG = count($listeAttestationVG);
        
        /* calcule nombre ac de groupe */
        $accListes = new \Modules\Contrat\Repository\AccordCadre($this->pdo);
        if ($fournis['FOURPRIN']) {
            $listeAcG = $accListes->listeAccordCadre($fournis['FOURPRIN'], [], 'groupement');
            $nb_acG = count($listeAcG);
        }
        
        /* calcule nombre Acc */
        $listeAcc = $accListes->listeAccordCadre('', ['filter_VALIDE' => 'VALIDE', 'filter_TYPE_FG' => 'F', 'filter_CODE_FOUR_fourGroup' => $id, 'mode' => 'fourniss'], 'fournisseur');
        $nb_acc = count($listeAcc);
        
        /* calcule nombre centre emetteur*/
        $param_CE = new Paravrac($this->pdo);
        $param_CE = $param_CE->find(['TYPEPARV' => 'PARAMFOU', 'CODEPARV' => 'CTRLCTRFOURN' ]);
        $param_CE = trim($param_CE['LIB01PARV']);
        
        $centerEmetteur = new CentreEmetteur($this->pdo);
        $centerEmetteur = $centerEmetteur->ListeCentreEmetteur($id);
        $nb_centerEmetteur = count($centerEmetteur);

        /* calcule nombre gamme distribué */
        $listeDistribue = new Distribuees($this->pdo);
        $listeDistribue = $listeDistribue->ListeDistribuees($id, []);
        $nb_Distribue = count($listeDistribue);
        
        /*Calcule interaction géré par le workflow */
        $zoneGeo = new ZoneGeo($this->pdo);
        $listeZoneGeo = $zoneGeo->listeZoneGeo($id, []);
        $nb_zoneGeo = count($listeZoneGeo);
       
        $listeSSFamille = new SousFamille($this->pdo);
        $listeSSFamille = $listeSSFamille->ListeSousFamilleFournisseur($id, []);
        $nb_sousFamille = count($listeSSFamille);
        
        $bdd = new Bdd($this->pdo);
        $listeBdd = $bdd->listeBdd($id, [], false, 'Fournisseur');
        $nb_Bdd = count($listeBdd);
        
        $motClefs =  new MotsClefs($this->pdo);
        $motClefs = $motClefs->listeMotClef($id, []);
        $nb_motClefs = count($motClefs);
        
        /* condition general */
        $user = new Hastutil($this->pdo);
        $user = $user->find($_SESSION['Session_Login']);
        
        $conditionG = new ConditionGeneral($this->pdo);
        $listeCG = $conditionG->listeCG($id, [], $user['UTIMULTI']);
        $nb_CG = count($listeCG);

        /** Société */
        $gestFour = new GestFourniss($this->pdo);
        $societeFrs = $gestFour->listeSocieteFourniss($id);
        $nbSociete = count($societeFrs);
        
        /* trad */
        
        $trad = $this->getTranslationService();
        
        ArianeSub::generate(0, 2, $trad->t('Interactions'), $_SERVER['REQUEST_URI'], 1);

        return $this->renderer->render('@Fournisseur/Interactions/interactions', [
            'menuActive' => 'Fournisseur',
            'menuLeft' => 'GestionFournisseur',
            "code_fournisseur" => $id,
            "libelle_fournisseur" => $fournis["RS"],
            "interactions" => true,
            'nb_incident' => $nb_incident,
            'nb_centerEmetteur' => $nb_centerEmetteur,
            'nb_zoneGeo' => $nb_zoneGeo,
            'nb_sousFamille' => $nb_sousFamille,
            'nb_Bdd' => $nb_Bdd,
            'nb_motClefs' => $nb_motClefs,
            'fournisseur' => $fournis,
            'nb_attestations' => $nb_attestations,
            'nb_attestationVG' => $nb_AttestationVG,
            'nb_acG' => $nb_acG??0,
            'nbSociete' => $nbSociete,
            'nb_acc' => $nb_acc,
            'nb_CG' => $nb_CG,
            'nb_Distribue' => $nb_Distribue,
            'param_CE' => $param_CE,
            'MODULE' => 'Fournisseur',
            
            'parametrageOnglet' => $parametrageOnglet??[],
        ]);
    }
}
