src/EventSubscriber/EasyAdminSubscriber.php line 19

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use App\Entity\Card;
  4. use EasyCorp\Bundle\EasyAdminBundle\Event\BeforeEntityPersistedEvent;
  5. use EasyCorp\Bundle\EasyAdminBundle\Event\BeforeEntityUpdatedEvent;
  6. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  7. class EasyAdminSubscriber implements EventSubscriberInterface
  8. {
  9.     public static function getSubscribedEvents()
  10.     {
  11.         return [
  12.             BeforeEntityPersistedEvent::class => ['beforeEntityPersistedEvent'],
  13.             BeforeEntityUpdatedEvent::class => ['beforeEntityUpdatedEvent'],
  14.         ];
  15.     }
  16.     public function beforeEntityPersistedEvent(BeforeEntityPersistedEvent $event)
  17.     {
  18.         $entity $event->getEntityInstance();
  19.         if ($entity instanceof Card) {
  20.             $this->updateEnergyConsumptions($entity);
  21.         }
  22.     }
  23.     public function beforeEntityUpdatedEvent(BeforeEntityUpdatedEvent $event)
  24.     {
  25.         $entity $event->getEntityInstance();
  26.         if ($entity instanceof Card) {
  27.             $this->updateEnergyConsumptions($entity);
  28.         }
  29.     }
  30.     public function updateEnergyConsumptions(Card $entity)
  31.     {
  32.         $query = [];
  33.         try {
  34.             parse_str(parse_url(urldecode($entity->getUrl()), PHP_URL_QUERY), $query);
  35.         } catch (\Exception $e) {
  36.         }
  37.         foreach ($entity->getCardCurrencies() as $cardCurrency) {
  38.             if($cardCurrency->getEnergyConsumption() === null && ($q $cardCurrency->getCurrency()->getExtra('algo'))) {
  39.                 $pKey $q.'_p';
  40.                 if(isset($query['factor'][$pKey])) {
  41.                     $cardCurrency->setEnergyConsumption($query['factor'][$pKey]);
  42.                 }
  43.             }
  44.         }
  45.     }
  46. }