File size: 1,108 Bytes
d2897cd
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?php

declare(strict_types=1);

namespace Mautic\EmailBundle\Model;

use Doctrine\ORM\EntityManagerInterface;
use Mautic\EmailBundle\EmailEvents;
use Mautic\EmailBundle\Entity\Stat;
use Mautic\EmailBundle\Entity\StatRepository;
use Mautic\EmailBundle\Event\EmailStatEvent;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;

class EmailStatModel
{
    public function __construct(private EntityManagerInterface $entityManager, private EventDispatcherInterface $dispatcher)
    {
    }

    public function saveEntity(Stat $stat): void
    {
        $this->saveEntities([$stat]);
    }

    /**
     * @param Stat[] $stats
     */
    public function saveEntities(array $stats): void
    {
        $event = new EmailStatEvent($stats);

        $this->dispatcher->dispatch($event, EmailEvents::ON_EMAIL_STAT_PRE_SAVE);

        $this->getRepository()->saveEntities($stats);

        $this->dispatcher->dispatch($event, EmailEvents::ON_EMAIL_STAT_POST_SAVE);
    }

    public function getRepository(): StatRepository
    {
        return $this->entityManager->getRepository(Stat::class);
    }
}