Completed
Pull Request — master (#144)
by
unknown
13:51
created

UserAdmin::createQuery()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 14
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 11
c 0
b 0
f 0
nc 1
nop 1
dl 0
loc 14
rs 9.4285
1
<?php
2
3
namespace AppBundle\Admin;
4
5
use AppBundle\Entity\User;
6
use Sonata\AdminBundle\Admin\Admin;
7
use Sonata\AdminBundle\Datagrid\ListMapper;
8
use Sonata\AdminBundle\Datagrid\DatagridMapper;
9
use Sonata\AdminBundle\Form\FormMapper;
10
use Sonata\DoctrineORMAdminBundle\Datagrid\ProxyQuery;
11
12
class UserAdmin extends Admin
13
{
14
    protected $baseRouteName = 'AppBundle\Entity\User';
15
    protected $baseRoutePattern = 'User';
16
    protected $datagridValues = [
17
        '_sort_order' => 'DESC',
18
        '_sort_by' => 'id',
19
    ];
20
21
    /**
22
     * @param \Sonata\AdminBundle\Form\FormMapper $formMapper
23
     */
24
    protected function configureFormFields(FormMapper $formMapper)
25
    {
26
        $formMapper
27
            ->with('User', ['class' => 'col-lg-12'])
28
            ->add('firstName')
29
            ->add('lastName')
30
             ->add('email')
31
            ->add('orders')
32
            ->end()
33
        ;
34
    }
35
36
    /**
37
     * {@inheritdoc} annotation.
38
     *
39
     * @param string $context = 'list'
40
     *
41
     * @return \Sonata\AdminBundle\Datagrid\ProxyQueryInterface|ProxyQuery
42
     */
43
    public function createQuery($context = 'list')
44
    {
45
        $em = $this->modelManager->getEntityManager('AppBundle:User');
46
        $queryBuilder = $em
47
            ->createQueryBuilder('u')
48
            ->select('u')
49
            ->from('AppBundle:User', 'u')
50
            ->where('u.email IS NOT NULL ')
51
            ->andWhere('u.role = :param')
52
        ->setParameter('param', 'ROLE_API');
53
        $query = new ProxyQuery($queryBuilder);
54
55
        return $query;
56
    }
57
58
    /**
59
     * @param \Sonata\AdminBundle\Datagrid\ListMapper $listMapper
60
     */
61
    protected function configureListFields(ListMapper $listMapper)
62
    {
63
        $listMapper
64
            ->add('email')
65
            ->add('firstName')
66
            ->add('lastName')
67
            ->add('orders')
68
            ->add('_action', 'actions', [
69
                'actions' => [
70
                    'edit' => [],
71
                    'delete' => [],
72
                ],
73
            ])
74
        ;
75
    }
76
77
    /**
78
     * @param \Sonata\AdminBundle\Datagrid\DatagridMapper $datagridMapper
79
     */
80
    protected function configureDatagridFilters(DatagridMapper $datagridMapper)
81
    {
82
        $datagridMapper
83
            ->add('email')
84
        ;
85
    }
86
87
    public function toString($object)
88
    {
89
        return $object instanceof User
90
            ? $object->getEmail()
91
            : 'User'; // shown in the breadcrumb on the create views
92
    }
93
}
94