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

UserService::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 8
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 4
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
dl 0
loc 8
ccs 4
cts 4
cp 1
rs 9.4285
c 1
b 0
f 0
cc 1
eloc 5
nc 1
nop 2
crap 1
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