src/EventSubscriber/AffiliateRequestSubscriber.php line 28

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use App\Repository\AffiliateRepository;
  4. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  5. use Symfony\Component\Form\FormError;
  6. use Symfony\Component\Form\FormEvent;
  7. use Symfony\Component\Form\FormEvents;
  8. class AffiliateRequestSubscriber implements EventSubscriberInterface
  9. {
  10.   private AffiliateRepository $affiliateRepository;
  11.   public function __construct(AffiliateRepository $affiliateRepository)
  12.   {
  13.     $this->affiliateRepository $affiliateRepository;
  14.   }
  15.   public static function getSubscribedEvents(): array
  16.   {
  17.     return [
  18.       FormEvents::SUBMIT => 'onSubmit',
  19.     ];
  20.   }
  21.   public function onSubmit(FormEvent $event): void
  22.   {
  23.     $form $event->getForm();
  24.     $affiliate $form->get('affiliate')->getData();
  25.     $code $form->get('code')->getData();
  26.     $date $form->get('date')->getData();
  27.     if (empty($affiliate) && empty($code)) {
  28.       $form->get('affiliate')->addError(new FormError('Vous devez choisir un affilié ou remplir le code affilié.'));
  29.       $form->get('code')->addError(new FormError('Vous devez choisir un affilié ou remplir le code affilié.'));
  30.     }
  31.     if (empty($date)) {
  32.       $form->get('date')->addError(new FormError('La date ne doit pas être vide.'));
  33.     }
  34.     if (!empty($code)) {
  35.       $existingAffiliate $this->affiliateRepository->findOneBy(['code' => $code]);
  36.       if (!$existingAffiliate) {
  37.         $form->get('code')->addError(new FormError('Le code fourni ne correspond à aucun affilié.'));
  38.       }
  39.     }
  40.   }
  41. }