From 0a4ee2f949ff9abae9af0669a5d9c0aeff96beda Mon Sep 17 00:00:00 2001 From: Yurii Date: Wed, 3 Dec 2025 15:40:22 +0200 Subject: [PATCH] note removal on email removal --- application/Espo/Hooks/Email/NoteRemove.php | 43 +++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 application/Espo/Hooks/Email/NoteRemove.php diff --git a/application/Espo/Hooks/Email/NoteRemove.php b/application/Espo/Hooks/Email/NoteRemove.php new file mode 100644 index 0000000000..73f99c7ad6 --- /dev/null +++ b/application/Espo/Hooks/Email/NoteRemove.php @@ -0,0 +1,43 @@ + + */ +class NoteRemove implements AfterRemove +{ + private const int LIMIT = 5; + + public function __construct( + private EntityManager $entityManager, + ) {} + + public function afterRemove(Entity $entity, RemoveOptions $options): void + { + $notes = $this->entityManager + ->getRDBRepositoryByClass(Note::class) + ->sth() + ->where([ + 'relatedId' => $entity->getId(), + 'relatedType' => $entity->getEntityType(), + 'type' => [ + Note::TYPE_EMAIL_RECEIVED, + Note::TYPE_EMAIL_SENT, + ], + ]) + ->limit(self::LIMIT) + ->find(); + + foreach ($notes as $note) { + $this->entityManager->removeEntity($note); + } + } +}