src/Bundles/DiseaseCaseBundle/EventListener/DiseaseCaseCreatedEventListener.php line 25

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Bundles\DiseaseCaseBundle\EventListener;
  4. use App\Bundles\DiagnosisBundle\Service\Field\FieldProvider;
  5. use App\Bundles\DiseaseCaseBundle\Event\DiseaseCaseCreatedEvent;
  6. use App\Bundles\DiseaseCaseBundle\Service\DiseaseCaseFieldValueCreator;
  7. use Doctrine\ORM\EntityManagerInterface;
  8. use Symfony\Component\EventDispatcher\Attribute\AsEventListener;
  9. #[AsEventListener(eventDiseaseCaseCreatedEvent::class, method'onDiseaseCaseCreated')]
  10. class DiseaseCaseCreatedEventListener
  11. {
  12.     public function __construct(
  13.         private readonly DiseaseCaseFieldValueCreator $diseaseCaseFieldValueCreator,
  14.         private readonly EntityManagerInterface $entityManager,
  15.         private readonly FieldProvider $fieldProvider,
  16.     ) {
  17.     }
  18.     public function onDiseaseCaseCreated(DiseaseCaseCreatedEvent $event): void
  19.     {
  20.         $diseaseCase $event->getDiseaseCase();
  21.         $classification $event->getClassification();
  22.         $diagnosis $diseaseCase->getDiagnosis();
  23.         $classificationCatalog $classification->getCatalog();
  24.         $field $this->fieldProvider->provide(catalog$classificationCatalogdiagnosis$diagnosis);
  25.         if (is_null($field)) {
  26.             return;
  27.         }
  28.         $fieldValue $this->diseaseCaseFieldValueCreator->create($diseaseCase$field$classification);
  29.         $this->entityManager->persist($fieldValue);
  30.         $this->entityManager->flush();
  31.     }
  32. }