Completed
Pull Request — master (#30)
by
unknown
02:48
created

BlockController::toggleAction()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 18
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 18
rs 9.4285
cc 3
eloc 11
nc 3
nop 1
1
<?php
2
3
namespace SumoCoders\FrameworkMultiUserBundle\Controller;
4
5
use SumoCoders\FrameworkMultiUserBundle\User\Interfaces\UserRepository;
6
use Symfony\Component\HttpFoundation\RedirectResponse;
7
use Symfony\Component\HttpFoundation\Session\Flash\FlashBagInterface;
8
use Symfony\Component\Routing\Router;
9
use Symfony\Component\Translation\TranslatorInterface;
10
11
final class BlockController
12
{
13
    /** @var UserRepository */
14
    private $userRepository;
15
16
    /** @var FlashBagInterface */
17
    private $flashbag;
18
19
    /** @var TranslatorInterface */
20
    private $translator;
21
22
    /** @var Router */
23
    private $router;
24
25
    /** @var string */
26
    private $redirectRoute;
27
28
    /**
29
     * @param UserRepository $userRepository
30
     * @param FlashBagInterface $flashbag
31
     * @param TranslatorInterface $translator
32
     * @param Router $router
33
     * @param string $redirectRoute
34
     */
35
    public function __construct(
36
        UserRepository $userRepository,
37
        FlashBagInterface $flashbag,
38
        TranslatorInterface $translator,
39
        Router $router,
40
        $redirectRoute
41
    ) {
42
        $this->userRepository = $userRepository;
43
        $this->flashbag = $flashbag;
44
        $this->translator = $translator;
45
        $this->router = $router;
46
        $this->redirectRoute = $redirectRoute;
47
    }
48
49
    public function toggleAction($id)
50
    {
51
        $user = $this->userRepository->find($id);
52
        $user->toggleBlock();
53
        $this->userRepository->save($user);
54
55
        if ($this->redirectRoute !== null) {
56
            $translation = $user->isBlocked()
57
                ? $this->translator->trans('sumocoders.multiuserbundle.flash.block_success')
58
                : $this->translator->trans('sumocoders.multiuserbundle.flash.unblock_success');
59
60
            $this->flashbag->add('success', $translation);
61
62
            return new RedirectResponse($this->router->generate($this->redirectRoute));
63
        }
64
65
        return new RedirectResponse('/');
66
    }
67
}
68