Passed
Push — master ( 3cf6cb...68bea6 )
by Mike
02:42
created

getCredentialDataProviderFromEntity()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 15
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 6

Importance

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

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

53
        /** @scrutinizer ignore-call */ 
54
        $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...
54
        $user = $users[0] ?? null;
55
56
        return $this->getUserDataProviderFromEntity($user);
57
    }
58
59
    /**
60
     * @param string $email
61
     *
62
     * @return UserDataProvider
63
     */
64 5
    public function getUserFromEmail(string $email): UserDataProvider
65
    {
66 5
        $userQuery = $this->getUserQueryFromEmail($email);
67 5
        $users = $userQuery->find();
68 5
        $user = $users[0] ?? null;
69
70 5
        return $this->getUserDataProviderFromEntity($user);
71
    }
72
73
    /**
74
     * @param int $userId
75
     * @param string $type
76
     *
77
     * @return \DataProvider\UserLoginDataProvider
78
     */
79
    public function getUserLoginFromType(int $userId, string $type): UserLoginDataProvider
80
    {
81
        $loginQuery = $this->getUserLoginQueryFromType($userId, $type);
82
        $logins = $loginQuery->find();
83
        $login = $logins[0] ?? null;
84
85
        return $this->getLoginDataProviderFromEntity($login);
0 ignored issues
show
Bug introduced by
It seems like $login can also be of type null; however, parameter $login of Xervice\User\UserQueryCo...ataProviderFromEntity() does only seem to accept Orm\Xervice\User\Persistence\UserLogin, maybe add an additional type check? ( Ignorable by Annotation )

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

85
        return $this->getLoginDataProviderFromEntity(/** @scrutinizer ignore-type */ $login);
Loading history...
86
    }
87
88
    /**
89
     * @param int $userId
90
     *
91
     * @return $this|\Propel\Runtime\ActiveQuery\ModelCriteria
92
     */
93
    public function getUserQueryFromUserId(int $userId)
94
    {
95
        return $this->getUserQuery()
96
                    ->filterByUserId($userId)
97
                    ->joinWith('User.UserLogin')
98
                    ->joinWith('UserLogin.UserCredential')
99
            ;
100
    }
101
102
    /**
103
     * @param string $email
104
     *
105
     * @return $this|\Propel\Runtime\ActiveQuery\ModelCriteria
106
     */
107 5
    public function getUserQueryFromEmail(string $email)
108
    {
109 5
        return $this->getUserQuery()
110 5
                    ->filterByEmail($email)
111 5
                    ->joinWith('User.UserLogin')
112 5
                    ->joinWith('UserLogin.UserCredential')
113
            ;
114
    }
115
116
    /**
117
     * @param int $userId
118
     * @param string $type
119
     *
120
     * @return $this|\Propel\Runtime\ActiveQuery\ModelCriteria
121
     */
122
    public function getUserLoginQueryFromType(int $userId, string $type)
0 ignored issues
show
Unused Code introduced by
The parameter $type is not used and could be removed. ( Ignorable by Annotation )

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

122
    public function getUserLoginQueryFromType(int $userId, /** @scrutinizer ignore-unused */ string $type)

This check looks for parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
123
    {
124
        return $this->getLoginQuery()
125
                    ->filterByUserId($userId)
126
                    ->joinWith('UserLogin.UserCredential')
127
            ;
128
    }
129
130
131
    /**
132
     * @param \Orm\Xervice\User\Persistence\UserCredential $credential
133
     *
134
     * @return \DataProvider\UserCredentialDataProvider
135
     */
136
    public function getCredentialDataProviderFromEntity(UserCredential $credential): UserCredentialDataProvider
137
    {
138
        $credentialDataProvider = new UserCredentialDataProvider();
139
        if ($credential) {
0 ignored issues
show
introduced by
$credential is of type Orm\Xervice\User\Persistence\UserCredential, thus it always evaluated to true.
Loading history...
140
            $credentialDataProvider->fromArray(
141
                $credential->toArray(
142
                    TableMap::TYPE_PHPNAME,
143
                    true,
144
                    [],
145
                    true
146
                )
147
            );
148
        }
149
150
        return $credentialDataProvider;
151
    }
152
153
    /**
154
     * @param \Orm\Xervice\User\Persistence\UserLogin $login
155
     *
156
     * @return \DataProvider\UserLoginDataProvider
157
     */
158
    public function getLoginDataProviderFromEntity(UserLogin $login): UserLoginDataProvider
159
    {
160
        $loginDataProvider = new UserLoginDataProvider();
161
        if ($login) {
0 ignored issues
show
introduced by
$login is of type Orm\Xervice\User\Persistence\UserLogin, thus it always evaluated to true.
Loading history...
162
            $loginDataProvider->fromArray(
163
                $login->toArray(
164
                    TableMap::TYPE_PHPNAME,
165
                    true,
166
                    [],
167
                    true
168
                )
169
            );
170
        }
171
172
        return $loginDataProvider;
173
    }
174
175
    /**
176
     * @param \Orm\Xervice\User\Persistence\User $user
177
     *
178
     * @return \DataProvider\UserDataProvider
179
     */
180 5
    public function getUserDataProviderFromEntity(User $user = null): UserDataProvider
181
    {
182 5
        $userDataProvider = new UserDataProvider();
183 5
        if ($user) {
184 5
            $userDataProvider->fromArray(
185 5
                $user->toArray(
186 5
                    TableMap::TYPE_PHPNAME,
187 5
                    true,
188 5
                    [],
189 5
                    true
190
                )
191
            );
192
        }
193
194 5
        return $userDataProvider;
195
    }
196
197
    /**
198
     * @param \DataProvider\UserLoginDataProvider $loginDataProvider
199
     *
200
     * @return \Orm\Xervice\User\Persistence\UserLogin
201
     * @throws \Propel\Runtime\Exception\PropelException
202
     */
203 5
    public function getLoginEntityFromDataProvider(UserLoginDataProvider $loginDataProvider): UserLogin
204
    {
205 5
        if ($loginDataProvider->hasUserLoginId()) {
206 1
            $userLoginEntity = $this->getLoginQuery()->findOneByUserLoginId($loginDataProvider->getUserLoginId());
207
        } else {
208 5
            $userLoginEntity = new UserLogin();
209
        }
210
211 5
        $userLoginEntity->fromArray($loginDataProvider->toArray());
212
213 5
        if ($loginDataProvider->hasUserCredential()) {
214 5
            $userLoginEntity->setUserCredential(
215 5
                $this->getUserCredentialsEntity($loginDataProvider->getUserCredential())
216
            );
217
        }
218
219 5
        return $userLoginEntity;
220
    }
221
222
    /**
223
     * @param $credentialDataProvider
224
     *
225
     * @return \Orm\Xervice\User\Persistence\UserCredential
226
     */
227 5
    public function getUserCredentialsEntity(UserCredentialDataProvider $credentialDataProvider): UserCredential
228
    {
229 5
        if ($credentialDataProvider->hasUserCredentialId()) {
230 2
            $userCredentialEntity = $this->getCredentialQuery()->findOneByUserCredentialId(
231 2
                $credentialDataProvider->getUserCredentialId()
232
            );
233
        } else {
234 5
            $userCredentialEntity = new UserCredential();
235
        }
236 5
        $userCredentialEntity->fromArray($credentialDataProvider->toArray());
237 5
        return $userCredentialEntity;
238
    }
239
}