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

UserWithPasswordDataTransferObject::fromUser()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 14
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

Changes 4
Bugs 1 Features 0
Metric Value
c 4
b 1
f 0
dl 0
loc 14
rs 9.4285
cc 2
eloc 10
nc 2
nop 1
1
<?php
2
3
namespace SumoCoders\FrameworkMultiUserBundle\DataTransferObject;
4
5
use SumoCoders\FrameworkMultiUserBundle\User\User;
6
use SumoCoders\FrameworkMultiUserBundle\User\UserWithPassword;
7
8
class UserWithPasswordDataTransferObject implements UserDataTransferObject
9
{
10
    /**
11
     * @var int
12
     */
13
    public $id;
14
15
    /**
16
     * @var string
17
     */
18
    public $userName;
19
20
    /**
21
     * @var string
22
     */
23
    public $displayName;
24
25
    /**
26
     * @var string
27
     */
28
    public $email;
29
30
    /**
31
     * @var string
32
     */
33
    public $plainPassword;
34
35
    /**
36
     * @var User
37
     */
38
    private $user;
39
40
    /**
41
     * @param User $user
42
     *
43
     * @return User
44
     */
45
    public static function fromUser(User $user)
46
    {
47
        $baseUserTransferObject = new self();
48
        $baseUserTransferObject->user = $user;
49
        $baseUserTransferObject->id = $user->getId();
50
        $baseUserTransferObject->userName = $user->getUsername();
51
        $baseUserTransferObject->displayName = $user->getDisplayName();
52
        $baseUserTransferObject->email = $user->getEmail();
53
        if ($user->hasPlainPassword()) {
54
            $baseUserTransferObject->plainPassword = $user->getPlainPassword();
55
        }
56
57
        return $baseUserTransferObject;
58
    }
59
60
    /**
61
     * @return UserWithPassword
62
     */
63
    public function getEntity()
64
    {
65
        if ($this->user) {
66
            $this->user->change($this);
67
68
            return $this->user;
69
        }
70
71
        return new UserWithPassword(
72
            $this->userName,
73
            $this->plainPassword,
74
            $this->displayName,
75
            $this->email
76
        );
77
    }
78
}
79