src/Bundles/PatientBundle/EventListener/PatientSoftDeleteListener.php line 20

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Bundles\PatientBundle\EventListener;
  4. use App\Bundles\PatientBundle\Event\PatientDeleteEvent;
  5. use DateTime;
  6. use Doctrine\ORM\EntityManagerInterface;
  7. use Symfony\Component\EventDispatcher\Attribute\AsEventListener;
  8. #[AsEventListener(eventPatientDeleteEvent::class, method'onDelete')]
  9. class PatientSoftDeleteListener
  10. {
  11.     public function __construct(
  12.         private readonly EntityManagerInterface $entityManager,
  13.     ) {
  14.     }
  15.     public function onDelete(PatientDeleteEvent $event): void
  16.     {
  17.         $patient $event->getPatient();
  18.         if (!$patient->isDeleted()) {
  19.             return;
  20.         }
  21.         foreach ($patient->getDiseaseCases() as $diseaseCase) {
  22.             $diseaseCase->setDeletedAt(new DateTime());
  23.             if ($outbreak $diseaseCase->getOutbreak()) {
  24.                 $outbreak->decreaseTotalCases();
  25.                 $this->entityManager->persist($outbreak);
  26.             }
  27.             $this->entityManager->persist($diseaseCase);
  28.         }
  29.         $this->entityManager->flush();
  30.     }
  31. }