src/EventSubscriber/ComidaPerfilSubcriber.php line 40

Open in your IDE?
  1. <?php 
  2. # src/EventSubscriber/EasyAdminSubscriber.php
  3. namespace App\EventSubscriber;
  4. use App\Entity\BlogPost;
  5. use App\Entity\Comida;
  6. use App\Entity\ComidaIngredientesReceta;
  7. use App\Entity\PerfilAlimentacion;
  8. use Doctrine\ORM\EntityManager;
  9. use Doctrine\ORM\EntityManagerInterface;
  10. use EasyCorp\Bundle\EasyAdminBundle\Event\AfterEntityUpdatedEvent;
  11. use EasyCorp\Bundle\EasyAdminBundle\Event\BeforeEntityPersistedEvent;
  12. use EasyCorp\Bundle\EasyAdminBundle\Event\BeforeEntityUpdatedEvent;
  13. use Psr\Log\LoggerInterface;
  14. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  15. class ComidaPerfilSubcriber implements EventSubscriberInterface
  16. {
  17.     private $em;
  18.     private $logger;
  19.     public function __construct(EntityManagerInterface $emLoggerInterface $logger)
  20.     {
  21.         $this->em $em;
  22.         $this->logger $logger;
  23.     }
  24.     public static function getSubscribedEvents()
  25.     {
  26.         return [
  27.             AfterEntityUpdatedEvent::class => ['perfilAlimentacionUpdate'],
  28.         ];
  29.     }
  30.     /**
  31.      * Fix para eliminar las entidades relacionadas con la comida que se duplican al utilizar el formulario de comida
  32.      */
  33.     public function perfilAlimentacionUpdate(AfterEntityUpdatedEvent $event)
  34.     {
  35.         $entity $event->getEntityInstance();
  36.         if (!($entity instanceof Comida)) {
  37.             return;
  38.         }
  39.         $this->logger->info("BeforeEntityUpdatedEvent perfilAlimentacionUpdate");
  40.         $perfiles $this->em->getRepository(PerfilAlimentacion::class)->findBy(["tipo" => 2]);
  41.         $this->logger->info("Perfiles: " count($perfiles));
  42.         foreach ($perfiles as $key => $perfil) {
  43.             if(!($perfil->getComida())){
  44.                 $this->logger->info("Borrando perfil huerfano");
  45.                 $this->em->remove($perfil);
  46.                 
  47.             }
  48.         }
  49.         $perfiles $this->em->getRepository(ComidaIngredientesReceta::class)->findBy(["comida" => null]);
  50.         $this->logger->info("ComidaIngredientes: " count($perfiles));
  51.         foreach ($perfiles as $key => $perfil) {
  52.             if(!($perfil->getComida())){
  53.                 $this->logger->info("Borrando ComidaIngredientes huerfano");
  54.                 $this->em->remove($perfil);
  55.                 
  56.             }
  57.         }
  58.         $this->em->flush();
  59.     }
  60. }