src/Controller/ResultController.php line 100

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\GlobalAdvice;
  4. use App\Entity\GlobalAdviceEs;
  5. use App\Entity\GlobalAdvicePr;
  6. use App\Entity\SpecificAdvice;
  7. use App\Entity\SpecificAdvicethree;
  8. use App\Entity\SpecificAdvicetwo;
  9. use Doctrine\ORM\EntityManagerInterface;
  10. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  11. use Symfony\Component\HttpFoundation\Request;
  12. use Symfony\Component\HttpFoundation\Response;
  13. use Symfony\Component\Routing\Annotation\Route;
  14. use Symfony\UX\Chartjs\Builder\ChartBuilderInterface;
  15. use Symfony\UX\Chartjs\Model\Chart;
  16. #[Route('/{_locale<%app.supported_locales%>}/results'name'app-results-')]
  17. class ResultController extends AbstractController
  18. {
  19.     private $globalLevel null;
  20.     public function __construct(readonly EntityManagerInterface $entityManager)
  21.     {
  22.     }
  23.     #[Route('/'name'index')]
  24.     public function index(Request $requestChartBuilderInterface $chartBuilder): Response
  25.     {
  26.         $local $request->getLocale(); // get la locale
  27.         $session $request->getSession();
  28.         $selectedPath $session->get('selectedPath');
  29.         //calcul des moyennes de tous les secteurs et renvoi
  30.         $participationData $session->get('participation');
  31.         $responsabilitiesData $session->get('responsabilite');
  32.         $capaciteCritiqueData $session->get('capacitecritique');
  33.         $estimeDeSoiData $session->get('estimedesoi');
  34.         $metaApprentissageData $session->get('metaapprentissage');
  35.         $effectiviteData $session->get('effectivite');
  36.         $autonomieData $session->get('autonomie');
  37.         $identiteCommunautaireData $session->get('identitecommunautaire');
  38.         $teamWorkData $session->get('travaildequipe');
  39.         $specificAdvice = [];
  40.         $adviceRepository null;
  41.         switch ($selectedPath) {
  42.             case 1:
  43.                 $adviceRepository SpecificAdvice::class;
  44.                 break;
  45.             case 2:
  46.                 $adviceRepository SpecificAdvicetwo::class;
  47.                 break;
  48.             case 3:
  49.                 $adviceRepository SpecificAdvicethree::class;
  50.                 break;
  51.         }
  52.         $specificAdvice['participation'] = $this->getLevelSkills($session$adviceRepository$participationData'participationlevel''participationfloat''participation');
  53.         $specificAdvice['responsabilite'] = $this->getLevelSkills($session$adviceRepository$responsabilitiesData'responsabilitelevel''responsabilitefloat''responsabilite');
  54.         $specificAdvice['capacitecritique'] = $this->getLevelSkills($session$adviceRepository$capaciteCritiqueData'capacitecritiquelevel''capacitecritiquefloat''capacitecritique');
  55.         $specificAdvice['metaapprentissage'] = $this->getLevelSkills($session$adviceRepository$metaApprentissageData'metaapprentissagelevel''metaapprentissagefloat''metaapprentissage');
  56.         $specificAdvice['estimedesoi'] = $this->getLevelSkills($session$adviceRepository$estimeDeSoiData'estimedesoilevel''estimedesoifloat''estimedesoi');
  57.         $specificAdvice['effectivite'] = $this->getLevelSkills($session$adviceRepository$effectiviteData'effectivitelevel''effectivitefloat''effectivite');
  58.         $specificAdvice['autonomie'] = $this->getLevelSkills($session$adviceRepository$autonomieData'autonomielevel''autonomiefloat''autonomie');
  59.         $specificAdvice['identitecommunautaire'] = $this->getLevelSkills($session$adviceRepository$identiteCommunautaireData'identitecommunautairelevel''identitecommunautairefloat''identitecommunautaire');
  60.         $specificAdvice['travaildequipe'] = $this->getLevelSkills($session$adviceRepository$teamWorkData'travaildequipelevel''travaildequipefloat''travaildequipe');
  61.         $session->set('global_level'$this->globalLevel);
  62.         switch ($local) {
  63.             case "fr":
  64.                 $globalAdvice $this->entityManager->getRepository(GlobalAdvice::class)->findOneBy(['level' => $this->globalLevel]);
  65.                 break;
  66.             case "es":
  67.                 $globalAdvice $this->entityManager->getRepository(GlobalAdviceEs::class)->findOneBy(['level' => $this->globalLevel]);
  68.                 break;
  69.             case "pt":
  70.                 $globalAdvice $this->entityManager->getRepository(GlobalAdvicePr::class)->findOneBy(['level' => $this->globalLevel]);
  71.                 break;
  72.             default:
  73.                 $globalAdvice null;
  74.                 break;
  75.         }
  76.         return $this->render('results/' $local '/index.html.twig', [
  77.             'countPercent' => 100,
  78.             'countTotal' => 100,
  79.             'skills' => $specificAdvice,
  80.             'globalLevel' => $this->globalLevel,
  81.             'globalAdvice' => $globalAdvice,
  82.             'path'=>$selectedPath
  83.         ]);
  84.     }
  85.     private function getLevelSkills($session$adviceRepository, array $skillsDatastring $skillLevelstring $skillFloatstring $skill)
  86.     {
  87.         $em $this->entityManager;
  88.         $advancedCount 0;
  89.         $inProgressCount 0;
  90.         $initialCount 0;
  91.         $results = [];
  92.         foreach ($skillsData as $value) {
  93.             switch ($value) {
  94.                 case 1:
  95.                     $initialCount++;
  96.                     break;
  97.                 case 2:
  98.                     $inProgressCount++;
  99.                     break;
  100.                 case 3:
  101.                     $advancedCount++;
  102.                     break;
  103.             }
  104.         }
  105.         // traduction du résultat en appréciation moyenne en fonction des réponses
  106.         if (($initialCount $advancedCount && $initialCount $inProgressCount) || ($initialCount == $inProgressCount && $initialCount $advancedCount && $inProgressCount $advancedCount)) {
  107.             $this->globalLevel 'initial';
  108.             $session->set($skillLevel'initial');
  109.             return $results[$skill] = [
  110.                 'specificAdvice' => $em->getRepository($adviceRepository)->findOneBy(['level' => 'initial''dimension' => $skill]),
  111.                 'level' => 'initial',
  112.                 'float' => 1
  113.             ];
  114.         } else if (($advancedCount == $inProgressCount && $advancedCount $initialCount && $inProgressCount $initialCount) || ($initialCount == $advancedCount && $initialCount $inProgressCount && $advancedCount $inProgressCount) || ($inProgressCount $advancedCount && $inProgressCount $initialCount)) {
  115.             $this->globalLevel 'encours';
  116.             $session->set($skillLevel'encours');
  117.             return $results[$skill] = [
  118.                 'specificAdvice' => $em->getRepository($adviceRepository)->findOneBy(['level' => 'encours''dimension' => $skill]),
  119.                 'level' => 'encours',
  120.                 'float' => 2
  121.             ];
  122.         } //        ($advancedCount > $inProgressCount && $advancedCount > $initialCount)
  123.         else {
  124.             $this->globalLevel 'advanced';
  125.             $session->set($skillLevel'advanced');
  126.             return $results[$skill] = [
  127.                 'specificAdvice' => $em->getRepository($adviceRepository)->findOneBy(['level' => 'advanced''dimension' => $skill]),
  128.                 'level' => 'advanced',
  129.                 'float' => 3
  130.             ];
  131.         }
  132.     }
  133. }