<?php
namespace AdminBundle\Admin\DCAutoSite;
use AdminBundle\Admin\BaseAdmin;
use DcSiteBundle\Model\Generator;
use CoreBundle\Entity\Vehicles\Group;
use FOS\CKEditorBundle\Form\Type\CKEditorType;
use Sonata\AdminBundle\Datagrid\DatagridMapper;
use Sonata\AdminBundle\Form\FormMapper;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\Form\Type\ModelListType;
use Sonata\AdminBundle\Route\RouteCollectionInterface;
use Sonata\MediaBundle\Form\Type\MediaType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
class GeneratorAdmin extends BaseAdmin
{
/**
* @param RouteCollectionInterface $collection
*/
protected function configureRoutes(RouteCollectionInterface $collection): void
{
$collection->remove('view');
$collection->remove('delete');
$collection->add('configurator');
}
/**
* @param ListMapper $listMapper
*/
public function configureListFields(ListMapper $listMapper): void
{
$listMapper
->addIdentifier('title_ru', null, ['label' => 'Назва'])
->add('price', null, ['label' => 'Ціна(грн)'])
->add('dealer', null, ['label' => 'Ділери'])
->add('state', 'choice', ['label' => 'Відображати на сайті', 'editable' => true, 'choices' => [
1 => 'Так',
0 => 'Ні',
null => 'Ніт',
]])
->add('_action', 'actions', [
'label' => 'Дія над елементом',
'actions' => [
'edit' => [],
]
]);
}
/**
* @param $object
*/
public function prePersist($object): void
{
$dealer = $this->security
->getUser()
->getDealer();
$object->setDealer($dealer);
}
/**
* @param FormMapper $formMapper
*/
public function configureFormFields(FormMapper $formMapper): void
{
$formMapper
->tab('Основне')
->with('Москальська', ['class' => 'col-md-6'])
->add('title_ru', null, ['label' => 'Назва RU'])
->add('description_ru', TextareaType::class, ['label' => 'Короткий опис RU', 'required' => false,])
->add('content_ru', CKEditorType::class, ['label' => 'Опис RU', 'required' => false])
->end()
->with('Украинский', ['class' => 'col-md-6'])
->add('title_ua', null, ['label' => 'Назва UA'])
->add('description_ua', TextareaType::class, ['label' => 'Короткий опис UA', 'required' => false,])
->add('content_ua', CKEditorType::class, ['label' => 'Опис UA', 'required' => false])
->end()
->with('Дополнительно', ['class' => 'col-md-6'])
->add('price', null, ['label' => 'Ціна(грн)'])
->add('alt_price', null, ['label' => 'Ціна альтернативная'])
->add('price_eur', null, ['label' => 'Ціна у валюті (EUR)'])
->add('promotional_price_uah', null, ['label' => 'Акційна ціна, грн'])
->add('url', null, ['label' => 'URL','required' => true,])
->add('rate', null, ['label' => 'Рейтинг'])
->add('alt_rate', null, ['label' => 'Рейтинг альтернативний'])
->add('state', ChoiceType::class, ['label' => 'Відображати на сайті', 'choices' => array_flip([
1 => 'Так',
0 => 'Ні',
null => 'Ніт',
])])
->end()
->end()
->tab('Характеристики')
->with('Технічні характеристики', ['class' => 'col-md-6'])
->add('group', EntityType::class, [
'label' => 'Группа',
'required' => true,
'class' => Group::class,
'choice_label' => fn($group) => $group->getInnerName() .
' (' . $group->getTitleByLocale($this->getRequest()->get('locale')) . ')'
])
->add('type', ChoiceType::class, [
'label' => 'Тип',
'choices' => array_flip(Generator::getFuelType()),
'required' => false,
])
->add('engine_type', ChoiceType::class, [
'label' => 'Тип двигуна',
'choices' => array_flip(Generator::getEngineType()),
'required' => false,
])
->add('alternator_type', ChoiceType::class, [
'label' => 'Тип альтернатор генератора(синхронний (щітковий) або асинхронний)',
'choices' => array_flip(Generator::getAlternatorType()),
'required' => false,
])
->add('engine_volume', null, [
'label' => 'Робочий об.єм, куб. см',
'required' => false,
])
->add('engine_power', null, [
'label' => 'Максимальна виходна потужність, кВт',
'required' => false,
])
->add('starter_type', ChoiceType::class, [
'label' => 'Тип стартера',
'choices' => array_flip(Generator::getStarterType()),
'required' => false,
])
->add('frequency', null, [
'label' => 'Частота, Гц',
])
->add('nominal_output_power', null, [
'label' => 'Номинальная вихідна потужність, ВА',
'required' => false,
])
->add('max_output_power', null, [
'label' => 'Максимальная виходна потужність, ВА',
'required' => false,
])
->add('ac_voltage', null, [
'label' => 'Напруга, В',
'required' => false,
])
->add('ac_amperage', null, [
'label' => 'Сила струму, А',
'required' => false,
])
->add('phase', ChoiceType::class, [
'label' => 'Фази',
'choices' => array_flip(Generator::getPhaseCount()),
'required' => false,
])
->add('work_time', null, [
'label' => 'Час роботи без дозаправки, ч',
'required' => false,
])
->end()
->with('Физические характеристики', ['class' => 'col-md-6'])
->add('fuel_tank_capacity', null, [
'label' => 'Об\'єм паливного бака, л',
'required' => false,
])
->add('oil_tank_capacity', null, [
'label' => 'Об\'єм мастила в двигуні, л',
'required' => false,
])
->add('noise_level', null, [
'label' => 'Рівень шуму, дБ',
'required' => false,
])
->add('height', null, [
'label' => 'Висота, см',
'required' => false,
])
->add('width', null, [
'label' => 'Ширина, см',
'required' => false,
])
->add('length', null, [
'label' => 'Довжина, см',
'required' => false,
])
->add('weight', null, [
'label' => 'Вес, кг',
'required' => false,
])
->end()
->end()
->tab('Медиа контент')
->with('Зображення', ['class' => 'col-lg-6'])
->add('image', MediaType::class, [
'label' => 'Основне зображення',
'required' => false,
'provider' => 'sonata.media.provider.image',
'context' => 'dc_site'
])
->add('preview', MediaType::class, [
'label' => 'попередній перегляд',
'provider' => 'sonata.media.provider.image',
'context' => 'dc_site'
])
->end()
->with('Галерея', ['class' => 'col-lg-6'])
->add('gallery', ModelListType::class, [
'label' => 'Галерея зображень',
'btn_list' => false,
'required' => false,
], [
'edit' => 'inline',
'inline' => 'table',
'sortable' => 'position',
'link_parameters' => [
'context' => 'dc_car_gallery',
'provider' => 'sonata.media.provider.image'
],
'admin_code' => 'sonata.media.admin.gallery',
]
)
->add(
'video',
ModelListType::class,
[
'label' => 'Галерея відео',
'btn_list' => false,
'required' => false,
],
[
'edit' => 'inline',
'inline' => 'table',
'sortable' => 'position',
'link_parameters' => [
'context' => 'dc_car_video',
'provider' => 'sonata.media.provider.youtube'
],
'admin_code' => 'sonata.media.admin.gallery',
]
)
->end()
->end()
->tab('SEO')
->with('RU', ['class' => 'col-md-6'])
->add('seo_title_ru')
->add(
'seo_description_ru',
TextareaType::class,
[
'label' => 'Seo-description (RU)',
'required' => false,
'attr' => [
'rows' => 10,
'cols' => 30,
],
]
)
->end()
->with('UA', ['class' => 'col-md-6'])
->add('seo_title_ua')
->add(
'seo_description_ua',
TextareaType::class,
[
'label' => 'Seo-description (UA)',
'required' => false,
'attr' => [
'rows' => 10,
'cols' => 30,
],
]
)
->end()
->end()
;
}
/**
* @param DatagridMapper $datagridMapper
*/
public function configureDatagridFilters(DatagridMapper $datagridMapper): void
{
$datagridMapper
->add('title_ru');
}
}