Completed
Pull Request — master (#144)
by
unknown
12:10
created

UserAdmin::configureFormFields()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 14
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 10
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
32
            ->add('facebookId')
33
            ->add('apiKey', 'text', ['attr' => ['readonly' => true]])
34
            ->add('orders')
35
            ->end()
36
        ;
37
    }
38
39
    /**
40
     * {@inheritdoc} annotation.
41
     * @param string $context = 'list'
42
     * @return \Sonata\AdminBundle\Datagrid\ProxyQueryInterface|ProxyQuery
43
     */
44
    public function createQuery($context = 'list')
45
    {
46
        $em = $this->modelManager->getEntityManager('AppBundle:User');
47
        $queryBuilder = $em
48
            ->createQueryBuilder('u')
49
            ->select('u')
50
            ->from('AppBundle:User', 'u')
51
            ->where('u.email IS NOT NULL ')
52
            ->andWhere('u.role = :param')
53
        ->setParameter('param', "ROLE_API");
54
        $query = new ProxyQuery($queryBuilder);
55
56
        return $query;
57
    }
58
59
    /**
60
     * @param \Sonata\AdminBundle\Datagrid\ListMapper $listMapper
61
     */
62
    protected function configureListFields(ListMapper $listMapper)
63
    {
64
        $listMapper
65
            ->add('apiKey')
66
            ->add('email')
67
            ->add('firstName')
68
            ->add('lastName')
69
            ->add('orders')
70
            ->add('_action', 'actions', [
71
                'actions' => [
72
                    'edit' => [],
73
                    'delete' => [],
74
                ],
75
            ])
76
        ;
77
    }
78
79
    /**
80
     * @param \Sonata\AdminBundle\Datagrid\DatagridMapper $datagridMapper
81
     */
82
    protected function configureDatagridFilters(DatagridMapper $datagridMapper)
83
    {
84
        $datagridMapper
85
            ->add('email')
86
        ;
87
    }
88
89
    public function toString($object)
90
    {
91
        return $object instanceof User
92
            ? $object->getEmail()
93
            : 'User'; // shown in the breadcrumb on the create views
94
    }
95
}
96