Completed
Push — develop ( 511001...8b4d6d )
by A.
03:05
created

UserService::getUser()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 12
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
c 1
b 0
f 1
dl 0
loc 12
rs 9.4286
cc 2
eloc 7
nc 2
nop 0
1
<?php
2
3
/**
4
 * Copyright 2015 SURFnet B.V.
5
 *
6
 * Licensed under the Apache License, Version 2.0 (the "License");
7
 * you may not use this file except in compliance with the License.
8
 * You may obtain a copy of the License at
9
 *
10
 *     http://www.apache.org/licenses/LICENSE-2.0
11
 *
12
 * Unless required by applicable law or agreed to in writing, software
13
 * distributed under the License is distributed on an "AS IS" BASIS,
14
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
 * See the License for the specific language governing permissions and
16
 * limitations under the License.
17
 */
18
19
namespace OpenConext\ProfileBundle\Service;
20
21
use OpenConext\Profile\Entity\User;
22
use OpenConext\Profile\Api\AuthenticatedUserProvider as AuthenticatedUserProviderInterface;
23
use OpenConext\Profile\Repository\UserRepository;
24
use OpenConext\Profile\Value\Locale;
25
use OpenConext\ProfileBundle\Profile\Command\ChangeLocaleCommand;
26
27
final class UserService
28
{
29
    /**
30
     * @var UserRepository
31
     */
32
    private $userRepository;
33
34
    /**
35
     * @var AuthenticatedUserProviderInterface
36
     */
37
    private $authenticatedUserProvider;
38
39
    /**
40
     * @var LocaleService
41
     */
42
    private $localeService;
43
44
    public function __construct(
45
        UserRepository $userRepository,
46
        AuthenticatedUserProviderInterface $authenticatedUserProvider,
47
        LocaleService $localeService
48
    ) {
49
        $this->userRepository            = $userRepository;
50
        $this->authenticatedUserProvider = $authenticatedUserProvider;
51
        $this->localeService             = $localeService;
52
    }
53
54
    /**
55
     * @return User
56
     */
57
    public function getUser()
58
    {
59
        $user = $this->userRepository->findUser();
60
        if ($user) {
61
            return $user;
62
        }
63
64
        $user = new User($this->authenticatedUserProvider->getCurrentUser(), $this->localeService->getLocale());
65
        $this->userRepository->save($user);
66
67
        return $user;
68
    }
69
70
    /**
71
     * @param ChangeLocaleCommand $changeLocaleCommand
72
     */
73
    public function changeLocale(ChangeLocaleCommand $changeLocaleCommand)
74
    {
75
        $user = $this->getUser();
76
        $user->switchLocaleTo(new Locale($changeLocaleCommand->newLocale));
77
78
        $this->localeService->saveLocaleOf($user);
79
    }
80
}
81