Completed
Push — dev ( f2abe4...3f06d3 )
by nonanerz
05:36 queued 05:30
created

FormRequestController::activationAction()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 23
Code Lines 16

Duplication

Lines 0
Ratio 0 %

Importance

Changes 3
Bugs 1 Features 2
Metric Value
c 3
b 1
f 2
dl 0
loc 23
rs 9.0856
cc 3
eloc 16
nc 3
nop 2
1
<?php
2
3
namespace AppBundle\Controller;
4
5
use AppBundle\Entity\FormRequest;
6
use AppBundle\Entity\User;
7
use AppBundle\Entity\DTO\Filter;
8
use AppBundle\Form\DTO\FormRequestFilterType;
9
use AppBundle\Form\User\EditType;
10
use AppBundle\Form\User\ActivationType;
11
use AppBundle\Form\FormRequestType;
12
use AppBundle\Notification\EmailNotification;
13
use Symfony\Component\Form\Extension\Core\Type\TextType;
14
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
15
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
16
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
17
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
18
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
19
use Symfony\Component\HttpFoundation\RedirectResponse;
20
use Symfony\Component\HttpFoundation\Request;
21
22
/**
23
 * Class FormRequestController
24
 * @package AppBundle\Controller
25
 * @Route("/form_request", name="form_requests")
26
 */
27
class FormRequestController extends Controller
28
{
29
    /**
30
     * @Route("", name="form_request_list")
31
     * @Template("@App/FormRequest/list.html.twig")
32
     *
33
     * @param Request $request
34
     * @return array
35
     */
36
    public function listAction(Request $request)
37
    {
38
        $em = $this->getDoctrine()->getManager();
39
        $filter = new Filter;
40
        $filterForm = $this->createForm(FormRequestFilterType::class, $filter)
41
            ->add('Search', SubmitType::class);
42
43
        $filterForm->handleRequest($request);
44
        $formRequests = $this->get('knp_paginator')->paginate(
45
            $em->getRepository(FormRequest::class)->selectRequestFormsByParams($filter),
46
            $request->query->getInt('page', 1),
47
            10
48
        );
49
        $approveForms =[];
50
51
        foreach ($formRequests as $formRequest) {
52
            if ($formRequest->getStatus() == "pending") {
53
                $approveForms[$formRequest->getId()] = $this->createForm(FormRequestType::class, $formRequest, [
54
                    'method' => "PUT",
55
                    'action' => $this->generateUrl('form_approve', ['id' => $formRequest->getId()]),
56
                ])
57
                    ->createView();
58
            }
59
        }
60
        return [
61
            'formRequests' => $formRequests,
62
            'approveForms' => $approveForms,
63
            'filterForm' => $filterForm->createView(),
64
        ];
65
    }
66
67
    /**
68
     * @Route("/form_request/approve/{id}", name="form_approve")
69
     *
70
     * @Method("PUT")
71
     * @param  Request $request
72
     * @param  FormRequest $formRequest
73
     * @return RedirectResponse
74
     */
75
    public function activationAction(Request $request, FormRequest $formRequest)
76
    {
77
        $em = $this->getDoctrine()->getManager();
78
        $form = $this->createForm(FormRequestType::class, $formRequest, [
79
            'method' => "PUT",
80
            'action' => $this->generateUrl('form_approve', ['id' => $formRequest->getId()]),
81
        ]);
82
        $form->handleRequest($request);
83
        if ($form->isSubmitted()) {
84
            if ($form->isValid()) {
85
                $em->persist($formRequest);
86
                $em->flush();
87
                $this->get('app.email_notification')->sendNotification(
88
                    $formRequest->getUser()->getEmail(),
89
                    "Form request action",
90
                    "Hello, ".$formRequest->getUser()->getFirstName(). ". 
91
                    Your form request was ".$formRequest->getStatus().'.'
92
                );
93
            }
94
        }
95
96
        return $this->redirect($this->generateUrl("form_request_list"));
97
    }
98
}
99