Completed
Pull Request — dev (#9)
by Arnaud
02:46
created

ActionFactory::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 9
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 5
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 9
ccs 5
cts 5
cp 1
rs 9.6666
cc 1
eloc 7
nc 1
nop 3
crap 1
1
<?php
2
3
namespace LAG\AdminBundle\Action\Factory;
4
5
use LAG\AdminBundle\Admin\Action;
6
use LAG\AdminBundle\Admin\AdminInterface;
7
use LAG\AdminBundle\Admin\Factory\FilterFactory;
8
use LAG\AdminBundle\Configuration\Factory\ConfigurationFactory;
9
use LAG\AdminBundle\Field\Factory\FieldFactory;
10
11
class ActionFactory
12
{
13
    /**
14
     * @var FieldFactory
15
     */
16
    protected $fieldFactory;
17
18
    /**
19
     * @var FilterFactory
20
     */
21
    protected $filterFactory;
22
23
    /**
24
     * @var ConfigurationFactory
25
     */
26
    protected $configurationFactory;
27
28
    /**
29
     * ActionFactory constructor.
30
     *
31
     * @param FieldFactory $fieldFactory
32
     * @param FilterFactory $filterFactory
33
     * @param ConfigurationFactory $configurationFactory
34
     */
35 1
    public function __construct(
36
        FieldFactory $fieldFactory,
37
        FilterFactory $filterFactory,
38
        ConfigurationFactory $configurationFactory
39
    ) {
40 1
        $this->fieldFactory = $fieldFactory;
41 1
        $this->filterFactory = $filterFactory;
42 1
        $this->configurationFactory = $configurationFactory;
43 1
    }
44
45
    /**
46
     * Create an Action from configuration values.
47
     *
48
     * @param string $actionName
49
     * @param array $configuration
50
     * @param AdminInterface $admin
51
     *
52
     * @return Action
53
     */
54 1
    public function create($actionName, array $configuration, AdminInterface $admin)
55
    {
56
        // create action configuration object
57 1
        $actionConfiguration = $this
58
            ->configurationFactory
59 1
            ->createActionConfiguration($actionName, $admin, $configuration);
60
61
        // create action
62 1
        $action = new Action($actionName, $actionConfiguration);
63
64
        // adding fields items to actions
65 1
        foreach ($actionConfiguration->getParameter('fields') as $fieldName => $fieldConfiguration) {
66 1
            $field = $this
67
                ->fieldFactory
68 1
                ->create($fieldName, $fieldConfiguration);
69 1
            $action->addField($field);
70 1
        }
71
72
        // adding filters to the action
73 1
        foreach ($actionConfiguration->getParameter('filters') as $fieldName => $filterConfiguration) {
74
            $filter = $this
75
                ->filterFactory
76
                ->create($fieldName, $filterConfiguration);
77
            $action->addFilter($filter);
78 1
        }
79 1
        return $action;
80
    }
81
}
82