<?php
namespace AdminBundle\Admin\SubAutoSite;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\Datagrid\ProxyQueryInterface;
use Sonata\AdminBundle\Form\FormMapper;
use Sonata\AdminBundle\Route\RouteCollectionInterface;
use Symfony\Component\Security\Core\Exception\AccessDeniedException;
class ContactAdmin extends BaseImporterAdmin
{
protected $baseRouteName = 'admin_vendor_adminbundle_importer-contacts';
protected $baseRoutePattern = 'importer/contacts';
/**
* @param RouteCollectionInterface $collection
*/
protected function configureRoutes(RouteCollectionInterface $collection): void
{
$collection->remove('view');
$collection->remove('delete');
$collection->remove('create');
}
public function toString($dealer): string
{
return $dealer->getNameRu() . ' (' . $dealer->getDomain() . ')';
}
/**
* @param FormMapper $formMapper
*/
protected function configureFormFields(FormMapper $formMapper): void
{
$user = $this->security->getUser();
$formMapper
->with('Контакты', ['class' => 'col-lg-6'])
->add('name_ru', null, ['label' => 'Название RU'])
->add('name', null, ['label' => 'Название UA'])
->add('city_ua', null, ['label' => 'В городе UA'])
->add('city_ru', null, ['label' => 'В городе RU']);
if ($user->hasRole('ROLE_SUPER_ADMIN')) {
$formMapper
->add('domain', null, ['label' => 'Домен']);
}
$formMapper
->add('address_ua', null, ['label' => 'Адресс UA'])
->add('address_ru', null, ['label' => 'Адресс RU'])
->add('official_address_ru', null, ['label' => 'Адресс официальный RU'])
->add('official_address_ua', null, ['label' => 'Адресс официальный UA'])
->add('phone', null, ['label' => 'Телефон'])
->add('phone_service', null, ['label' => 'Телефон сервиса'])
->add('email_sale', null, ['label' => 'Email Отдела продаж'])
->add('email_service', null, ['label' => 'Email Отдела Сервиса'])
->add('open_time', null, ['label' => 'Время открытия будни'])
->add('close_time', null, ['label' => 'Время закрытия будни'])
->add('open_time_saturday', null, ['label' => 'Время открытия суббота (пусто если выходной)'])
->add('close_time_saturday', null, ['label' => 'Время закрытия суббота (пусто если выходной)'])
->add('open_time_sunday', null, ['label' => 'Время открытия воскресенье (пусто если выходной)'])
->add('close_time_sunday', null, ['label' => 'Время закрытия воскресенье (пусто если выходной)'])
->add('lng', null, ['label' => 'Долгота'])
->add('lat', null, ['label' => 'Широта'])
->add('link_facebook', null, ['label' => 'Ссылка на facebook'])
->add('link_youtube', null, ['label' => 'Ссылка на youtube'])
->add('link_instagram', null, ['label' => 'Ссылка на instagram'])
->add('gtm_token', null, ['label' => 'Токен для Google Tag Manager'])
->end();
}
/**
* @param string $context
* @return ProxyQueryInterface
*/
public function configureQuery($context = 'list'): ProxyQueryInterface
{
$user = $this->security->getUser();
$query = parent::configureQuery($context);
$dealer = $user->getSubDealer();
if (!$dealer) {
throw new AccessDeniedException();
}
$query->andWhere(
$query->expr()->eq($query->getRootAliases()[0] . '.id', ':id')
);
$query->setParameter('id', $dealer->getId());
return $query;
}
/**
* @param ListMapper $listMapper
*/
protected function configureListFields(ListMapper $listMapper): void
{
$listMapper->addIdentifier('id')
->add('name', null, ['label' => 'Название'])
->add('domain', null, ['label' => 'Домен'])
->add('address_ru', null, ['label' => 'Адрес'])
->add('_action', 'actions', [
'label' => 'Действия',
'actions' => [
'edit' => [],
]
]);
}
}