Completed
Pull Request — master (#90)
by Arnaud
02:11
created

ListAction   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 77
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 7

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 5
lcom 0
cbo 7
dl 0
loc 77
rs 10
c 1
b 0
f 0

2 Methods

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