Completed
Pull Request — 2.1 (#259)
by Piotr
02:26
created

Person::getId()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
dl 0
loc 4
rs 10
c 1
b 0
f 0
cc 1
eloc 2
nc 1
nop 0
1
<?php
2
3
/**
4
 * (c) FSi sp. z o.o. <[email protected]>
5
 *
6
 * For the full copyright and license information, please view the LICENSE
7
 * file that was distributed with this source code.
8
 */
9
10
namespace FSi\FixturesBundle\Admin;
11
12
use FSi\Bundle\AdminBundle\Doctrine\Admin\CRUDElement;
13
use FSi\Component\DataGrid\DataGridFactoryInterface;
14
use FSi\Component\DataGrid\DataGridInterface;
15
use FSi\Component\DataSource\DataSourceFactoryInterface;
16
use RuntimeException;
17
use Symfony\Component\Form\FormFactoryInterface;
18
19
class Person extends CRUDElement
20
{
21
    public function getId()
22
    {
23
        return 'person';
24
    }
25
26
    public function getClassName()
27
    {
28
        return 'FSi\FixturesBundle\Entity\Person';
29
    }
30
31
    public function createDataGrid()
32
    {
33
        $datagrid = $this->initDataGrid($this->datagridFactory);
34
35
        if (!is_object($datagrid) || !$datagrid instanceof DataGridInterface) {
36
            throw new RuntimeException('initDataGrid should return instanceof FSi\\Component\\DataGrid\\DataGridInterface');
37
        }
38
39
        if (!$datagrid->hasColumnType('batch')) {
40
            $datagrid->addColumn('batch', 'batch', array(
41
                'actions' => array(
42
                    'delete' => array(
43
                        'route_name' => 'fsi_admin_batch',
44
                        'additional_parameters' => array('element' => $this->getId()),
45
                        'label' => 'crud.list.batch.delete'
46
                    )
47
                ),
48
                'display_order' => -1000
49
            ));
50
        }
51
52
        return $datagrid;
53
    }
54
55
    protected function initDataGrid(DataGridFactoryInterface $factory)
56
    {
57
        $datagrid = $factory->createDataGrid($this->getId());
58
59
        $datagrid->addColumn('email', 'text', [
60
            'label' => 'admin.email'
61
        ]);
62
63
        $datagrid->addColumn('actions', 'action', [
64
            'label' => 'admin.news.list.actions',
65
            'field_mapping' => ['id'],
66
            'actions' => [
67
                'edit' => [
68
                    'route_name' => "fsi_admin_crud_edit",
69
                    'additional_parameters' => ['element' => $this->getId()],
70
                    'parameters_field_mapping' => ['id' => 'id']
71
                ]
72
            ]
73
        ]);
74
75
        return $datagrid;
76
    }
77
78
    protected function initDataSource(DataSourceFactoryInterface $factory)
79
    {
80
        return $factory->createDataSource(
81
            'doctrine',
82
            ['entity' => $this->getClassName()],
83
            $this->getId()
84
        );
85
    }
86
87
    protected function initForm(FormFactoryInterface $factory, $data = null)
88
    {
89
        $builder = $factory->createNamedBuilder('person', 'form', $data, [
90
            'data_class' => $this->getClassName()
91
        ]);
92
93
        $builder->add('email', 'text', ['label' => 'admin.email']);
94
95
        return $builder->getForm();
96
    }
97
}
98