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 const CLASSIFICATION_NAME 'Класифікація випадку';
  13.     public function __construct(
  14.         private readonly DiseaseCaseFieldValueCreator $diseaseCaseFieldValueCreator,
  15.         private readonly EntityManagerInterface $entityManager,
  16.         private readonly FieldProvider $fieldProvider,
  17.     ) {
  18.     }
  19.     public function onDiseaseCaseCreated(DiseaseCaseCreatedEvent $event): void
  20.     {
  21.         $diseaseCase $event->getDiseaseCase();
  22.         $classification $event->getClassification();
  23.         $diagnosis $diseaseCase->getDiagnosis();
  24.         $classificationCatalog $classification->getCatalog();
  25.         $field $this->fieldProvider->provide(catalog$classificationCatalogdiagnosis$diagnosis);
  26.         if (is_null($field)) {
  27.             return;
  28.         }
  29.         $fieldValue $this->diseaseCaseFieldValueCreator->create($diseaseCase$field$classification);
  30.         $this->entityManager->persist($fieldValue);
  31.         $this->entityManager->flush();
  32.     }
  33. }