Code Duplication    Length = 50-51 lines in 2 locations

src/Service/Creator.php 1 location

@@ 10-60 (lines=51) @@
7
use T4webDomainInterface\EntityFactoryInterface;
8
use T4webDomainInterface\EventManagerInterface;
9
10
class Creator implements ServiceInterface
11
{
12
    /**
13
     * @var RepositoryInterface
14
     */
15
    protected $repository;
16
17
    /**
18
     * @var EntityFactoryInterface
19
     */
20
    protected $entityFactory;
21
22
    /**
23
     * @var EventManagerInterface
24
     */
25
    protected $eventManager;
26
27
    /**
28
     * @param RepositoryInterface $repository
29
     * @param EntityFactoryInterface $entityFactory
30
     * @param EventManagerInterface|null $eventManager
31
     */
32
    public function __construct(
33
        RepositoryInterface $repository,
34
        EntityFactoryInterface $entityFactory,
35
        EventManagerInterface $eventManager = null
36
    ) {
37
        $this->repository = $repository;
38
        $this->entityFactory = $entityFactory;
39
        $this->eventManager = $eventManager;
40
    }
41
42
    public function handle($criteria, $data)
43
    {
44
        $entity = $this->entityFactory->create($data);
45
46
        if ($this->eventManager) {
47
            $event = $this->eventManager->createEvent('create.pre', $entity, $data);
48
            $this->eventManager->trigger($event);
49
        }
50
51
        $this->repository->add($entity);
52
53
        if ($this->eventManager) {
54
            $event = $this->eventManager->createEvent('create.post', $entity, $data);
55
            $this->eventManager->trigger($event);
56
        }
57
58
        return $entity;
59
    }
60
}
61

src/Service/Deleter.php 1 location

@@ 13-62 (lines=50) @@
10
use T4webDomainInterface\Infrastructure\RepositoryInterface;
11
use T4webDomainInterface\EventManagerInterface;
12
13
class Deleter implements ServiceInterface
14
{
15
    /**
16
     *
17
     * @var RepositoryInterface
18
     */
19
    protected $repository;
20
21
    /**
22
     * @var EventManagerInterface
23
     */
24
    protected $eventManager;
25
26
    /**
27
     * @param RepositoryInterface $repository
28
     */
29
    public function __construct(RepositoryInterface $repository, EventManagerInterface $eventManager = null)
30
    {
31
        $this->repository = $repository;
32
        $this->eventManager = $eventManager;
33
    }
34
35
    /**
36
     * @return EntityInterface
37
     */
38
    public function handle($filter, $changes)
39
    {
40
        /** @var CriteriaInterface $criteria */
41
        $criteria = $this->repository->createCriteria($filter);
42
        $entity = $this->repository->find($criteria);
43
44
        if (!$entity) {
45
            throw new EntityNotFoundException("Entity does not found.");
46
        }
47
48
        if ($this->eventManager) {
49
            $event = $this->eventManager->createEvent('delete.pre', $entity);
50
            $this->eventManager->trigger($event);
51
        }
52
53
        $this->repository->remove($entity);
54
55
        if ($this->eventManager) {
56
            $event = $this->eventManager->createEvent('delete.post', $entity);
57
            $this->eventManager->trigger($event);
58
        }
59
60
        return $entity;
61
    }
62
}
63