Passed
Push — master ( dfb010...31c91b )
by Mike
03:32
created

UserDataReader::getUserDataProviderFromEntity()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 15
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 10
CRAP Score 2

Importance

Changes 0
Metric Value
cc 2
eloc 8
nc 2
nop 1
dl 0
loc 15
ccs 10
cts 10
cp 1
crap 2
rs 10
c 0
b 0
f 0
1
<?php
2
declare(strict_types=1);
3
4
namespace Xervice\User\Persistence;
5
6
use DataProvider\UserCredentialDataProvider;
7
use DataProvider\UserDataProvider;
8
use DataProvider\UserLoginDataProvider;
9
use Orm\Xervice\User\Persistence\User;
10
use Orm\Xervice\User\Persistence\UserCredential;
11
use Orm\Xervice\User\Persistence\UserCredentialQuery;
12
use Orm\Xervice\User\Persistence\UserLogin;
13
use Orm\Xervice\User\Persistence\UserLoginQuery;
14
use Orm\Xervice\User\Persistence\UserQuery;
15
use Propel\Runtime\Map\TableMap;
16
use Xervice\Core\Business\Model\Persistence\Reader\AbstractReader;
17
18
class UserDataReader extends AbstractReader
19
{
20
    /**
21
     * @return \Orm\Xervice\User\Persistence\UserQuery
22
     */
23 7
    public function getUserQuery(): UserQuery
24
    {
25 7
        return UserQuery::create();
26
    }
27
28
    /**
29
     * @return \Orm\Xervice\User\Persistence\UserLoginQuery
30
     */
31 3
    public function getLoginQuery(): UserLoginQuery
32
    {
33 3
        return UserLoginQuery::create();
34
    }
35
36
    /**
37
     * @return \Orm\Xervice\User\Persistence\UserCredentialQuery
38
     */
39 2
    public function getCredentialQuery(): UserCredentialQuery
40
    {
41 2
        return UserCredentialQuery::create();
42
    }
43
44
    /**
45
     * @param int $userId
46
     *
47
     * @return UserDataProvider
48
     */
49
    public function getUserFromId(int $userId): UserDataProvider
50
    {
51
        $userQuery = $this->getUserQueryFromUserId($userId);
52
        $users = $userQuery->find();
0 ignored issues
show
Bug introduced by
The method find() does not exist on Xervice\User\Persistence\UserDataReader. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

52
        /** @scrutinizer ignore-call */ 
53
        $users = $userQuery->find();

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
53
        $user = $users[0] ?? null;
54
55
        return $this->getUserDataProviderFromEntity($user);
56
    }
57
58
    /**
59
     * @param string $email
60
     *
61
     * @return UserDataProvider
62
     */
63 7
    public function getUserFromEmail(string $email): UserDataProvider
64
    {
65 7
        $userQuery = $this->getUserQueryFromEmail($email);
66 7
        $users = $userQuery->find();
67 7
        $user = $users[0] ?? null;
68
69 7
        return $this->getUserDataProviderFromEntity($user);
70
    }
71
72
    /**
73
     * @param int $userId
74
     * @param string $type
75
     *
76
     * @return \DataProvider\UserLoginDataProvider
77
     */
78 2
    public function getUserLoginFromType(int $userId, string $type): UserLoginDataProvider
79
    {
80 2
        $loginQuery = $this->getUserLoginQueryFromType($userId, $type);
81 2
        $logins = $loginQuery->find();
82 2
        $login = $logins[0] ?? null;
83
84 2
        return $this->getLoginDataProviderFromEntity($login);
85
    }
86
87
    /**
88
     * @param int $userId
89
     *
90
     * @return $this|\Propel\Runtime\ActiveQuery\ModelCriteria
91
     */
92
    public function getUserQueryFromUserId(int $userId)
93
    {
94
        return $this->getUserQuery()
95
                    ->filterByUserId($userId)
96
                    ->joinWith('User.UserLogin')
97
                    ->joinWith('UserLogin.UserCredential')
98
            ;
99
    }
100
101
    /**
102
     * @param string $email
103
     *
104
     * @return $this|\Propel\Runtime\ActiveQuery\ModelCriteria
105
     */
106 7
    public function getUserQueryFromEmail(string $email)
107
    {
108 7
        return $this->getUserQuery()
109 7
                    ->filterByEmail($email)
110 7
                    ->joinWith('User.UserLogin')
111 7
                    ->joinWith('UserLogin.UserCredential')
112
            ;
113
    }
114
115
    /**
116
     * @param int $userId
117
     * @param string $type
118
     *
119
     * @return $this|\Propel\Runtime\ActiveQuery\ModelCriteria
120
     */
121 2
    public function getUserLoginQueryFromType(int $userId, string $type)
122
    {
123 2
        return $this->getLoginQuery()
124 2
                    ->filterByUserId($userId)
125 2
                    ->filterByType($type)
126 2
                    ->joinWith('UserLogin.UserCredential');
127
    }
128
129
130
    /**
131
     * @param \Orm\Xervice\User\Persistence\UserCredential $credential
132
     *
133
     * @return \DataProvider\UserCredentialDataProvider
134
     */
135
    public function getCredentialDataProviderFromEntity(UserCredential $credential = null): UserCredentialDataProvider
136
    {
137
        $credentialDataProvider = new UserCredentialDataProvider();
138
        if ($credential) {
139
            $credentialDataProvider->fromArray(
140
                $credential->toArray(
141
                    TableMap::TYPE_PHPNAME,
142
                    true,
143
                    [],
144
                    true
145
                )
146
            );
147
        }
148
149
        return $credentialDataProvider;
150
    }
151
152
    /**
153
     * @param \Orm\Xervice\User\Persistence\UserLogin $login
154
     *
155
     * @return \DataProvider\UserLoginDataProvider
156
     */
157 2
    public function getLoginDataProviderFromEntity(UserLogin $login = null): UserLoginDataProvider
158
    {
159 2
        $loginDataProvider = new UserLoginDataProvider();
160 2
        if ($login) {
161 1
            $loginDataProvider->fromArray(
162 1
                $login->toArray(
163 1
                    TableMap::TYPE_PHPNAME,
164 1
                    true,
165 1
                    [],
166 1
                    true
167
                )
168
            );
169
        }
170
171 2
        return $loginDataProvider;
172
    }
173
174
    /**
175
     * @param \Orm\Xervice\User\Persistence\User $user
176
     *
177
     * @return \DataProvider\UserDataProvider
178
     */
179 7
    public function getUserDataProviderFromEntity(User $user = null): UserDataProvider
180
    {
181 7
        $userDataProvider = new UserDataProvider();
182 7
        if ($user) {
183 7
            $userDataProvider->fromArray(
184 7
                $user->toArray(
185 7
                    TableMap::TYPE_PHPNAME,
186 7
                    true,
187 7
                    [],
188 7
                    true
189
                )
190
            );
191
        }
192
193 7
        return $userDataProvider;
194
    }
195
196
    /**
197
     * @param \DataProvider\UserLoginDataProvider $loginDataProvider
198
     *
199
     * @return \Orm\Xervice\User\Persistence\UserLogin
200
     * @throws \Propel\Runtime\Exception\PropelException
201
     */
202 7
    public function getLoginEntityFromDataProvider(UserLoginDataProvider $loginDataProvider): UserLogin
203
    {
204 7
        if ($loginDataProvider->hasUserLoginId()) {
205 1
            $userLoginEntity = $this->getLoginQuery()->findOneByUserLoginId($loginDataProvider->getUserLoginId());
206
        } else {
207 7
            $userLoginEntity = new UserLogin();
208
        }
209
210 7
        $userLoginEntity->fromArray($loginDataProvider->toArray());
211
212 7
        if ($loginDataProvider->hasUserCredential()) {
213 7
            $userLoginEntity->setUserCredential(
214 7
                $this->getUserCredentialsEntity($loginDataProvider->getUserCredential())
215
            );
216
        }
217
218 7
        return $userLoginEntity;
219
    }
220
221
    /**
222
     * @param $credentialDataProvider
223
     *
224
     * @return \Orm\Xervice\User\Persistence\UserCredential
225
     */
226 7
    public function getUserCredentialsEntity(UserCredentialDataProvider $credentialDataProvider): UserCredential
227
    {
228 7
        if ($credentialDataProvider->hasUserCredentialId()) {
229 2
            $userCredentialEntity = $this->getCredentialQuery()->findOneByUserCredentialId(
230 2
                $credentialDataProvider->getUserCredentialId()
231
            );
232
        } else {
233 7
            $userCredentialEntity = new UserCredential();
234
        }
235 7
        $userCredentialEntity->fromArray($credentialDataProvider->toArray());
236 7
        return $userCredentialEntity;
237
    }
238
}