1: <?php
2: namespace TIC\MailBundle\Repository;
3:
4: #use Doctrine\ORM\EntityRepository as BaseRepository;
5: use TIC\DormBundle\Base\TICRepository as BaseRepository;
6: use TIC\MailBundle\Entity\Maillog as Entity;
7:
8: /**
9: * Repository pour requêtes sur les entités des évènements du journal d'envoi.
10: */
11: class MaillogRepository extends BaseRepository
12: {
13:
14: /**
15: * @var Listing default order
16: */
17: public $sortBy = ['createdAt' => 'DESC'];
18:
19: /**
20: * Retourne la liste des évènement du journal pour un modèle triée avec l'ordre par défaut.
21: *
22: * @param string $ref Référence d'un modèle (template)
23: * @param array $filters Filtres optionnels pour la recherche
24: * @return array Liste d'entités \TIC\MailBundle\Entity\Maillog
25: */
26: public function listAllByTemplate(string $ref, array $filters = []): array
27: {
28: $filters['template'] = \strtolower(\trim($ref));
29: return $this->findBy($filters, $this->sortBy);
30: }
31:
32: /**
33: * Enregistrement d'un évènement d'envoi dans la table des journaux.
34: *
35: * @param array $data Données à importer dans l'évènement du journal (clés/valeurs)
36: * @return integer Clé primaire (id) de l'entité Maillog enregistrée
37: */
38: public function createEventLog(array $data = []): int
39: {
40: $item = new Entity($data);
41:
42: $em = $this->getEntityManager();
43: $em->persist($item);
44: $em->flush();
45:
46: return $item->getId();
47: }
48:
49: }
50: