DefaultUsernameListener   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 32
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 4

Importance

Changes 4
Bugs 1 Features 2
Metric Value
wmc 5
c 4
b 1
f 2
lcom 0
cbo 4
dl 0
loc 32
rs 10

1 Method

Rating   Name   Duplication   Size   Complexity  
B onFlush() 0 26 5
1
<?php
2
3
namespace DoS\UserBundle\EventListener;
4
5
use Sylius\Component\User\Model\CustomerInterface;
6
use Doctrine\ORM\Event\OnFlushEventArgs;
7
8
class DefaultUsernameListener
9
{
10
    /**
11
     * @param OnFlushEventArgs $onFlushEventArgs
12
     */
13
    public function onFlush(OnFlushEventArgs $onFlushEventArgs)
14
    {
15
        $entityManager = $onFlushEventArgs->getEntityManager();
16
        $unitOfWork = $entityManager->getUnitOfWork();
17
18
        $entities = array_merge(
19
            $unitOfWork->getScheduledEntityInsertions(),
20
            $unitOfWork->getScheduledEntityUpdates()
21
        );
22
23
        foreach ($entities as $entity) {
24
            if (!$entity instanceof CustomerInterface) {
25
                continue;
26
            }
27
28
            $user = $entity->getUser();
29
30
            if (null !== $user && $user->getUsername() === null) {
31
                $user->setUsername($entity->getEmail());
32
                $user->setUsernameCanonical($user->getEmail());
33
                $entityManager->persist($user);
34
                $userMetadata = $entityManager->getClassMetadata(get_class($user));
35
                $unitOfWork->recomputeSingleEntityChangeSet($userMetadata, $user);
36
            }
37
        }
38
    }
39
}
40