Passed
Push — master ( f137da...c4f5b9 )
by Petr
03:20
created

UserService   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 47
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 5

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 3
lcom 1
cbo 5
dl 0
loc 47
ccs 18
cts 18
cp 1
rs 10
c 1
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 8 1
B createOrUpdateUser() 0 28 2
1
<?php
2
3
namespace AppBundle\Service;
4
5
use AppBundle\Entity\Repository\UserRepository;
6
use AppBundle\Entity\User;
7
use AppBundle\Service\Vkontakte\AccessToken;
8
use AppBundle\Service\Vkontakte\VkontakteClient;
9
10
/**
11
 * @author Vehsamrak
12
 */
13
class UserService
14
{
15
16
    /** @var UserRepository */
17
    private $userRepository;
18
19
    /** @var VkontakteClient */
20
    private $vkontakteClient;
21
22 2
    public function __construct(
23
        VkontakteClient $vkontakteClient,
24
        UserRepository $userRepository
25
    )
26
    {
27 2
        $this->userRepository = $userRepository;
28 2
        $this->vkontakteClient = $vkontakteClient;
29 2
    }
30
31 2
    public function createOrUpdateUser(AccessToken $vkToken): User
32
    {
33 2
        $userVkId = $vkToken->getUserVkontakteId();
34 2
        $user = $this->userRepository->findUserByVkId($userVkId);
35 2
        $vkTokenHash = $vkToken->getVkontakteTokenHash();
36
37 2
        if ($user) {
38 1
            $user->updateToken();
39 1
            $user->setVkToken($vkTokenHash);
40
        } else {
41 1
            $id = HashGenerator::generate();
42 1
            $name = $this->vkontakteClient->getUserName($vkTokenHash);
43
44 1
            $user = new User(
45
                $id,
46
                $name,
47
                $userVkId,
48
                $vkTokenHash,
49 1
                $vkToken->userEmail
50
            );
51
52 1
            $this->userRepository->persist($user);
53
        }
54
55 2
        $this->userRepository->flush($user);
56
57 2
        return $user;
58
    }
59
}
60