src/Event/EasyAdminSubscriber.php line 105

Open in your IDE?
  1. <?php
  2. namespace App\Event;
  3. use App\Entity\Attachment;
  4. use App\Entity\Exercise;
  5. use App\Entity\Result;
  6. use App\Entity\Patient;
  7. use App\Entity\Sequence;
  8. use App\Entity\Test;
  9. use App\Entity\TestRequest;
  10. use App\Entity\CogniFullTest;
  11. use App\Entity\Sample;
  12. use App\Entity\TestResult;
  13. use App\Entity\Upload;
  14. use App\Service\QuestGenerator;
  15. use CMEN\GoogleChartsBundle\GoogleCharts\Charts\ColumnChart;
  16. use CMEN\GoogleChartsBundle\GoogleCharts\Charts\ComboChart;
  17. use CMEN\GoogleChartsBundle\GoogleCharts\Charts\GeoChart;
  18. use CMEN\GoogleChartsBundle\GoogleCharts\Charts\Map;
  19. //use Dmishh\SettingsBundle\Manager\SettingsManager;
  20. use CMEN\GoogleChartsBundle\GoogleCharts\Options\VAxis;
  21. use Doctrine\ORM\EntityManagerInterface;
  22. use EasyCorp\Bundle\EasyAdminBundle\Event\EasyAdminEvents;
  23. //use Knp\Snappy\Pdf;
  24. use Symfony\Bridge\Twig\Mime\TemplatedEmail;
  25. use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
  26. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  27. use Symfony\Component\EventDispatcher\GenericEvent;
  28. use App\Service\MutationDiscovery;
  29. use Symfony\Component\HttpFoundation\Request;
  30. use Symfony\Component\HttpFoundation\RequestStack;
  31. use Symfony\Component\HttpFoundation\Session\Session;
  32. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  33. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  34. use Symfony\Component\Mime\Email;
  35. use Symfony\Component\Mailer\MailerInterface;
  36. use Symfony\Component\String\Slugger\SluggerInterface;
  37. use Symfony\Contracts\Translation\TranslatorInterface;
  38. use Twig\Environment;
  39. use Gedmo\Timestampable\Traits\TimestamableEntity;
  40. class EasyAdminSubscriber implements EventSubscriberInterface {
  41.     private $token_storage;
  42.     private $dna_tools;
  43.     private $entity_manager;
  44.     private $patient_updater;
  45.     private $settings_manager;
  46.     private $translator;
  47.     private $quest_generator;
  48.     public function __construct(SluggerInterface $sluggerQuestGenerator $quest_generatorParameterBagInterface $parameter_bagTranslatorInterface $translatorTokenStorageInterface $token_storageEntityManagerInterface $entity_manager,  RequestStack $requestEnvironment $twigSessionInterface $session) {
  49.         $this->token_storage $token_storage;
  50.         $this->entity_manager $entity_manager;
  51.         $this->request $request;
  52.         $this->twig $twig;
  53.         $this->session $session;
  54.         $this->translator $translator;
  55.         $this->slugger $slugger;
  56.         $this->parameter_bag $parameter_bag;
  57.         $this->quest_generator $quest_generator;
  58.     }
  59.     public static function getSubscribedEvents() {
  60.         return [
  61.                 EasyAdminEvents::PRE_UPDATE => 'onPreUpdate',
  62.                 EasyAdminEvents::PRE_PERSIST => 'onPreUpdate',
  63.                 EasyAdminEvents::POST_SHOW => 'onPostShow',
  64.                 ];
  65.     }
  66.     public function onPreUpdate(GenericEvent $event) {
  67.         $entity $event->getSubject();
  68.         if ($entity instanceof Exercise) {
  69.         }
  70.         if ($entity instanceof Patient) {
  71.         }
  72.     }
  73.     public function onPostShow(GenericEvent $event)
  74.     {
  75.         $entity $event->getSubject();
  76.         if ($entity instanceof Result) {
  77.             $results_array $entity->getValue();
  78.             //$results_evaluated = $this->quest_generator->generateFullResult($results_array);
  79.             //$entity->setResultsEvaluated($results_evaluated);
  80.             //dd($entity);
  81.         }
  82.         if ($entity instanceof Patient) {
  83.             $results $entity->getResults();
  84.             // intermittent claudication chart
  85.             $chart_array[] = ['Date''Claudication Distance''Average Speed'];
  86.             if (count($results) > 0) {
  87.                 foreach ($results as $result) {
  88.                     $intermittentClaudicationDistance $result->getIntermittentClaudicationDistance();
  89.                     $averageSpeed $result->getAverageSpeed();
  90.                     $testDate $result->getCreatedAt()->format('Y-m-d');
  91.                     $chart_array[] = [$testDate, (int)$intermittentClaudicationDistance, (double)$averageSpeed];
  92.                 }
  93.             }
  94.             $chart = new ComboChart();
  95.             $chart->getData()->setArrayToDataTable($chart_array);
  96.             $chart->getOptions()->setTitle('Claudication Distance and average speed');
  97.             $vAxis1 = new VAxis();
  98.             $vAxis1->setTitle('Claudication Distance');
  99.             $vAxis1->setMinValue(0);
  100.             $vAxis2 = new VAxis();
  101.             $vAxis2->setTitle('Average Speed');
  102.             $vAxis2->setMinValue(0);
  103.             $chart->getOptions()->setVAxes([$vAxis1$vAxis2]);
  104.             $chart->getOptions()->getHAxis()->setTitle('Day');
  105.             $series1 = new \CMEN\GoogleChartsBundle\GoogleCharts\Options\ComboChart\Series();
  106.             $series1->setType('bars');
  107.             $series1->setTargetAxisIndex(0);
  108.             $series1->setColor('#6174D1');
  109.             $series2 = new \CMEN\GoogleChartsBundle\GoogleCharts\Options\ComboChart\Series();
  110.             $series2->setType('line');
  111.             $series2->setTargetAxisIndex(1);
  112.             $series2->setColor('#CD3C63');
  113.             $series2->setCurveType('function');
  114.             $chart->getOptions()->setSeries([$series1$series2]);
  115.             $chart->getOptions()->setWidth(1000);
  116.             $chart->getOptions()->setHeight(500);
  117.             $charts['icd_as'] = $chart;
  118.             // Distance chart
  119.             $chart_array1[] = ['Date','Distance'];
  120.             if (count($results) > 0) {
  121.                 foreach ($results as $result) {
  122.                     $Distance $result->getDistance();
  123.                     $testDate $result->getCreatedAt()->format('Y-m-d');
  124.                     $chart_array1[] = [$testDate, (int)$Distance];
  125.                 }
  126.             }
  127.             $chart1 = new ColumnChart();
  128.             $chart1->getData()->setArrayToDataTable($chart_array1);
  129.             $chart1->getOptions()->setTitle('Distance');
  130.             $chart1->getOptions()->getHAxis()->setTitle('Day');
  131.             $series1 = new \CMEN\GoogleChartsBundle\GoogleCharts\Options\ColumnChart\Series();
  132.             $series1->setTargetAxisIndex(0);
  133.             $series1->setColor('#6174D1');
  134.             $chart1->getOptions()->setSeries([$series1]);
  135.             $chart1->getOptions()->setWidth(1000);
  136.             $chart1->getOptions()->setHeight(500);
  137.             $charts['distance'] = $chart1;
  138.             // Average Time to stop
  139.             $chart_array2[] = ['Date','Average time to stop'];
  140.             if (count($results) > 0) {
  141.                 foreach ($results as $result) {
  142.                     $TimeToStopAverage $result->getTimeToStopAverage();
  143.                     $testDate $result->getCreatedAt()->format('Y-m-d');
  144.                     $chart_array2[] = [$testDate, (int)$TimeToStopAverage];
  145.                 }
  146.             }
  147.             $chart2 = new ColumnChart();
  148.             $chart2->getData()->setArrayToDataTable($chart_array2);
  149.             $chart2->getOptions()->setTitle('Average time to stop');
  150.             $chart2->getOptions()->getHAxis()->setTitle('Day');
  151.             $series2 = new \CMEN\GoogleChartsBundle\GoogleCharts\Options\ColumnChart\Series();
  152.             $series2->setTargetAxisIndex(0);
  153.             $series2->setColor('#6174D1');
  154.             $chart2->getOptions()->setSeries([$series2]);
  155.             $chart2->getOptions()->setWidth(1000);
  156.             $chart2->getOptions()->setHeight(500);
  157.             $charts['average_time_to_stop'] = $chart2;
  158.             // Total stop time
  159.             $chart_array3[] = ['Date','Total stop time'];
  160.             if (count($results) > 0) {
  161.                 foreach ($results as $result) {
  162.                     $TotalStopTime $result->getTotalStopTime();
  163.                     $testDate $result->getCreatedAt()->format('Y-m-d');
  164.                     $chart_array3[] = [$testDate, (int)$TotalStopTime];
  165.                 }
  166.             }
  167.             $chart3 = new ColumnChart();
  168.             $chart3->getData()->setArrayToDataTable($chart_array3);
  169.             $chart3->getOptions()->setTitle('Total stop time');
  170.             $chart3->getOptions()->getHAxis()->setTitle('Day');
  171.             $series3 = new \CMEN\GoogleChartsBundle\GoogleCharts\Options\ColumnChart\Series();
  172.             $series3->setTargetAxisIndex(0);
  173.             $series3->setColor('#6174D1');
  174.             $chart3->getOptions()->setSeries([$series3]);
  175.             $chart3->getOptions()->setWidth(1000);
  176.             $chart3->getOptions()->setHeight(500);
  177.             $charts['total_stop_time'] = $chart3;
  178.             $entity->setCharts($charts);
  179.         }
  180.     }
  181. }