<?php

namespace Modules\Consultation\Controller;

use Entity\Model\Periodes;
use Helpers\Ariane\Ariane;
use Helpers\Highcharts\Highcharts;
use Helpers\Trad\Trad;
use Modules\Consultation\Repository\Consultation;
use Skeleton\Controller\Controller;

class IndicateurConsultationController extends Controller
{
    public function indicateurAction() : string
    {
        $post = $post = $this->request->getParsedBody();
        $trad = $this->getTranslationService();

        if (!$post) {
            $post['PERIODE'] = date('Y');
        }

        $consultRepo = new Consultation($this->pdo, true, $post['SOCIETE']??'');
        $consultEncours = $consultRepo->getIndicateurconsultEnCours($post['PERIODE'])['ENCO']??'0';
        // $onsultEnPrpe = $consultRepo->getIndicateurconsultPreparation($post['PERIODE'])['PREP']??'0'; // modif pour composer valid, je laisse l'ancienne version au cas où
        $onsultEnPrpe = $consultRepo->getIndicateurconsultPreparation($post['PERIODE'])['PREP']??'0';

        $TMPParFrs = $consultRepo->getIndicateurfrsParConsult($post['PERIODE']);
        if ($TMPParFrs['CONSULT'] ?? false) {
            $consultParFrs = ($TMPParFrs['COUNT_FOUR']??0) / ($TMPParFrs['CONSULT']);
        } else {
            $consultParFrs = 0;
        }
        $consultReponse = $consultRepo->getIndicateurPourcReponse($post['PERIODE'])['pour_rep']??'0';

        $listeParAch = $consultRepo->getIndicateurConsultParAcheteur($post['PERIODE']);
        $listeParFam = $consultRepo->getIndicateurConsultParFamille($post['PERIODE']);

        foreach ($listeParFam as &$fam) {
            if ($fam['libelle'] == '') {
                $fam['libelle'] = $trad->t('Sans famille');
            }
        }

        $array1['value'] = $listeParAch;
        $array1['titre'] = $trad->t("Nombre de consultations active par acheteur");
        $array1['detailDonut'] = ['nom' => $trad->t('Nombre de consultations'),'innerSize' => '160', 'tooltip' => ''];
        $array1['subTitle'] = ['titre' => ($listeParAch[0]['value']??'')];
        $array1['legend'] = true;
        $array1['type'] = 'pie';

        $highcharts1 = Highcharts::generate($array1, $this->pdo, $trad);

        $array2['value'] = $listeParFam;
        $array2['titre'] = $trad->t("Nombre de consultations active par famille");
        $array2['detailDonut'] = ['nom' => $trad->t('Nombre de consultations'),'innerSize' => '160', 'tooltip' => ''];
        $array2['subTitle'] = ['titre' => ($listeParFam[0]['value']??'')];
        $array2['legend'] = true;
        $array2['type'] = 'pie';

        $highcharts2 = Highcharts::generate($array2, $this->pdo, $trad);

        Ariane::generate(0, $trad->t('Analyse des consultations'));

        $periodesEntity = new Periodes($this->pdo);
        $periodes = $periodesEntity->fetchAll([], ['tri_CODE_PER' => 'desc']);

        return $this->renderer->render('@Consultation/Indicateur/indicateur', [
            'menuActive' => 'Consultations',
            'periodes' => $periodes,
            'post' => $post,
            'consultEncours' => $consultEncours,
            'onsultEnPrpe' => $onsultEnPrpe,
            'consultParFrs' => $consultParFrs,
            // 'consultParFrs' => $consultParFrs??'', // not nullable, composer valid, je laisse l'ancienne version au cas où
            'consultReponse' => $consultReponse,

            // 'consultEncours' => $consultEncours, // pour composer valid
            // 'consultEncours' => $consultEncours,

            'highcharts1' => $highcharts1,
            'highcharts2' => $highcharts2,

        ]);
    }
}
