src/AdminBundle/Admin/OrderAdmin.php line 16

Open in your IDE?
  1. <?php
  2. namespace AdminBundle\Admin;
  3. use AcquiringBundle\Component\Model\Order;
  4. use Sonata\AdminBundle\Admin\AbstractAdmin;
  5. use Sonata\AdminBundle\Datagrid\ListMapper;
  6. use Sonata\AdminBundle\Datagrid\DatagridMapper;
  7. use Sonata\AdminBundle\Datagrid\ProxyQueryInterface;
  8. use Sonata\AdminBundle\Route\RouteCollectionInterface;
  9. use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
  10. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  11. use Symfony\Component\Security\Core\Security;
  12. class OrderAdmin extends AbstractAdmin
  13. {
  14.     protected Security $security;
  15.     protected ParameterBagInterface $parameterBag;
  16.     public function setContainerServices(Security $securityParameterBagInterface $parameterBag): void
  17.     {
  18.         $this->security $security;
  19.         $this->parameterBag $parameterBag;
  20.     }
  21.     protected function configureRoutes(RouteCollectionInterface $collection): void
  22.     {
  23.         $collection->remove('create'); // Action gets added automatically
  24.         $collection->remove('view');
  25.         //$collection->remove('edit');
  26.     }
  27.     protected function configureDatagridFilters(DatagridMapper $datagridMapper): void
  28.     {
  29.         $user $this->security->getUser();
  30.         $datagridMapper->add('id')
  31.                         ->add('state',null, ['label' => 'Статус'], ChoiceType::class, [ 'choices' => [
  32.                             'Новый' => Order::STATE_NEW,
  33.                             'Успешно оплачен' => Order::STATE_SUCCESS,
  34.                             'Не успешная оплата' => Order::STATE_FAILED,
  35.                         ]])
  36.             ;
  37.         if($user->hasRole('ROLE_SUPER_ADMIN')) {
  38.             $dcParams $this->parameterBag->get('acquiring');
  39.             $dc = [];
  40.             foreach ($dcParams as $dcCode => $row) {
  41.                 $dc[$row['site']['name']] = $dcCode;
  42.             }
  43.             $datagridMapper->add('dc',null, ['label' => 'ДЦ'], ChoiceType::class, [ 'choices' => $dc]);
  44.         }
  45.     }
  46.     public function configureQuery($context 'list'): ProxyQueryInterface
  47.     {
  48.         $user $this->security->getUser();
  49.         $query parent::configureQuery($context);
  50.         if($user->hasRole('ROLE_SUPER_ADMIN')) {
  51.             return $query;
  52.         }
  53.         $query->andWhere(
  54.             $query->expr()->eq($query->getRootAliases()[0] . '.dc'':dc')
  55.         );
  56.         $query->setParameter('dc'$user->getDc());
  57.         return $query;
  58.     }
  59.     protected function configureListFields(ListMapper $listMapper): void
  60.     {
  61.         $dcParams $this->parameterBag->get('acquiring');
  62.         $dc = [];
  63.         foreach ($dcParams as $dcCode => $row) {
  64.             $dc[$dcCode] = $row['site']['name'];
  65.         }
  66.         $listMapper->addIdentifier('id')
  67.                     ->add('price',null, ['label' => 'Сумма'])
  68.                     ->add('bank_amount',null, ['label' => 'Оплаченная сумма'])
  69.                     ->add('state'ChoiceType::class, ['label' => 'Состояние''choices' => [
  70.                         Order::STATE_NEW => 'Новый',
  71.                         Order::STATE_SUCCESS => 'Успешно оплачен',
  72.                         Order::STATE_FAILED => 'Не успешная оплата',
  73.                     ]])
  74.                     ->add('date_create',null, ['label' => 'Дата создания''format' => 'Y-m-d H:i:s'])
  75.                     ->add('create_in_1c',null, ['label' => 'Дата счета (создания в 1С)''format' => 'Y-m-d H:i:s'])
  76.                     ->add('date_expired',null, ['label' => 'Активен до''format' => 'Y-m-d H:i:s'])
  77.                     ->add('dc'ChoiceType::class, ['label' => 'ДЦ''choices' => $dc])
  78.             ->add('_action''actions', [
  79.                 'actions' => [
  80.                     'show' => [],
  81.                     'edit' => [],
  82.                 ]
  83.             ])
  84.             ;
  85.     }
  86. }