<?php
namespace App\Form\DriveMaster\Scheduling;
use App\Document\DriveMaster\Vehicle\DMCompanyRouteVehicle;
use Doctrine\Bundle\MongoDBBundle\Form\Type\DocumentType;
use Doctrine\ODM\MongoDB\Repository\DocumentRepository;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\Form\FormEvent;
use Symfony\Component\Form\FormEvents;
class RouteVehicleSelectionEventSubscriber implements EventSubscriberInterface
{
public static function getSubscribedEvents()
{
return [FormEvents::PRE_SET_DATA => 'preSetData'];
}
public function preSetData(FormEvent $event): void
{
$scheduling = $event->getData();
$form = $event->getForm();
if (!$scheduling || $scheduling->getCompanyRoute() != null) {
$form->add('companyVehicle', DocumentType::class, array(
'label'=>'Company Route',
'class'=>DMCompanyRouteVehicle::class,
'required'=>false,
'multiple'=>false,
'placeholder' => '-- Select the vehicle --',
'choice_label'=>'name',
'query_builder' => function (DocumentRepository $er) use ($scheduling) {
$qr = $er->createQueryBuilder('t');
return $qr->field('isActive')->equals(true)->field('companyRouteUuid')
->equals($scheduling->getCompanyRoute()->getuuid())->select('t.companyVehicle');
}
));
}
}
}