1 | <?php |
||
2 | |||
3 | /** |
||
4 | * Copyright © 2016-present Spryker Systems GmbH. All rights reserved. |
||
5 | * Use of this software requires acceptance of the Evaluation License Agreement. See LICENSE file. |
||
6 | */ |
||
7 | |||
8 | namespace Spryker\Zed\CompanyUser\Business\Model; |
||
9 | |||
10 | use ArrayObject; |
||
11 | use Generated\Shared\Transfer\CompanyResponseTransfer; |
||
12 | use Generated\Shared\Transfer\CompanyUserCollectionTransfer; |
||
13 | use Generated\Shared\Transfer\CompanyUserCriteriaFilterTransfer; |
||
14 | use Generated\Shared\Transfer\CompanyUserCriteriaTransfer; |
||
15 | use Generated\Shared\Transfer\CompanyUserResponseTransfer; |
||
16 | use Generated\Shared\Transfer\CompanyUserTransfer; |
||
17 | use Generated\Shared\Transfer\CustomerTransfer; |
||
18 | use Generated\Shared\Transfer\ResponseMessageTransfer; |
||
19 | use Spryker\Zed\CompanyUser\Dependency\Facade\CompanyUserToCustomerFacadeInterface; |
||
20 | use Spryker\Zed\CompanyUser\Persistence\CompanyUserEntityManagerInterface; |
||
21 | use Spryker\Zed\CompanyUser\Persistence\CompanyUserRepositoryInterface; |
||
22 | use Spryker\Zed\Kernel\Persistence\EntityManager\TransactionTrait; |
||
23 | |||
24 | class CompanyUser implements CompanyUserInterface |
||
25 | { |
||
26 | use TransactionTrait; |
||
27 | |||
28 | /** |
||
29 | * @var \Spryker\Zed\CompanyUser\Persistence\CompanyUserRepositoryInterface |
||
30 | */ |
||
31 | protected $companyUserRepository; |
||
32 | |||
33 | /** |
||
34 | * @var \Spryker\Zed\CompanyUser\Persistence\CompanyUserEntityManagerInterface |
||
35 | */ |
||
36 | protected $companyUserEntityManager; |
||
37 | |||
38 | /** |
||
39 | * @var \Spryker\Zed\CompanyUser\Dependency\Facade\CompanyUserToCustomerFacadeInterface |
||
40 | */ |
||
41 | protected $customerFacade; |
||
42 | |||
43 | /** |
||
44 | * @var \Spryker\Zed\CompanyUser\Business\Model\CompanyUserPluginExecutorInterface |
||
45 | */ |
||
46 | protected $companyUserPluginExecutor; |
||
47 | |||
48 | /** |
||
49 | * @var array<\Spryker\Zed\CompanyUserExtension\Dependency\Plugin\CompanyUserSavePreCheckPluginInterface> |
||
50 | */ |
||
51 | protected $companyUserSavePreCheckPlugins; |
||
52 | |||
53 | /** |
||
54 | * @param \Spryker\Zed\CompanyUser\Persistence\CompanyUserRepositoryInterface $companyUserRepository |
||
55 | * @param \Spryker\Zed\CompanyUser\Persistence\CompanyUserEntityManagerInterface $companyUserEntityManager |
||
56 | * @param \Spryker\Zed\CompanyUser\Dependency\Facade\CompanyUserToCustomerFacadeInterface $customerFacade |
||
57 | * @param \Spryker\Zed\CompanyUser\Business\Model\CompanyUserPluginExecutorInterface $companyUserPluginExecutor |
||
58 | * @param array<\Spryker\Zed\CompanyUserExtension\Dependency\Plugin\CompanyUserSavePreCheckPluginInterface> $companyUserSavePreCheckPlugins |
||
59 | */ |
||
60 | public function __construct( |
||
61 | CompanyUserRepositoryInterface $companyUserRepository, |
||
62 | CompanyUserEntityManagerInterface $companyUserEntityManager, |
||
63 | CompanyUserToCustomerFacadeInterface $customerFacade, |
||
64 | CompanyUserPluginExecutorInterface $companyUserPluginExecutor, |
||
65 | array $companyUserSavePreCheckPlugins |
||
66 | ) { |
||
67 | $this->companyUserRepository = $companyUserRepository; |
||
68 | $this->companyUserEntityManager = $companyUserEntityManager; |
||
69 | $this->customerFacade = $customerFacade; |
||
70 | $this->companyUserPluginExecutor = $companyUserPluginExecutor; |
||
71 | $this->companyUserSavePreCheckPlugins = $companyUserSavePreCheckPlugins; |
||
72 | } |
||
73 | |||
74 | /** |
||
75 | * @param \Generated\Shared\Transfer\CompanyUserTransfer $companyUserTransfer |
||
76 | * |
||
77 | * @return \Generated\Shared\Transfer\CompanyUserResponseTransfer |
||
78 | */ |
||
79 | public function create(CompanyUserTransfer $companyUserTransfer): CompanyUserResponseTransfer |
||
80 | { |
||
81 | $companyUserResponseTransfer = $this->executeSavePreCheckPlugins($companyUserTransfer); |
||
82 | |||
83 | if (!$companyUserResponseTransfer->getIsSuccessful()) { |
||
84 | return $companyUserResponseTransfer; |
||
85 | } |
||
86 | |||
87 | return $this->getTransactionHandler()->handleTransaction(function () use ($companyUserResponseTransfer) { |
||
88 | return $this->executeCreateTransaction($companyUserResponseTransfer); |
||
89 | }); |
||
90 | } |
||
91 | |||
92 | /** |
||
93 | * @param \Generated\Shared\Transfer\CompanyUserTransfer $companyUserTransfer |
||
94 | * |
||
95 | * @return \Generated\Shared\Transfer\CompanyUserResponseTransfer |
||
96 | */ |
||
97 | public function save(CompanyUserTransfer $companyUserTransfer): CompanyUserResponseTransfer |
||
98 | { |
||
99 | $companyUserResponseTransfer = $this->executeSavePreCheckPlugins($companyUserTransfer); |
||
100 | |||
101 | if (!$companyUserResponseTransfer->getIsSuccessful()) { |
||
102 | return $companyUserResponseTransfer; |
||
103 | } |
||
104 | |||
105 | return $this->getTransactionHandler()->handleTransaction(function () use ($companyUserResponseTransfer) { |
||
106 | $companyUserResponseTransfer = $this->executeSaveTransaction($companyUserResponseTransfer); |
||
107 | |||
108 | return $companyUserResponseTransfer; |
||
109 | }); |
||
110 | } |
||
111 | |||
112 | /** |
||
113 | * @param \Generated\Shared\Transfer\CompanyUserTransfer $companyUserTransfer |
||
114 | * |
||
115 | * @return \Generated\Shared\Transfer\CompanyUserResponseTransfer |
||
116 | */ |
||
117 | public function delete(CompanyUserTransfer $companyUserTransfer): CompanyUserResponseTransfer |
||
118 | { |
||
119 | return $this->getTransactionHandler()->handleTransaction(function () use ($companyUserTransfer) { |
||
120 | $this->companyUserPluginExecutor->executePreDeletePlugins($companyUserTransfer); |
||
121 | |||
122 | $companyUserTransfer = $this->companyUserRepository->getCompanyUserById( |
||
123 | $companyUserTransfer->getIdCompanyUser(), |
||
124 | ); |
||
125 | |||
126 | $this->companyUserEntityManager->deleteCompanyUserById($companyUserTransfer->getIdCompanyUser()); |
||
127 | $this->customerFacade->anonymizeCustomer($companyUserTransfer->getCustomer()); |
||
128 | |||
129 | return (new CompanyUserResponseTransfer())->setIsSuccessful(true); |
||
130 | }); |
||
131 | } |
||
132 | |||
133 | /** |
||
134 | * @param int $idCustomer |
||
135 | * |
||
136 | * @return \Generated\Shared\Transfer\CompanyUserTransfer|null |
||
137 | */ |
||
138 | public function findCompanyUserByCustomerId(int $idCustomer): ?CompanyUserTransfer |
||
139 | { |
||
140 | $companyUserTransfer = $this->companyUserRepository->findCompanyUserByCustomerId($idCustomer); |
||
141 | |||
142 | if ($companyUserTransfer !== null) { |
||
143 | return $this->companyUserPluginExecutor->executeHydrationPlugins($companyUserTransfer); |
||
144 | } |
||
145 | |||
146 | return null; |
||
147 | } |
||
148 | |||
149 | /** |
||
150 | * @param int $idCompanyUser |
||
151 | * |
||
152 | * @return \Generated\Shared\Transfer\CompanyUserTransfer |
||
153 | */ |
||
154 | public function getCompanyUserById(int $idCompanyUser): CompanyUserTransfer |
||
155 | { |
||
156 | $companyUserTransfer = $this->companyUserRepository->getCompanyUserById($idCompanyUser); |
||
157 | |||
158 | return $this->companyUserPluginExecutor->executeHydrationPlugins($companyUserTransfer); |
||
159 | } |
||
160 | |||
161 | /** |
||
162 | * @param int $idCustomer |
||
163 | * |
||
164 | * @return \Generated\Shared\Transfer\CompanyUserTransfer|null |
||
165 | */ |
||
166 | public function findActiveCompanyUserByCustomerId(int $idCustomer): ?CompanyUserTransfer |
||
167 | { |
||
168 | $companyUserTransfer = $this->companyUserRepository->findActiveCompanyUserByCustomerId($idCustomer); |
||
169 | |||
170 | if ($companyUserTransfer !== null) { |
||
171 | return $this->companyUserPluginExecutor->executeHydrationPlugins($companyUserTransfer); |
||
172 | } |
||
173 | |||
174 | return null; |
||
175 | } |
||
176 | |||
177 | /** |
||
178 | * @param \Generated\Shared\Transfer\CustomerTransfer $customerTransfer |
||
179 | * |
||
180 | * @return \Generated\Shared\Transfer\CompanyUserCollectionTransfer |
||
181 | */ |
||
182 | public function getActiveCompanyUsersByCustomerReference(CustomerTransfer $customerTransfer): CompanyUserCollectionTransfer |
||
183 | { |
||
184 | $customerTransfer->requireCustomerReference(); |
||
185 | |||
186 | $companyUserCollectionTransfer = $this->companyUserRepository->getActiveCompanyUsersByCustomerReference($customerTransfer->getCustomerReference()); |
||
187 | |||
188 | foreach ($companyUserCollectionTransfer->getCompanyUsers() as &$companyUserTransfer) { |
||
0 ignored issues
–
show
|
|||
189 | $this->companyUserPluginExecutor->executeHydrationPlugins($companyUserTransfer); |
||
190 | } |
||
191 | |||
192 | return $companyUserCollectionTransfer; |
||
193 | } |
||
194 | |||
195 | /** |
||
196 | * @param \Generated\Shared\Transfer\CompanyUserCriteriaFilterTransfer $companyUserCriteriaFilterTransfer |
||
197 | * |
||
198 | * @return \Generated\Shared\Transfer\CompanyUserCollectionTransfer |
||
199 | */ |
||
200 | public function getCompanyUserCollection( |
||
201 | CompanyUserCriteriaFilterTransfer $companyUserCriteriaFilterTransfer |
||
202 | ): CompanyUserCollectionTransfer { |
||
203 | $collectionTransfer = $this->companyUserRepository->getCompanyUserCollection($companyUserCriteriaFilterTransfer); |
||
204 | |||
205 | foreach ($collectionTransfer->getCompanyUsers() as &$companyUserTransfer) { |
||
206 | $this->companyUserPluginExecutor->executeHydrationPlugins($companyUserTransfer); |
||
207 | } |
||
208 | |||
209 | return $collectionTransfer; |
||
210 | } |
||
211 | |||
212 | /** |
||
213 | * @param array<int> $companyUserIds |
||
214 | * |
||
215 | * @return array<\Generated\Shared\Transfer\CompanyUserTransfer> |
||
216 | */ |
||
217 | public function findActiveCompanyUsers(array $companyUserIds): array |
||
218 | { |
||
219 | return $this->companyUserRepository->findActiveCompanyUsersByIds($companyUserIds); |
||
220 | } |
||
221 | |||
222 | /** |
||
223 | * @param array<int> $companyIds |
||
224 | * |
||
225 | * @return array<int> |
||
226 | */ |
||
227 | public function findActiveCompanyUserIdsByCompanyIds(array $companyIds): array |
||
228 | { |
||
229 | return $this->companyUserRepository->findActiveCompanyUserIdsByCompanyIds($companyIds); |
||
230 | } |
||
231 | |||
232 | /** |
||
233 | * @param \Generated\Shared\Transfer\CompanyUserResponseTransfer $companyUserResponseTransfer |
||
234 | * |
||
235 | * @return \Generated\Shared\Transfer\CompanyUserResponseTransfer |
||
236 | */ |
||
237 | protected function executeCreateTransaction(CompanyUserResponseTransfer $companyUserResponseTransfer): CompanyUserResponseTransfer |
||
238 | { |
||
239 | $companyUserResponseTransfer = $this->registerCustomer($companyUserResponseTransfer); |
||
240 | |||
241 | if (!$companyUserResponseTransfer->getIsSuccessful()) { |
||
242 | return $companyUserResponseTransfer; |
||
243 | } |
||
244 | |||
245 | $companyUserResponseTransfer = $this->companyUserPluginExecutor->executePreSavePlugins($companyUserResponseTransfer); |
||
246 | $companyUserTransfer = $companyUserResponseTransfer->getCompanyUser(); |
||
247 | $companyUserTransfer = $this->companyUserEntityManager->saveCompanyUser($companyUserTransfer); |
||
248 | $companyUserResponseTransfer->setCompanyUser($companyUserTransfer); |
||
249 | $companyUserResponseTransfer = $this->companyUserPluginExecutor->executePostSavePlugins($companyUserResponseTransfer); |
||
250 | $companyUserResponseTransfer = $this->companyUserPluginExecutor->executePostCreatePlugins($companyUserResponseTransfer); |
||
251 | |||
252 | return $companyUserResponseTransfer; |
||
253 | } |
||
254 | |||
255 | /** |
||
256 | * @param \Generated\Shared\Transfer\CompanyUserResponseTransfer $companyUserResponseTransfer |
||
257 | * |
||
258 | * @return \Generated\Shared\Transfer\CompanyUserResponseTransfer |
||
259 | */ |
||
260 | protected function executeSaveTransaction(CompanyUserResponseTransfer $companyUserResponseTransfer): CompanyUserResponseTransfer |
||
261 | { |
||
262 | $companyUserResponseTransfer->requireCompanyUser(); |
||
263 | $companyUserResponseTransfer->getCompanyUser()->requireCustomer(); |
||
264 | |||
265 | $companyUserResponseTransfer = $this->updateCustomer($companyUserResponseTransfer); |
||
266 | |||
267 | if (!$companyUserResponseTransfer->getIsSuccessful()) { |
||
268 | return $companyUserResponseTransfer; |
||
269 | } |
||
270 | |||
271 | $companyUserResponseTransfer = $this->companyUserPluginExecutor->executePreSavePlugins($companyUserResponseTransfer); |
||
272 | $companyUserTransfer = $companyUserResponseTransfer->getCompanyUser(); |
||
273 | $companyUserTransfer = $this->companyUserEntityManager->saveCompanyUser($companyUserTransfer); |
||
274 | $companyUserTransfer->setCustomer($companyUserResponseTransfer->getCompanyUser()->getCustomer()); |
||
275 | $companyUserResponseTransfer->setCompanyUser($companyUserTransfer); |
||
276 | $companyUserResponseTransfer = $this->companyUserPluginExecutor->executePostSavePlugins($companyUserResponseTransfer); |
||
277 | |||
278 | return $companyUserResponseTransfer; |
||
279 | } |
||
280 | |||
281 | /** |
||
282 | * @param \Generated\Shared\Transfer\CompanyUserResponseTransfer $companyUserResponseTransfer |
||
283 | * |
||
284 | * @return \Generated\Shared\Transfer\CompanyUserResponseTransfer |
||
285 | */ |
||
286 | protected function updateCustomer(CompanyUserResponseTransfer $companyUserResponseTransfer): CompanyUserResponseTransfer |
||
287 | { |
||
288 | $companyUserTransfer = $companyUserResponseTransfer->getCompanyUser(); |
||
289 | $customerResponseTransfer = $this->customerFacade->updateCustomer($companyUserTransfer->getCustomer()); |
||
290 | |||
291 | if ($customerResponseTransfer->getIsSuccess()) { |
||
292 | $companyUserTransfer->setCustomer($customerResponseTransfer->getCustomerTransfer()); |
||
293 | |||
294 | return $companyUserResponseTransfer; |
||
295 | } |
||
296 | |||
297 | $companyUserResponseTransfer->setIsSuccessful(false); |
||
298 | $companyUserResponseTransfer = $this->addErrorsToResponse( |
||
299 | $companyUserResponseTransfer, |
||
300 | $customerResponseTransfer->getErrors(), |
||
301 | ); |
||
302 | |||
303 | return $companyUserResponseTransfer; |
||
304 | } |
||
305 | |||
306 | /** |
||
307 | * @param \Generated\Shared\Transfer\CompanyUserResponseTransfer $companyUserResponseTransfer |
||
308 | * |
||
309 | * @return \Generated\Shared\Transfer\CompanyUserResponseTransfer |
||
310 | */ |
||
311 | protected function registerCustomer(CompanyUserResponseTransfer $companyUserResponseTransfer): CompanyUserResponseTransfer |
||
312 | { |
||
313 | $companyUserResponseTransfer->requireCompanyUser(); |
||
314 | $companyUserResponseTransfer->getCompanyUser()->requireCustomer(); |
||
315 | |||
316 | $companyUserTransfer = $companyUserResponseTransfer->getCompanyUser(); |
||
317 | $customerTransfer = $companyUserTransfer->getCustomer(); |
||
318 | |||
319 | if ($customerTransfer->getIdCustomer()) { |
||
320 | $companyUserTransfer->setFkCustomer($customerTransfer->getIdCustomer()); |
||
321 | |||
322 | return $companyUserResponseTransfer; |
||
323 | } |
||
324 | |||
325 | $customerResponseTransfer = $this->customerFacade->registerCustomer($customerTransfer); |
||
326 | |||
327 | if ($customerResponseTransfer->getIsSuccess()) { |
||
328 | $companyUserTransfer->setCustomer($customerResponseTransfer->getCustomerTransfer()); |
||
329 | $companyUserTransfer->setFkCustomer( |
||
330 | $customerResponseTransfer->getCustomerTransfer() |
||
331 | ->getIdCustomer(), |
||
332 | ); |
||
333 | |||
334 | if ($customerResponseTransfer->getMessage()) { |
||
335 | $companyUserResponseTransfer->addMessage( |
||
336 | (new ResponseMessageTransfer())->setText($customerResponseTransfer->getMessage()->getValue()), |
||
337 | ); |
||
338 | } |
||
339 | |||
340 | return $companyUserResponseTransfer; |
||
341 | } |
||
342 | |||
343 | $companyUserResponseTransfer->setIsSuccessful(false); |
||
344 | |||
345 | $companyUserResponseTransfer = $this->addErrorsToResponse( |
||
346 | $companyUserResponseTransfer, |
||
347 | $customerResponseTransfer->getErrors(), |
||
348 | ); |
||
349 | |||
350 | return $companyUserResponseTransfer; |
||
351 | } |
||
352 | |||
353 | /** |
||
354 | * @param \Generated\Shared\Transfer\CompanyResponseTransfer $companyResponseTransfer |
||
355 | * |
||
356 | * @return \Generated\Shared\Transfer\CompanyResponseTransfer |
||
357 | */ |
||
358 | public function createInitialCompanyUser(CompanyResponseTransfer $companyResponseTransfer): CompanyResponseTransfer |
||
359 | { |
||
360 | $companyResponseTransfer->getCompanyTransfer()->requireIdCompany()->requireInitialUserTransfer(); |
||
361 | |||
362 | $companyTransfer = $companyResponseTransfer->getCompanyTransfer(); |
||
363 | $companyUserTransfer = $companyTransfer->getInitialUserTransfer() |
||
364 | ->setFkCompany($companyTransfer->getIdCompany()); |
||
365 | |||
366 | $companyUserResponseTransfer = $this->create($companyUserTransfer); |
||
367 | |||
368 | $companyResponseTransfer->getCompanyTransfer()->setInitialUserTransfer($companyUserResponseTransfer->getCompanyUser()); |
||
369 | $companyResponseTransfer->setIsSuccessful($companyUserResponseTransfer->getIsSuccessful()); |
||
370 | $this->addMessagesToCompanyResponse($companyUserResponseTransfer->getMessages(), $companyResponseTransfer); |
||
371 | |||
372 | return $companyResponseTransfer; |
||
373 | } |
||
374 | |||
375 | /** |
||
376 | * @param \Generated\Shared\Transfer\CompanyUserTransfer $companyUserTransfer |
||
377 | * |
||
378 | * @return \Generated\Shared\Transfer\CompanyUserTransfer|null |
||
379 | */ |
||
380 | public function findActiveCompanyUserByUuid(CompanyUserTransfer $companyUserTransfer): ?CompanyUserTransfer |
||
381 | { |
||
382 | $companyUserTransfer->requireUuid(); |
||
383 | $companyUserTransfer = $this->companyUserRepository->findActiveCompanyUserByUuid($companyUserTransfer->getUuid()); |
||
384 | if ($companyUserTransfer !== null) { |
||
385 | return $this->companyUserPluginExecutor->executeHydrationPlugins($companyUserTransfer); |
||
386 | } |
||
387 | |||
388 | return null; |
||
389 | } |
||
390 | |||
391 | /** |
||
392 | * @param \ArrayObject<int, \Generated\Shared\Transfer\ResponseMessageTransfer> $messages |
||
393 | * @param \Generated\Shared\Transfer\CompanyResponseTransfer $companyResponseTransfer |
||
394 | * |
||
395 | * @return \Generated\Shared\Transfer\CompanyResponseTransfer |
||
396 | */ |
||
397 | protected function addMessagesToCompanyResponse( |
||
398 | ArrayObject $messages, |
||
399 | CompanyResponseTransfer $companyResponseTransfer |
||
400 | ): CompanyResponseTransfer { |
||
401 | foreach ($messages as $messageTransfer) { |
||
402 | $companyResponseTransfer->addMessage($messageTransfer); |
||
403 | } |
||
404 | |||
405 | return $companyResponseTransfer; |
||
406 | } |
||
407 | |||
408 | /** |
||
409 | * @param \Generated\Shared\Transfer\CompanyUserResponseTransfer $companyUserResponseTransfer |
||
410 | * @param \ArrayObject<int, \Generated\Shared\Transfer\CustomerErrorTransfer> $errors |
||
411 | * |
||
412 | * @return \Generated\Shared\Transfer\CompanyUserResponseTransfer |
||
413 | */ |
||
414 | protected function addErrorsToResponse(CompanyUserResponseTransfer $companyUserResponseTransfer, ArrayObject $errors): CompanyUserResponseTransfer |
||
415 | { |
||
416 | foreach ($errors as $error) { |
||
417 | $companyUserResponseTransfer->addMessage( |
||
418 | (new ResponseMessageTransfer())->setText($error->getMessage()), |
||
419 | ); |
||
420 | } |
||
421 | |||
422 | return $companyUserResponseTransfer; |
||
423 | } |
||
424 | |||
425 | /** |
||
426 | * @param \Generated\Shared\Transfer\CompanyUserTransfer $companyUserTransfer |
||
427 | * |
||
428 | * @return \Generated\Shared\Transfer\CompanyUserResponseTransfer |
||
429 | */ |
||
430 | public function deleteCompanyUser(CompanyUserTransfer $companyUserTransfer): CompanyUserResponseTransfer |
||
431 | { |
||
432 | return $this->getTransactionHandler()->handleTransaction(function () use ($companyUserTransfer) { |
||
433 | $companyUserTransfer->requireIdCompanyUser(); |
||
434 | |||
435 | return $this->executeDeleteCompanyUserTransaction($companyUserTransfer); |
||
436 | }); |
||
437 | } |
||
438 | |||
439 | /** |
||
440 | * @param \Generated\Shared\Transfer\CompanyUserTransfer $companyUserTransfer |
||
441 | * |
||
442 | * @return \Generated\Shared\Transfer\CompanyUserResponseTransfer |
||
443 | */ |
||
444 | protected function executeDeleteCompanyUserTransaction(CompanyUserTransfer $companyUserTransfer): CompanyUserResponseTransfer |
||
445 | { |
||
446 | $this->companyUserPluginExecutor->executePreDeletePlugins($companyUserTransfer); |
||
447 | |||
448 | $this->companyUserEntityManager->deleteCompanyUserById($companyUserTransfer->getIdCompanyUser()); |
||
449 | |||
450 | return (new CompanyUserResponseTransfer())->setIsSuccessful(true); |
||
451 | } |
||
452 | |||
453 | /** |
||
454 | * @param \Generated\Shared\Transfer\CompanyUserTransfer $companyUserTransfer |
||
455 | * |
||
456 | * @return \Generated\Shared\Transfer\CompanyUserResponseTransfer |
||
457 | */ |
||
458 | protected function executeSavePreCheckPlugins(CompanyUserTransfer $companyUserTransfer): CompanyUserResponseTransfer |
||
459 | { |
||
460 | foreach ($this->companyUserSavePreCheckPlugins as $companyUserSavePreCheckPlugin) { |
||
461 | $companyUserResponseTransfer = $companyUserSavePreCheckPlugin->check($companyUserTransfer); |
||
462 | if (!$companyUserResponseTransfer->getIsSuccessful()) { |
||
463 | return $companyUserResponseTransfer; |
||
464 | } |
||
465 | } |
||
466 | |||
467 | return (new CompanyUserResponseTransfer()) |
||
468 | ->setCompanyUser($companyUserTransfer) |
||
469 | ->setIsSuccessful(true); |
||
470 | } |
||
471 | |||
472 | /** |
||
473 | * @param int $idCompanyUser |
||
474 | * |
||
475 | * @return \Generated\Shared\Transfer\CompanyUserTransfer|null |
||
476 | */ |
||
477 | public function findCompanyUserById(int $idCompanyUser): ?CompanyUserTransfer |
||
478 | { |
||
479 | $companyUserTransfer = $this->companyUserRepository->findCompanyUserById($idCompanyUser); |
||
480 | |||
481 | if ($companyUserTransfer !== null) { |
||
482 | return $this->companyUserPluginExecutor->executeHydrationPlugins($companyUserTransfer); |
||
483 | } |
||
484 | |||
485 | return null; |
||
486 | } |
||
487 | |||
488 | /** |
||
489 | * @param \Generated\Shared\Transfer\CompanyUserCriteriaTransfer $companyUserCriteriaTransfer |
||
490 | * |
||
491 | * @return \Generated\Shared\Transfer\CompanyUserCollectionTransfer |
||
492 | */ |
||
493 | public function getCompanyUserCollectionByCriteria(CompanyUserCriteriaTransfer $companyUserCriteriaTransfer): CompanyUserCollectionTransfer |
||
494 | { |
||
495 | $companyUserCollectionTransfer = $this->companyUserRepository |
||
496 | ->getCompanyUserCollectionByCriteria($companyUserCriteriaTransfer); |
||
497 | |||
498 | foreach ($companyUserCollectionTransfer->getCompanyUsers() as &$companyUserTransfer) { |
||
0 ignored issues
–
show
The expression
$companyUserCollectionTransfer->getCompanyUsers() cannot be used as a reference.
Let?s assume that you have the following foreach ($array as &$itemValue) { }
However, if we were to replace foreach (getArray() as &$itemValue) { }
then assigning by reference is not possible anymore as there is no target that could be modified. Available Fixes1. Do not assign by referenceforeach (getArray() as $itemValue) { }
2. Assign to a local variable first$array = getArray();
foreach ($array as &$itemValue) {}
3. Return a referencefunction &getArray() { $array = array(); return $array; }
foreach (getArray() as &$itemValue) { }
![]() |
|||
499 | $this->companyUserPluginExecutor->executeHydrationPlugins($companyUserTransfer); |
||
500 | } |
||
501 | |||
502 | return $companyUserCollectionTransfer; |
||
503 | } |
||
504 | } |
||
505 |
Let?s assume that you have the following
foreach
statement:$itemValue
is assigned by reference. This is possible because the expression (in the example$array
) can be used as a reference target.However, if we were to replace
$array
with something different like the result of a function call as inthen assigning by reference is not possible anymore as there is no target that could be modified.
Available Fixes
1. Do not assign by reference
2. Assign to a local variable first
3. Return a reference