src/Form/Subscriber/DealSubscriber.php line 23

  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Form\Subscriber;
  4. use App\Entity\Deal\Deal;
  5. use App\Enum\VisibilityEnum;
  6. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  7. use Symfony\Component\Form\FormEvent;
  8. use Symfony\Component\Form\FormEvents;
  9. class DealSubscriber implements EventSubscriberInterface
  10. {
  11.     /** {@inheritdoc} */
  12.     public static function getSubscribedEvents(): array
  13.     {
  14.         return [
  15.             FormEvents::POST_SUBMIT => 'onPostSubmit',
  16.         ];
  17.     }
  18.     public function onPostSubmit(FormEvent $event): void
  19.     {
  20.         $form = $event->getForm();
  21.         if ($form->isSubmitted() === false || $form->isValid() === false) {
  22.             return;
  23.         }
  24.         /** @var Deal $deal */
  25.         $deal = $event->getData();
  26.         if ($deal->getVisibility() === VisibilityEnum::AllProducts) {
  27.             $deal->setProducts([]);
  28.             $deal->setCollections([]);
  29.         }
  30.         if ($deal->getVisibility() === VisibilityEnum::SpecificCollections) {
  31.             $deal->setProducts([]);
  32.         }
  33.         if ($deal->getVisibility() === VisibilityEnum::SpecificProducts) {
  34.             $deal->setCollections([]);
  35.             $deal->setExcludedProducts([]);
  36.         }
  37.     }
  38. }