Completed
Pull Request — master (#30)
by nonanerz
06:00
created

FormRequestController   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 71
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 6

Test Coverage

Coverage 0%

Importance

Changes 4
Bugs 1 Features 2
Metric Value
wmc 7
lcom 1
cbo 6
dl 0
loc 71
ccs 0
cts 31
cp 0
rs 10
c 4
b 1
f 2

2 Methods

Rating   Name   Duplication   Size   Complexity  
A listAction() 0 19 1
B activationAction() 0 31 6
1
<?php
2
3
namespace AppBundle\Controller;
4
5
use AppBundle\Entity\FormRequest;
6
use AppBundle\Entity\DTO\Filter;
7
use AppBundle\Form\DTO\FormRequestFilterType;
8
use AppBundle\Form\FormRequestType;
9
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
10
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
11
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
12
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
13
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
14
use Symfony\Component\HttpFoundation\Request;
15
use Symfony\Component\HttpFoundation\Response;
16
17
/**
18
 * Class FormRequestController.
19
 *
20
 * @Route("/form_request", name="form_requests")
21
 */
22
class FormRequestController extends Controller
23
{
24
    /**
25
     * @Route("", name="form_request_list")
26
     * @Template("@App/request_forms.html.twig")
27
     *
28
     * @param Request $request
29
     *
30
     * @return array
31
     */
32
    public function listAction(Request $request)
33
    {
34
        $em = $this->getDoctrine()->getManager();
35
        $filter = new Filter();
36
        $filterForm = $this->createForm(FormRequestFilterType::class, $filter)
37
            ->add('Search', SubmitType::class);
38
39
        $filterForm->handleRequest($request);
40
        $formRequests = $this->get('knp_paginator')->paginate(
41
            $em->getRepository(FormRequest::class)->selectRequestFormsByParams($filter),
42
            $request->query->getInt('page', 1),
43
            10
44
        );
45
46
        return [
47
            'formRequests' => $formRequests,
48
            'filterForm' => $filterForm->createView(),
49
        ];
50
    }
51
52
    /**
53
     * @Route("/form_request/approve", name="form_approve")
54
     *
55
     * @Method("PUT")
56
     *
57
     * @param Request     $request
58
     *
59
     * @return Response|false
60
     */
61
    public function activationAction(Request $request)
62
    {
63
        $status = $request->request->get('status');
64
        $id = $request->request->get('id');
65
66
        if (!$status || !$id) {
67
            return false;
68
        }
69
70
        $em = $this->getDoctrine()->getManager();
71
        $formRequest = $em->getRepository(FormRequest::class)->find($id);
72
        if (!$formRequest) {
73
            return false;
74
        }
75
76
        if ($status !== 'approved' && $status !== 'rejected') {
77
            return false;
78
        }
79
80
        $formRequest->setStatus($status);
81
        $em->flush();
82
83
        $this->get('app.email_notification')->sendNotification(
84
            $formRequest->getUser()->getEmail(),
85
            'Form request action',
86
            'Hello, '.$formRequest->getUser()->getFirstName().'.
87
            Your form request was '.$formRequest->getStatus().'.'
88
        );
89
90
        return new Response($status);
91
    }
92
}
93