<?php
namespace Modules\ProjetAchat\Controller;

use Helpers\Ariane\Ariane;
use Skeleton\Controller\Controller;
use Helpers\Trad\Trad;
use Modules\ProjetAchat\Repository\Indicateur;
use Helpers\Outil\Sql;
use Helpers\Highcharts\Highcharts;
use Helpers\Outil\Outils;

class IndicateurProjetAchatController extends Controller
{
    public function indexAction() : string
    {
        $trad = $this->getTranslationService();

        $indicateurRepo = new Indicateur($this->pdo);
        
        /* Requete tuiles */
        $nbProjetInitialise = $indicateurRepo->getNombreProjetInitPrepra()['NB_PROJET']??'0';
        $nbProjetEnCours = $indicateurRepo->getNombreProjetEnCours()['NB_PROJET']??'0';
        
        $nbTachesEnRetard = $indicateurRepo->getNombreTacheEnRetard()['NB_TACHES']??'0';
        $nbTachesEnCours = $indicateurRepo->getNombreTacheEnCours()['NB_TACHES']??'0';
        
        /* Hightchart 1 : Etat du nombre de Projet par Acheteur */
        $projetEnCoursParUtilisateur = $indicateurRepo->getNombreProjetEnCoursParUtilisateur();
        
        $categorieArray = [];
        foreach ($projetEnCoursParUtilisateur as &$ligne) {
            $categorieArray[] = Outils::convertLibelleGlobal($this->pdo, 'HASTUTIL', '', $ligne['PROPRIETAIRE'], true);
            
            $infoByAcheteur = $indicateurRepo->getNombreTachesParStatut($ligne['PROPRIETAIRE']);
            
            $countTask = 0;
            foreach ($infoByAcheteur as $val) {
                if ($val['STATUT'] == 'En retard') {
                    $ligne['NB_EN_RETARD'] = (int) $val['NB_TACHES'];
                }
                
                $countTask += (int) $val['NB_TACHES'];
            }
            
            $ligne['NB_TACHE'] = $countTask;
        }
        
        $array['value']                         = $projetEnCoursParUtilisateur;
        $array['titre']                         = $trad->t('Projet en cours par proprietaire');
        $array['type']                          = 'column';
        $array['categorie']                     = $categorieArray;
        $array['detailColone']['NB_PROJET']     = ['nom' => $trad->t('Nombre de projets en cours'), 'axeLier' => 'gauche'];
        $array['detailColone']['NB_TACHE']      = ['nom' => $trad->t('Nombre de tâches'), 'axeLier' => 'droit'];
        $array['detailColone']['NB_EN_RETARD']  = ['nom' => $trad->t('Nombre de tâches en retard'), 'axeLier' => 'droit'];
        $array['legendGraph'][]                 = ['texte' => $trad->t("Nbre de projets"), 'format' => '', 'axe' => 'gauche'];
        
        $array['legendGraph'][]                = ['texte' => $trad->t('Nbre de tâches'), 'format' => '', 'axe' => 'droit'];
        $array['legendGraph'][]                = ['texte' => $trad->t('Nbre de tâches en retard'), 'format' => '', 'axe' => 'droit'];
        
        $highcharts = Highcharts::generate($array, $this->pdo, $trad);
        
        /* Hightchart 2: Statuts des tâches */
        $tacheParStatut = $indicateurRepo->getNombreTachesParStatut();
        
        $categorieArray = [];
        foreach ($tacheParStatut as &$ligne) {
            $categorieArray[] = ['libelle' => $trad->t($ligne['STATUT']), 'value' => $ligne['NB_TACHES'], 'color' => $ligne['COULEUR']];
        }
        
        $array2['value'] = $categorieArray;
        $array2['detailDonut'] = ['nom' => $trad->t('Statut'),'innerSize' => '160', 'tooltip' => ''];
        $array2['titre'] = $trad->t('Statuts des tâches');
        $array2['subTitle'] = null;
        $array2['legend'] = true;
        $array2['type'] = 'pie';
        
        $highcharts2 = Highcharts::generate($array2, $this->pdo, $trad);

        Ariane::generate(0, 'indicateur');
        
        return $this->renderer->render('@projetAchat/Indicateur/index', [
            'menuActive'            => 'ProjetAchat',
            'nbProjetInitialise'    => $nbProjetInitialise,
            'nbProjetEnCours'       => $nbProjetEnCours,
            'nbTachesEnRetard'      => $nbTachesEnRetard,
            'nbTachesEnCours'       => $nbTachesEnCours,
            'initialiseActif'       => Sql::paravrac($this->pdo, 'PARAMGEN', 'DOA_STATUT_INIT_ACTIF')=='O',
            'dataHighchart1'        => $highcharts,
            'dataHighchart2'        => $highcharts2,
        ]);
    }
}
