Completed
Pull Request — dev (#22)
by
unknown
12:19
created

UserController::userAddAction()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 20
Code Lines 14

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
c 1
b 0
f 1
dl 0
loc 20
rs 9.4285
cc 2
eloc 14
nc 2
nop 1
1
<?php
2
3
namespace AppBundle\Controller;
4
5
use AppBundle\Entity\User;
6
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
7
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
8
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
9
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
10
use Symfony\Component\HttpFoundation\RedirectResponse;
11
use Symfony\Component\HttpFoundation\Request;
12
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
13
14
class UserController extends Controller
15
{
16
    /**
17
     * @Route("/users", name="users_list")
18
     * @Template("@App/users.html.twig")
19
     *
20
     * @param Request $request
21
     * @return array
22
     */
23
    public function usersListAction(Request $request)
24
    {
25
        $em = $this->getDoctrine()->getManager();
26
        $users = $em->getRepository(User::class)->getUsersByParams($request->query);
27
        if (!$users) {
28
            return [
29
                'error' => 'Nothing found!'
30
            ];
31
        }
32
        $paginator = $this->get('knp_paginator');
33
        $pagination = $paginator->paginate($users, $request->query->getInt('page', 1), 10);
34
        return [
35
            "users" => $pagination
36
        ];
37
    }
38
39
    /**
40
     * @Route("/user/activate/{id}", name="activate_user")
41
     * @Template("@App/add.html.twig")
42
     *
43
     * @param  User $user
44
     * @return RedirectResponse
45
     */
46
    public function userActivateAction(User $user)
47
    {
48
        $em = $this->getDoctrine()->getManager();
49
        $user->setStatus($user->isEnabled() ? false : true);
50
        $em->persist($user);
51
        $em->flush();
52
        return $this->redirect($this->generateUrl("users_list"));
53
    }
54
55
    /**
56
     * @Route("/user/add", name="add_user")
57
     * @Template("@App/add.html.twig")
58
     *
59
     * @param Request $request
60
     * @return array|RedirectResponse
61
     */
62
    public function userAddAction(Request $request)
63
    {
64
        $em = $this->getDoctrine()->getManager();
65
        $user = new User();
66
        $form = $this->createForm('AppBundle\Form\UserType', $user, [
67
            'action' => $this->generateUrl('add_user'),
68
            'validation_groups' => array('registration'),
69
        ])
70
            ->add('Register', SubmitType::class, array(
71
                'attr' => ['class' => 'btn pull-right btn-warning']
72
            ));
73
        $form->handleRequest($request);
74
        if ($form->isValid()) {
75
            $em->persist($user);
76
            $em->flush();
77
78
            return $this->redirect($this->generateUrl("users_list"));
79
        }
80
        return ['form' => $form->createView()];
81
    }
82
83
    /**
84
     * @Route("/user/edit/{id}", name="edit_user")
85
     * @Template("@App/add.html.twig")
86
     *
87
     * @param Request $request
88
     * @param User $user
89
     * @return array|RedirectResponse
90
     */
91
    public function userEditAction(Request $request, User $user)
92
    {
93
        $em = $this->getDoctrine()->getManager();
94
        $form = $this->createForm('AppBundle\Form\UserType', $user, [
95
            'action' => $this->generateUrl('edit_user', array('id' => $user->getId())),
96
            'method' => 'POST',
97
            'validation_groups' => array('edit'),
98
        ])
99
            ->add('Save', SubmitType::class, array(
100
                'attr' => ['class' => 'btn pull-right btn-warning']
101
            ));
102
        $form->handleRequest($request);
103
        if ($form->isValid()) {
104
            $em->persist($user);
105
            $em->flush();
106
107
            return $this->redirect($this->generateUrl("users_list"));
108
        }
109
        return ['form' => $form->createView()];
110
    }
111
}
112