<?php

namespace Modules\Additional\Specifique\Client92\Modules\Controller;

use Skeleton\Controller\Controller;
use Psr\Container\ContainerInterface;
use Helpers\Trad\Trad;
use TwigExtension\OutilExtension;
use Skeleton\Router;

class SpecNAOSController extends Controller
{

    /**
     * @param string $value             value to use
     * @param string $crif_rate         calculated CRIF rate
     */
    public function calculateCRIFRate($value)
    {
        $crif_rate = (float)$value / 1000;

        return number_format($crif_rate, 2, '.', '');
    }

    /**
     * *** Indicator for "Ratio de liquidité"
     * @param int $value                value to compare with
     * @param string $indicator         class to display
     */
    public function indicatorForRL($value)
    {
        $indicator                          = '';
        if ($value < 1) {
            $indicator                      = 'img_color_tb_r';
        } elseif ($value > 1) {
            $indicator                      = 'img_color_tb_v';
        }
        
        return $indicator;
    }

    /**
     * *** Indicator for "Taux de Profitabilité"
     * @param int $value                value to compare with
     * @param string $indicator         class to display
     */
    public function indicatorForTP($value)
    {
        $indicator                          = '';

        if ($value > 8) {
            $indicator                      = 'img_color_tb_v';
        } elseif ($value > 3 && $value < 8) {
            $indicator                      = 'img_color_tb_o';
        } elseif ($value < 3) {
            $indicator                      = 'img_color_tb_r';
        }

        return $indicator;
    }

    /**
     * *** Indicator for "Taux d'Endettement"
     * @param int $value                value to compare with
     * @param string $indicator         class to display
     */
    public function indicatorForTE($value)
    {
        $indicator                          = '';

        if ($value < 33) {
            $indicator                      = 'img_color_tb_v';
        } elseif ($value > 33 && $value < 50) {
            $indicator                      = 'img_color_tb_o';
        } elseif ($value > 50) {
            $indicator                      = 'img_color_tb_r';
        }

        return $indicator;
    }

    /**
     * *** Indicator for "Taux de Solvabilité"
     * @param int $value                value to compare with
     * @param string $indicator         class to display
     */
    public function indicatorForTS($value)
    {
        $indicator                          = '';

        if ($value > 20) {
            $indicator                      = 'img_color_tb_v';
        } elseif ($value < 20) {
            $indicator                      = 'img_color_tb_r';
        }

        return $indicator;
    }

    /**
     * *** Indicator for "Fond de Roulement" + "BFR"
     * @param int $value                value to compare with
     * @param string $indicator         class to display
     */
    public function indicatorForFRAndBFR($value)
    {
        $indicator                          = '';

        if ($value < 0) {
            $indicator                      = 'img_color_tb_r';
        } elseif ($value > 0) {
            $indicator                      = 'img_color_tb_v';
        }

        return $indicator;
    }

    /**
     * *** Indicator for "Stabilité Financière"
     * @param int $value                value to compare with
     * @param string $indicator         class to display
     */
    public function indicatorForSTF($value)
    {
        $indicator                          = '';

        if ($value < 500) {
            $indicator                      = 'Très élevé';
        } elseif ($value > 500 && $value < 650) {
            $indicator                      = 'Élevé';
        } elseif ($value > 650) {
            $indicator                      = 'Faible';
        }

        return $indicator;
    }

    /**
     * *** Indicator for "Santé Financière"
     * @param string $value             value to compare with
     * @param string $indicator         class to display
     */
    public function indicatorForSAF($value)
    {
        $indicator                          = '';

        if ($value == 'AAA' || $value == 'AA' || $value == 'A') {
            $indicator                      = 'Healthy companies';
        } elseif ($value == 'BBB' || $value == 'BB') {
            $indicator                      = 'Adequate companies';
        } elseif ($value == 'B' || $value == 'CCC') {
            $indicator                      = 'Vulnerable companies';
        } elseif ($value == 'CC' || $value == 'C' || $value == 'D') {
            $indicator                      = 'Risky companies';
        }

        return $indicator;
    }

    /**
     * *** Indicator for "Risque Commercial"
     * @param int $value                value to compare with
     * @param string $indicator         class to display
     */
    public function indicatorForRCOM($value)
    {
        $indicator                          = '';

        if ($value > 1 && $value < 499) {
            $indicator                      = 'img_color_tb_v';
        } elseif ($value > 500 && $value < 699) {
            $indicator                      = 'img_color_tb_o';
        } elseif ($value > 700 && $value < 1000) {
            $indicator                      = 'img_color_tb_r';
        }

        return $indicator;
    }

    /**
     * *** Indicator for "Risque Environnemental"
     * @param int $value                value to compare with
     * @param string $indicator         class to display
     */
    public function indicatorForRENV($value)
    {
        $indicator                          = '';

        if ($value > 0 && $value < 40) {
            $indicator                      = 'img_color_tb_v';
        } elseif ($value > 40 && $value < 60) {
            $indicator                      = 'img_color_tb_o';
        } elseif ($value > 60 && $value < 100) {
            $indicator                      = 'img_color_tb_r';
        }

        return $indicator;
    }
    
