<?php
namespace Modules\API\APIExterne\Controller;

use Skeleton\Controller\Controller;
use Entity\Model\Fourniss;
use Entity\Model\ParamDico;
use API\Hiveo\Hiveo;
use Helpers\Trad\Trad;

    // phpcs:ignore
class HiveoAjaxController extends Controller
{
   
    // phpcs:ignore
    public function PopupRelanceAction() : string
    {
        $codeFrs=$this->request->getAttribute('id');
        $post = $this->request->getParsedBody();
        
        $titre=$post["divCode"];
        $noOrdre=$post["divLibelle"];
        
        return $this->renderer->render('@API/Hiveo/Popup-Document/relance', [
            "code" => $codeFrs,
            "no_ordre" => $noOrdre,
            "titre" => $titre,
        ]);
    }

    public function relanceAction() : string
    {
        $codeFrs=$this->request->getAttribute('id');
        $post = $this->request->getParsedBody();
        $trad = $this->getTranslationService();

        
        $fournis = new Fourniss($this->pdo);
        $fournisseur = $fournis->find($codeFrs);
      
        $Hiveo = new Hiveo($this->pdo);
        $res = $Hiveo->manualReminds($fournisseur['NO_SIRET']);
        
        
        if ($res=="200") {
            $paramdico = new ParamDico($this->pdo);
    
            $value=[
                "TYPEDICO" => 'RELANCE_PARTFOU',
                'ID1' => 'HIVEO',
                "ID3" => $codeFrs,
                "ID2" => $_SESSION['Session_SocUsr'],
                "ID4" =>$post["titre"],
                "ALPHA3" =>$post["message"],
                "ALPHA1" => $_SESSION['Session_Login'],
                "ALPHA2" => 'HIVEO',
                "LIBELLE " => date('Ymd'),
            ];
            $paramdico->insert($value);

            $message = $trad->t('Votre relance a bien été envoyée');
            $docAttRepo = new \Modules\Fournisseur\Repository\DocAtt($this->pdo);

            $docAttRepo->insertHistoRelance($codeFrs, 'HIVEO : '.$post["message"]);
        } else {
            $message = $trad->t('Une erreur vient de se produire lors de la relance HIVEO');
        }

        return $this->renderer->render('@popup-erreur/confirmationGestion', [
            'message' => $message,
            'refresh' => false,
            'div_refresh' => 'documents_rattaches_fournisseur',
        ]);
    }

    
    /**
     * relanceAllAction
     *
     * @param  string $numeroTraitement
     * @return string|false
     */
    public function relanceAllAction(string $numeroTraitement = '')
    {
        
        $token=$this->request->getAttribute('token');
        $post = $this->request->getParsedBody();

        if ($token != '') {
            $numeroTraitement = $post['numeroTraitement'] ?? '';
            $nomFichierRetour = $post['nomFichierRetour'] ?? '';
            $stringHash = $this->JWTKEY;
            $stringHash .= 'RELANCE_HIVEO';
            $stringHash .= str_replace(' ', '', $post['numeroTraitement']?? '');
            $stringHash .= str_replace(' ', '', $post['nomFichierRetour'] ??'');

            if (hash('sha256', $stringHash) != $token) {
                echo 'erreur de token';
                if ($post['nomFichierRetour'] ?? false) {
                    \Modules\Outil\Outil\GestionFile::creationFile("E|erreur de token", $post['nomFichierRetour']);
                }
                return false;
            }
        } else {
            return false;
        }

        $Hiveo = new Hiveo($this->pdo);
        $res = $Hiveo->manualReminds('', true);
        $log = new \Helpers\Log\OxaEventDet($this->pdo, $numeroTraitement);
        
        if ($res=="200") {
            $paramdico = new ParamDico($this->pdo);
    
            $value=[
                "TYPEDICO" => 'RELANCE_PARTFOU',
                'ID1' => 'HIVEO',
                "ID3" => 'ALL FRS',
                "ID2" => 'BATCH',
                "ID4" => 'RELANCE ALL BATCH',
                "ALPHA3" =>'',
                "ALPHA1" => 'BATCH',
                "ALPHA2" => 'HIVEO',
                "LIBELLE " => date('Ymd'),
            ];
            $paramdico->insert($value);
            
            $log->setLog($numeroTraitement, 'O', 'HIVEO : Relance de tous les fournisseurs');
            \Modules\Outil\Outil\GestionFile::creationFile('O'."|OK", $nomFichierRetour);
            return 'O';
        }
            \Modules\Outil\Outil\GestionFile::creationFile('E'."|Problème lors de la relance", $nomFichierRetour);
            return 'E';
    }
}
