src/EventListener/AmeEventListener.php line 38

Open in your IDE?
  1. <?php
  2. namespace App\EventListener;
  3. use App\Event\ApplicantEvent;
  4. use App\Util\AmeUtil;
  5. use Doctrine\ORM\EntityManagerInterface;
  6. use Flagception\Manager\FeatureManagerInterface;
  7. use Psr\Log\LoggerInterface;
  8. use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
  9. use Symfony\Component\PropertyAccess\PropertyAccess;
  10. class AmeEventListener
  11. {
  12.     private FeatureManagerInterface $featureManager;
  13.     private AmeUtil $ameUtil;
  14.     private EntityManagerInterface $entityManager;
  15.     private LoggerInterface $logger;
  16.     private ParameterBagInterface $parameterBag;
  17.     /**
  18.      * AmeEventListener constructor.
  19.      */
  20.     public function __construct(
  21.         FeatureManagerInterface $featureManager,
  22.         AmeUtil $ameUtil,
  23.         EntityManagerInterface $entityManager,
  24.         LoggerInterface $logger,
  25.         ParameterBagInterface $parameterBag
  26.     ) {
  27.         $this->featureManager $featureManager;
  28.         $this->ameUtil $ameUtil;
  29.         $this->entityManager $entityManager;
  30.         $this->logger $logger;
  31.         $this->parameterBag $parameterBag;
  32.     }
  33.     public function applicantSubmitted(ApplicantEvent $applicantEvent): void
  34.     {
  35.         if (!$this->featureManager->isActive(FeatureFlagListener::FEATURE_AME)
  36.             || $data '' === $this->ameUtil->fetchAmeData()
  37.         ) {
  38.             return;
  39.         }
  40.         $applicant $applicantEvent->getApplicant();
  41.         $field $this->parameterBag->get('ame_default_field');
  42.         $currentValue PropertyAccess::createPropertyAccessor()->getValue($applicant$field);
  43.         PropertyAccess::createPropertyAccessor()->setValue($applicant$field$currentValue sprintf('%s, ame_data: %s'$currentValue$data) : $data);
  44.         $this->entityManager->persist($applicant);
  45.         $this->entityManager->flush();
  46.         $this->logger->info("Added AME info of applicant to $field");
  47.     }
  48. }