    public function getTooltipText()
    {
        $tooltip_text                       = [];
        
        $tooltip_text['ratio_liq']          = "Une entreprise dont le ratio est inférieur à 1 se trouvera en difficulté si ses  créanciers demandent à être payés sans attendre.";
        $tooltip_text['taux_prof']          = "Permet d'apprécier l'efficacité d'une entreprise dans son activité commerciale.";
        $tooltip_text['coeff_endet']        = "Plus le taux d'endettement est élevé, plus la société est dépendante de ses tiers.";
        $tooltip_text['taux_solv']          = "Un ratio de solvabilité minimum de 20% est généralement demandé par les banques avant d'accepter une demande de prêt.";
        $tooltip_text['bfr']                = "Le BFR est un indicateur permettant de piloter l'état financier d'une entreprise. Si le BFR est positif alors cela signifie que l'entreprise décaisse avant d'encaisser, s'il est négatif, cela veut dire qu'il encaisse avant de décaisser.";
        $tooltip_text['fond_roul']          = "Le fond de roulement correspond à la somme dont dispose l'entreprise pour payer ses fournisseurs, ses employés, et l'ensemble de ses charges de fonctionnement, en attendant ses encaissements clients. Lorsque le fond est négatif, la situation est critique pour l'entreprise car cela veut dire qu'elle n'a pas suffisamment de ressources financières pour supporter la totalité de ses investissements.";
        $tooltip_text['stab_fin']           = "Prédiction de la probabilité de défaillance d'un individu au cours des 12 prochains mois. La note CRIF est un indicateur de la défaillance d'une entreprise à rembourser ses crédits et à pouvoir en souscrire.";
        $tooltip_text['sant_fin']           = "Le score MORE est basé sur un instantané de la santé financière de l'entreprise. Il est indépendant de la structure financière de la dette. Ce score représente la probabilité de défaut (horizon de 18 à 24 mois), le niveau de confiance ainsi que l'estimation du montant de crédit maximum qu'il est possible d'attribuer sur une relation commerciale avec l'entreprise analysée avec une perspective d'un an.";
        $tooltip_text['risq_com']           = "Le score Compass prédit la probabilité qu'un commerçant enfreigne les réglementations sur le traitement des paiements, les lois régionales ou internationales ou commette une fraude.";
        $tooltip_text['risq_env']           = "Le score de risque environnemental est le pourcentage potentiel de chiffre d'affaires à risque si une entreprise devait payer pour les dommages environnementaux résultant de ses activités commerciales.";

        return $tooltip_text;
    }

    /**
     * @param string $title             translated title
     * @param string $text              tooltip text
     */
    public function generateTooltip($title, $text)
    {
        $extensionTool                      = new OutilExtension($this->pdo, $this->contenaire, $this->router);
        $generated_tooltip                  = ' <span class="white-tooltip align-center"> 
                                                    <img src='.$extensionTool->baseUrl('IconeV2/Gestion/info.svg').'>
                                                    <span class="infos_tooltip top naos_specs_tooltip" >
                                                        <span class="tooltip-arrow"></span>
                                                        <span>
                                                            <strong>'. $title .' :</strong>
                                                            '. $text .'
                                                        </span>
                                                    </span>
                                                </span>
                                            ';
        return $generated_tooltip;
    }

    public function getTooltipsForNAOS()
    {
        $extensionTool                      = new OutilExtension($this->pdo, $this->contenaire, $this->router);
        $tooltipTool                        = $this->getTooltipText();

        $trad = $this->getTranslationService();

        $tooltip_ratio_liq                  = $this->generateTooltip($trad->t('Ratio de liquidité'), $tooltipTool['ratio_liq']);
        $tooltip_taux_prof                  = $this->generateTooltip($trad->t('Taux de profitabilité'), $tooltipTool['taux_prof']);
        $tooltip_coeff_end                  = $this->generateTooltip($trad->t('Taux d\'endettement'), $tooltipTool['coeff_endet']);
        $tooltip_taux_solv                  = $this->generateTooltip($trad->t('Taux de solvabilité'), $tooltipTool['taux_solv']);
        $tooltip_bfr                        = $this->generateTooltip($trad->t('BFR'), $tooltipTool['bfr']);
        $tooltip_fond_roul                  = $this->generateTooltip($trad->t('Fond de roulement'), $tooltipTool['fond_roul']);
        $tooltip_stab_fin                   = $this->generateTooltip($trad->t('Stabilité financière'), $tooltipTool['stab_fin']);
        $tooltip_sant_fin                   = $this->generateTooltip($trad->t('Santé financière'), $tooltipTool['sant_fin']);
        $tooltip_risq_com                   = $this->generateTooltip($trad->t('Risque commercial'), $tooltipTool['risq_com']);
        $tooltip_risq_env                   = $this->generateTooltip($trad->t('Risque environnemental'), $tooltipTool['risq_env']);

        $all_tooltips                       = [];
        $all_tooltips['ratio_liquidite']    = $tooltip_ratio_liq;
        $all_tooltips['taux_profitabilite'] = $tooltip_taux_prof;
        $all_tooltips['coeff_endet']        = $tooltip_coeff_end;
        $all_tooltips['taux_solv']          = $tooltip_taux_solv;
        $all_tooltips['bfr']                = $tooltip_bfr;
        $all_tooltips['fond_roul']          = $tooltip_fond_roul;
        $all_tooltips['stab_fin']           = $tooltip_stab_fin;
        $all_tooltips['sant_fin']           = $tooltip_sant_fin;
        $all_tooltips['risq_com']           = $tooltip_risq_com;
        $all_tooltips['risq_env']           = $tooltip_risq_env;

        return $all_tooltips;
    }
}
