src/AdminBundle/Admin/Vehicles/Moto/RentVehicleAdmin.php line 15

Open in your IDE?
  1. <?php
  2. namespace AdminBundle\Admin\Vehicles\Moto;
  3. use AdminBundle\Admin\BaseAdmin;
  4. use CoreBundle\Entity\Dealer;
  5. use CoreBundle\Entity\Vehicles\Vehicle;
  6. use Sonata\AdminBundle\Datagrid\ListMapper;
  7. use Sonata\AdminBundle\Form\FormMapper;
  8. use CoreBundle\Model\Vehicles\VehicleType;
  9. use Sonata\AdminBundle\Form\Type\ModelType;
  10. use Symfony\Component\Finder\Exception\AccessDeniedException;
  11. use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
  12. class RentVehicleAdmin extends BaseAdmin
  13. {
  14.     protected $baseRouteName 'rent-vehicle-moto';
  15.     protected $baseRoutePattern 'rent-vehicle-moto-action';
  16.     protected function getVehicleType(): int {
  17.         return VehicleType::MOTO_TYPE;
  18.     }
  19.     protected function getVehicleAdminCode() {
  20.         return 'admin.vehicles.moto_vehicle';
  21.     }
  22.     protected $datagridValues = [
  23.         '_page' => 1,
  24.         '_sort_order' => 'ASC',
  25.         '_sort_by' => 'id',
  26.     ];
  27.     protected function getVehicleDealer(Dealer $Dealer)
  28.     {
  29.         return $this->getModelManager()
  30.             ->getEntityManager(Vehicle::class)
  31.             ->createQueryBuilder('ve')
  32.             ->select('ve')
  33.             ->from('CoreBundle:Vehicles\Vehicle''ve')
  34.             ->where('ve.vehicle_type = :vehicle_type')
  35.             ->andWhere('ve.state = :state')
  36.             ->setParameter('state'true)
  37.             ->setParameter('vehicle_type'$this->getVehicleType());
  38.     }
  39.     public function prePersist($object): void
  40.     {
  41.         $this->updateObject($object);
  42.     }
  43.     public function preUpdate($object): void
  44.     {
  45.         $this->updateObject($object);
  46.         parent::preUpdate($object);
  47.     }
  48.     private function updateObject($object)
  49.     {
  50.         $object->setStateRent((int)$object->getStateRent());
  51.         $object->setStateRide((int)$object->getStateRide());
  52.     }
  53.     protected function configureFormFields(FormMapper $formMapper): void
  54.     {
  55.         $this->checkByRole(['ROLE_SUPER_ADMIN''ROLE_CONTENT_MANAGER''ROLE_DC_MANAGER']);
  56.         $User $this->getUser();
  57.         if (!$Dealer $User->getDealer()) {
  58.             throw new AccessDeniedException('User without dealer');
  59.         }
  60.         $queryBuilderVehicle $this->getVehicleDealer($Dealer);
  61.         $formMapper
  62.             ->with('Основна інформація', ['class' => 'col-lg-6'])
  63.                 ->add('vehicle'ModelType::class, ['label' => 'Модель''required' => true'query' => $queryBuilderVehicle'btn_add' => false], ['admin_code' => 'admin.vehicles.passenger_vehicle'])
  64.                 ->add('price_ride'null, ['label' => 'Цена Райд, грн''required' => false])
  65.                 ->add('state_rent'CheckboxType::class, ['label' => 'Відображати на сайті як оренда''required' => false])
  66.                 ->add('state_ride'CheckboxType::class, ['label' => 'Відображати на сайті як DAY райд''required' => false])
  67. //              ->add('vehicle', ModelType::class, ['label' => 'Модель', 'required' => true, 'query' => $queryBuilderVehicle])
  68.             ->end()
  69.             ->with('Ціни за оренду', ['class' => 'col-lg-6'])
  70.                 ->add('price_rent_one_day'null, ['label' => 'Ціна Оренди за (1 доба), €''required' => false])
  71.                 ->add('price_rent_first_range'null, ['label' => 'Ціна Оренди (2-3 доби), €''required' => false])
  72.                 ->add('price_rent_second_range'null, ['label' => 'Ціна Оренди (4-7 діб), €''required' => false])
  73.                 ->add('price_rent_third_range'null, ['label' => 'Ціна Оренди (8 діб), €''required' => false])
  74.             ->end()
  75.         ->end();
  76.     }
  77.     protected function configureListFields(ListMapper $listMapper): void
  78.     {
  79.         $this->checkByRole(['ROLE_SUPER_ADMIN''ROLE_CONTENT_MANAGER''ROLE_DC_MANAGER']);
  80.         $listMapper->addIdentifier('id')
  81.             ->add('vehicle.model'null, ['label' => 'Модель'])
  82.             ->add('state_rent''choice', ['label' => 'Відображати на сайті як Оренда''editable' => true'choices' => [
  83.                 => 'Да',
  84.                 => 'Нет',
  85.             ]])
  86.             ->add('state_ride''choice', ['label' => 'Відображати на сайті як DAY райд''editable' => true'choices' => [
  87.                 => 'Да',
  88.                 => 'Нет',
  89.             ]])
  90.             ->add('_action''actions', [
  91.                 'label' => 'Дії',
  92.                 'actions' => [
  93.                     'edit' => [],
  94.                     'delete' => [],
  95.                 ]
  96.             ]);
  97.     }
  98. }