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); + } + } +}