Completed
Pull Request — master (#90)
by Arnaud
05:39
created

ListAction   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 77
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 7

Test Coverage

Coverage 95.45%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 5
c 1
b 0
f 0
lcom 0
cbo 7
dl 0
loc 77
ccs 21
cts 22
cp 0.9545
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 11 1
B __invoke() 0 39 4
1
<?php
2
3
namespace LAG\AdminBundle\Action;
4
5
use LAG\AdminBundle\Action\Responder\ListResponder;
6
use LAG\AdminBundle\Filter\Factory\FilterFormBuilder;
7
use Symfony\Component\Form\FormFactoryInterface;
8
use Symfony\Component\HttpFoundation\Request;
9
use Symfony\Component\HttpFoundation\Response;
10
11
class ListAction extends Action
12
{
13
    /**
14
     * @var ListResponder
15
     */
16
    protected $responder;
17
    
18
    /**
19
     * @var FilterFormBuilder
20
     */
21 1
    protected $filterFormBuilder;
22
    
23
    /**
24
     * Action constructor.
25 1
     *
26 1
     * @param string               $name
27
     * @param FormFactoryInterface $formFactory
28 1
     * @param ListResponder        $responder
29
     * @param FilterFormBuilder    $filterFormBuilder
30
     */
31 1
    public function __construct(
32 1
        $name,
33
        FormFactoryInterface $formFactory,
34 1
        ListResponder $responder,
35
        FilterFormBuilder $filterFormBuilder
36
    ) {
37
        $this->name = $name;
38
        $this->formFactory = $formFactory;
39
        $this->responder = $responder;
40
        $this->filterFormBuilder = $filterFormBuilder;
41 1
    }
42 1
    
43
    /**
44
     * @param Request $request
45
     *
46 1
     * @return Response
47 1
     */
48 1
    public function __invoke(Request $request)
49 1
    {
50 1
        // build the filters form
51
        $filterForm = $this
52
            ->filterFormBuilder
53 1
            ->build($this->configuration)
54
        ;
55 1
        $filters = [];
56
57
        // load the filters
58
        if (null !== $filterForm) {
59
            $filterForm->handleRequest($request);
60 1
    
61 1
            if ($filterForm->isSubmitted() && $filterForm->isValid()) {
62
                $filters = $filterForm->getData();
63
            }
64
        }
65
        
66
        // load the entities
67
        $this
68 1
            ->admin
69
            ->handleRequest($request, $filters)
70 1
        ;
71 1
    
72
        $form = $this
73
            ->formFactory
74
            ->create(
75
                $this->configuration->getParameter('form'),
76
                $this->admin->getEntities(),
77
                $this->configuration->getParameter('form_options')
78
            )
79
        ;
80
        $form->handleRequest($request);
81
    
82
        return $this
83
            ->responder
84
            ->respond($this->configuration, $this->admin, $form, $filterForm)
85
        ;
86
    }
87
}
88