<?php
namespace AdminBundle\Admin\ModelRange\Pages;
use AdminBundle\Admin\BaseAdmin;
use CoreBundle\Entity\Vehicles\CharacteristicValue;
use CoreBundle\Entity\Vehicles\RecommendGroup;
use CoreBundle\Entity\Vehicles\Vehicle;
use FOS\CKEditorBundle\Form\Type\CKEditorType;
use Sonata\AdminBundle\Datagrid\DatagridMapper;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\Datagrid\ProxyQueryInterface;
use Sonata\AdminBundle\Form\FormMapper;
use Sonata\AdminBundle\Route\RouteCollectionInterface;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
class PagesAdmin extends BaseAdmin
{
protected $baseRouteName = 'page';
protected $baseRoutePattern = 'dcsite/model-range/pages';
/**
* @param RouteCollectionInterface $collection
*/
protected function configureRoutes(RouteCollectionInterface $collection): void
{
$collection->remove('delete');
$collection->add('import');
}
/**
* @param array $buttonList
* @param string $action
* @param null $object
* @return array
*/
public function configureActionButtons(array $buttonList, $action, $object = null): array
{
$list = parent::configureActionButtons($buttonList, $action, $object);
$list['import']['template'] = '@AdminBundle/admin/import_dashboard_button.html.twig';
return $list;
}
public function prePersist($object): void
{
$object->setDealer($this->getUserDealer());
}
public function preUpdate($object): void
{
$object->setDealer($this->getUserDealer());
}
public function configureQuery($context = 'list'): ProxyQueryInterface
{
$query = parent::configureQuery();
$query->andWhere($query->expr()->eq($query->getRootAliases()[0].'.dealer', ':dealer'));
$query->setParameter('dealer', $this->getUserDealer()->getId());
return $query;
}
protected function configureDatagridFilters(DatagridMapper $datagridMapper): void
{
$datagridMapper->add('id');
$datagridMapper->add('label_ua');
}
protected function configureListFields(ListMapper $list): void
{
$list->addIdentifier('id')
->add('label_ua', null, ['label' => 'Назва'])
->add('url', null, ['label' => 'Посилання'])
->add('active', null, ['label' => 'Активний'])
->add('_action', 'actions', [
'label' => 'Действия',
'actions' => [
'view' => [],
'edit' => [],
'delete' => [],
]
]);
}
protected function configureFormFields(FormMapper $form): void
{
$vehicles = $this->getEntityManager()->getRepository(Vehicle::class)
->createQueryBuilder('v');
if ($this->getUserDealer()->getId() != 6) {
$vehicles->where('v.dealer = :dealer')->setParameter('dealer', $this->getUserDealer());
}
if ($this->getUserDealer()->getId() == 6) {
$vehicles->andWhere('v.is_used = 1');
} else {
$vehicles->andWhere('v.is_used = 0');
}
$vehicles->andWhere('v.is_delete = 0')
->andWhere('v.state = 1');
$fuel = $this->getModelManager()
->getEntityManager(CharacteristicValue::class)
->createQueryBuilder()
->select('cv')
->from(CharacteristicValue::class,'cv')
->where('cv.characteristic = 2');
$kpp = $this->getModelManager()
->getEntityManager(CharacteristicValue::class)
->createQueryBuilder()
->select('cv')
->from(CharacteristicValue::class, 'cv')
->where('cv.characteristic = 4');
$seat = $this->getModelManager()
->getEntityManager(CharacteristicValue::class)
->createQueryBuilder()
->select('cv')
->from(CharacteristicValue::class, 'cv')
->where('cv.characteristic = 20');
$body = $this->getModelManager()
->getEntityManager(CharacteristicValue::class)
->createQueryBuilder()
->select('cv')
->from(CharacteristicValue::class, 'cv')
->where('cv.characteristic = 1');
$color = $this->getModelManager()
->getEntityManager(CharacteristicValue::class)
->createQueryBuilder()
->select('cv')
->from(CharacteristicValue::class, 'cv')
->where('cv.characteristic = 236');
$recommend = $this->getModelManager()
->getEntityManager(RecommendGroup::class)
->createQueryBuilder()
->select('r')
->from(RecommendGroup::class, 'r')
->where('r.state = 1')
->andWhere('r.state_slider = 1');
$form->with('UA', ['class' => 'col-md-6'])
->add('label_ua', null, ['label' => 'Назва', 'required' => true])
->add('title_ua', null, ['label' => 'Заголовок', 'required' => true])
->add('description_ua', CKEditorType::class, ['label' => 'Опис', 'required' => false])
->add('title_seo_ua', null, ['label' => 'SEO Title', 'required' => true])
->add('description_seo_ua', TextareaType::class, ['label' => 'SEO Description', 'required' => true])
->end()
->end();
$form->with('RU', ['class' => 'col-md-6'])
->add('label_ru', null, ['label' => 'Назва', 'required' => true])
->add('title_ru', null, ['label' => 'Заголовок', 'required' => true])
->add('description_ru', CKEditorType::class, ['label' => 'Опис', 'required' => false])
->add('title_seo_ru', null, ['label' => 'SEO Title', 'required' => true])
->add('description_seo_ru', TextareaType::class, ['label' => 'SEO Description', 'required' => true])
->end()
->end();
$form->with(' ')
->add('vehicles', EntityType::class, ['class' => Vehicle::class, 'label' => 'Автомобили', 'multiple' => true,'required' => false, 'query_builder' => $vehicles], [ 'admin_code' => 'admin.vehicles.passenger_vehicle'])
->add('price', null, ['label' => 'Ціна Usd', 'required' => false])
->add('body', null, ['label' => 'Тип кузова', 'required' => false, 'query_builder' => $body])
->add('fuel', null, ['label' => 'Тип палива', 'required' => false, 'query_builder' => $fuel])
->add('kpp', null, ['label' => 'Тип КПП', 'required' => false, 'query_builder' => $kpp])
->add('seat', null, ['label' => 'Кількість місць', 'required' => false, 'query_builder' => $seat])
->add('color', null, ['label' => 'Колір кузова', 'required' => false, 'query_builder' => $color])
->add('recommend', null, ['label' => 'Підбірка', 'required' => false, 'query_builder' => $recommend])
->add('url', null, ['label' => 'Посилання', 'required' => true])
->add('position', null, ['label' => 'Позиція', 'required' => false])
->add('active', CheckboxType::class, ['label' => 'Активний', 'required' => false, 'value' => true])
->end();
}
}