src/Form/VehiclesSearchType.php line 81

  1. <?php
  2. namespace App\Form;
  3. use App\Entity\PanelLetters;
  4. use App\Entity\VehicleClients;
  5. use App\Entity\VehicleMakers;
  6. use App\Entity\VehicleModels;
  7. use App\Entity\VehicleRegistrationTypes;
  8. use App\Entity\Vehicles;
  9. use App\Entity\Warehouses;
  10. use App\Service\VehicleHelper;
  11. use Symfony\Bridge\Doctrine\Form\Type\EntityType;
  12. use Symfony\Component\Form\AbstractType;
  13. use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
  14. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  15. use Symfony\Component\Form\Extension\Core\Type\TextType;
  16. use Symfony\Component\Form\FormBuilderInterface;
  17. use Symfony\Component\OptionsResolver\OptionsResolver;
  18. use Symfony\Contracts\Translation\TranslatorInterface;
  19. /**
  20.  * Class VehiclesSearchType
  21.  * @package App\Form
  22.  */
  23. class VehiclesSearchType extends AbstractType
  24. {
  25.     /**
  26.      * @var Translator
  27.      */
  28.     protected $translator;
  29.     /**
  30.      * AuctionVehiclesBiddingType constructor.
  31.      * @param Translator|null $translator
  32.      */
  33.     public function __construct(TranslatorInterface $translatornull)
  34.     {
  35.         $this->translator $translator;
  36.     }
  37.     /**
  38.      * {@inheritdoc}
  39.      */
  40.     public function buildForm(FormBuilderInterface $builder, array $options)
  41.     {
  42.         $locale                 $options['data']['locale'];
  43.         $em                     $options['data']['em'];
  44.         $vehicleHelper   = new VehicleHelper();
  45.         $builder->setMethod('GET')
  46.             ->add('vehicleNumber'TextType::class, [
  47.                 'required'           => false,
  48.                 'label'              => 'Vehicle Number',
  49.                 'translation_domain' => 'vehicles'
  50.             ])
  51.             ->add('panelNumbers'TextType::class, [
  52.                 'required'           => false,
  53.                 'label'              => 'Plate Number',
  54.                 'translation_domain' => 'vehicles',
  55.                 'attr' => [ 'minlength'    => 1,'maxlength'    => 4]
  56.             ])
  57.             ->add('panelLetter1'EntityType::class, array(
  58.                 'required'           => false,
  59.                 'class'        => PanelLetters::class,
  60.                 'choice_label' => function (PanelLetters $panelLetters) {
  61.                     return $panelLetters->getLetterAr() .'-' $panelLetters->getLetterEn();
  62.                 },
  63.                 'placeholder'  => 'Please Select',
  64.                 'attr'  => ['validate-msg' => '']
  65.             ))
  66.             ->add('panelLetter2'EntityType::class, array(
  67.                 'required'           => false,
  68.                 'class'        => PanelLetters::class,
  69.                 'choice_label' => function (PanelLetters $panelLetters) {
  70.                     return $panelLetters->getLetterAr() .'-' $panelLetters->getLetterEn();
  71.                 },
  72.                 'placeholder'  => 'Please Select',
  73.                 'attr'  => ['validate-msg' => '']
  74.             ))
  75.             ->add('panelLetter3'EntityType::class, array(
  76.                 'class'        => PanelLetters::class,
  77.                 'choice_label' => function (PanelLetters $panelLetters) {
  78.                     return $panelLetters->getLetterAr() .'-' $panelLetters->getLetterEn();
  79.                 },
  80.                 'placeholder'  => 'Please Select',
  81.                 'required'     => false,
  82.                 'attr'  => ['validate-msg' => '']
  83.             ))
  84.             ->add('maker'EntityType::class, [
  85.                 'class'              => VehicleMakers::class,
  86.                 'label'              => 'Vehicle Maker',
  87.                 'choice_label'       => 'name'.ucfirst($locale),
  88.                 'placeholder'        => 'Please Select',
  89.                 'mapped'             => false,
  90.                 'required'           => false,
  91.                 'translation_domain' => 'vehicles'
  92.             ])
  93.             ->add('model'EntityType::class, [
  94.                 'required'           => false,
  95.                 'label'              => 'Vehicle Model',
  96.                 'class'              => VehicleModels::class,
  97.                 'choice_label'       => 'name'.ucfirst($locale),
  98.                 'placeholder'        => 'Please Select',
  99.                 'attr'               => ['disabled' => 'disabled'],
  100.                 'translation_domain' => 'vehicles'
  101.             ])
  102.             ->add('beneficiary'TextType::class, [
  103.                 'required'           => false,
  104.                 'label'              => 'Beneficiary',
  105.                 'translation_domain' => 'vehicles',
  106. /*                'placeholder'        => 'Please Select',
  107.                 'class'              => VehicleClients::class,
  108.                 'query_builder'      => function () use($em) {
  109.                     $repository = $em->getRepository(VehicleClients::class);
  110.                     return $repository->getVehicleClientsListQB();
  111.                 },
  112.                 'choice_label' => function (VehicleClients $client) use ($locale) {
  113.                     if ($client->getUser()) {
  114.                         return $client->getUser()->getUserIdentityInfo()->getName($locale);
  115.                     } else {
  116.                         return $client->getCompany()->getCompanyRegistration()->getName($locale);
  117.                     }
  118.                 }*/
  119.             ])
  120.             ->add('registrationType'EntityType::class, [
  121.                 'required'           => false,
  122.                 'label'              => 'Plate Type',
  123.                 'class'              => VehicleRegistrationTypes::class,
  124.                 'choice_label'       => 'name'.ucfirst($locale),
  125.                 'placeholder'        => 'Please Select',
  126.                 'translation_domain' => 'vehicles'
  127.             ])
  128.             ->add('registrationSerialNumber'TextType::class, [
  129.                 'required'           => false,
  130.                 'label'              => 'Sequence Number',
  131.                 'translation_domain' => 'vehicles'
  132.             ])
  133.             ->add('lastStorage'EntityType::class, [
  134.                 'required'           => false,
  135.                 'label'              => 'Last Store Place',
  136.                 'class'              => Warehouses::class,
  137.                 'choice_label'       => 'name',
  138.                 'placeholder'        => 'Please Select',
  139.                 'translation_domain' => 'vehicles'
  140.             ])
  141.             ->add('vinNumber'TextType::class, [
  142.                 'required'           => false,
  143.                 'label'              => 'Vehicle VIN',
  144.                 'translation_domain' => 'vehicles'
  145.             ])
  146.             ->add('beneficiaryVehicleNumber'TextType::class, [
  147.                 'required'           => false,
  148.                 'label'              => 'Beneficiary Vehicle No',
  149.                 'translation_domain' => 'vehicles'
  150.             ])
  151.             ->add('vehicleSaleOfferability'ChoiceType::class, [
  152.                 'required'           => false,
  153.                 'label'              => 'vehicle sale readiness',
  154.                 'translation_domain' => 'vehicles',
  155.                 'choices'            => Vehicles::SALE_OFFERABILITY,
  156.                 'placeholder'        => 'pleaseSelect'
  157.             ])
  158.             ->add('noEstimation'CheckboxType::class, [
  159.                 'required'           => false,
  160.                 'label'              => 'vehicles no estimation',
  161.                 'translation_domain' => 'vehicles'
  162.             ])
  163.             ->add('VehicleLocationState'ChoiceType::class, [
  164.                 'required'           => false,
  165.                 'label'              => 'Vehicle Location State',
  166.                 'translation_domain' => 'vehicles',
  167.                 'choices'            => Vehicles::Vehicle_Location_State,
  168.                 'placeholder'        => 'Please Select'
  169.             ])
  170.             ->add('VehicleSaleState'ChoiceType::class, [
  171.                 'required'           => false,
  172.                 'label'              => 'Vehicle Sale State',
  173.                 'translation_domain' => 'vehicles',
  174.                 'choices'            => Vehicles::Vehicle_Sale_State,
  175.                 'placeholder'        => 'Please Select'
  176.             ])
  177.             ->add('VehicleOTState'ChoiceType::class, [
  178.                 'required'           => false,
  179.                 'label'              => 'Vehicle OT State',
  180.                 'translation_domain' => 'vehicles',
  181.                 'choices'            => Vehicles::Vehicle_OT_State,
  182.                 'placeholder'        => 'Please Select'
  183.             ])
  184.             ->add('VehicleExitState'ChoiceType::class, [
  185.                 'required'           => false,
  186.                 'label'              => 'Vehicle Exit',
  187.                 'translation_domain' => 'vehicles',
  188.                 'choices'            => Vehicles::Vehicle_Exit_State,
  189.                 'placeholder'        => 'Please Select'
  190.             ])
  191.             ->add('manufacturingYear'ChoiceType::class, array(
  192.                 'label'   => 'Made Year',
  193.                 'choices' => $vehicleHelper->getYears(1950),
  194.                 'placeholder'  => 'Please Select',
  195.                 'required'     => false
  196.             ))
  197.         ;
  198.     }
  199.     /**
  200.      * {@inheritdoc}
  201.      */
  202.     public function configureOptions(OptionsResolver $resolver)
  203.     {
  204.         $resolver->setDefaults(array(
  205.             'translation_domain'  => 'vehicles',
  206.             'locale'              => 'en',
  207.             'maker'               => ''
  208.         ));
  209.     }
  210.     /**
  211.      * {@inheritdoc}
  212.      */
  213.     public function getBlockPrefix()
  214.     {
  215.         return 'app_vehiclesSearch';
  216.     }
  217. }