src/AdminBundle/Admin/OrderAdmin.php line 18

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