src/Form/DriveMaster/Scheduling/RouteVehicleSelectionEventSubscriber.php line 20

Open in your IDE?
  1. <?php
  2. namespace App\Form\DriveMaster\Scheduling;
  3. use App\Document\DriveMaster\Vehicle\DMCompanyRouteVehicle;
  4. use Doctrine\Bundle\MongoDBBundle\Form\Type\DocumentType;
  5. use Doctrine\ODM\MongoDB\Repository\DocumentRepository;
  6. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  7. use Symfony\Component\Form\FormEvent;
  8. use Symfony\Component\Form\FormEvents;
  9. class RouteVehicleSelectionEventSubscriber implements EventSubscriberInterface
  10. {
  11.     public static function getSubscribedEvents()
  12.     {
  13.         return [FormEvents::PRE_SET_DATA => 'preSetData'];
  14.     }
  15.     public function preSetData(FormEvent $event): void
  16.     {
  17.         $scheduling $event->getData();
  18.         $form $event->getForm();
  19.         if (!$scheduling || $scheduling->getCompanyRoute() != null) {
  20.             $form->add('companyVehicle'DocumentType::class, array(
  21.                 'label'=>'Company Route',
  22.                 'class'=>DMCompanyRouteVehicle::class,
  23.                 'required'=>false,
  24.                 'multiple'=>false,
  25.                 'placeholder' => '-- Select the vehicle --',
  26.                 'choice_label'=>'name',
  27.                 'query_builder' => function (DocumentRepository $er) use ($scheduling) {
  28.                     $qr $er->createQueryBuilder('t');
  29.                     return $qr->field('isActive')->equals(true)->field('companyRouteUuid')
  30.                         ->equals($scheduling->getCompanyRoute()->getuuid())->select('t.companyVehicle');
  31.                 }
  32.             ));
  33.         }
  34.     }
  35. }