Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
9 / 9
100.00% covered (success)
100.00%
2 / 2
CRAP
100.00% covered (success)
100.00%
1 / 1
MetricsHandler
100.00% covered (success)
100.00%
9 / 9
100.00% covered (success)
100.00%
2 / 2
5
100.00% covered (success)
100.00%
1 / 1
 __construct
100.00% covered (success)
100.00%
3 / 3
100.00% covered (success)
100.00%
1 / 1
1
 getHandler
100.00% covered (success)
100.00%
6 / 6
100.00% covered (success)
100.00%
1 / 1
4
1<?php
2
3/**
4 * This file is part of the MADIS - RGPD Management application.
5 *
6 * @copyright Copyright (c) 2018-2019 Soluris - Solutions Numériques Territoriales Innovantes
7 *
8 * This program is free software: you can redistribute it and/or modify
9 * it under the terms of the GNU Affero General Public License as published by
10 * the Free Software Foundation, either version 3 of the License, or
11 * (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU Affero General Public License for more details.
17 *
18 * You should have received a copy of the GNU Affero General Public License
19 * along with this program. If not, see <https://www.gnu.org/licenses/>.
20 */
21
22declare(strict_types=1);
23
24namespace App\Domain\Reporting\Handler;
25
26use App\Domain\Reporting\Metrics\AdminMetric;
27use App\Domain\Reporting\Metrics\MetricInterface;
28use App\Domain\Reporting\Metrics\UserMetric;
29use App\Domain\User\Dictionary\UserRoleDictionary;
30use Symfony\Component\Security\Core\Security;
31
32class MetricsHandler
33{
34    /**
35     * @var Security
36     */
37    private $security;
38
39    /**
40     * @var UserMetric
41     */
42    private $userMetric;
43
44    /**
45     * @var AdminMetric
46     */
47    private $adminMetric;
48
49    public function __construct(
50        Security $security,
51        UserMetric $userMetric,
52        AdminMetric $adminMetric,
53    ) {
54        $this->security    = $security;
55        $this->userMetric  = $userMetric;
56        $this->adminMetric = $adminMetric;
57    }
58
59    public function getHandler(): MetricInterface
60    {
61        $user = $this->security->getUser();
62        $role = $user->getRoles()[0];
63
64        switch ($role) {
65            case UserRoleDictionary::ROLE_ADMIN:
66            case UserRoleDictionary::ROLE_REFERENT:
67                return $this->adminMetric;
68                break;
69            default:
70                return $this->userMetric;
71        }
72    }
73}