From 660482f042b8ac6045ccbb0ee45ff889584bb619 Mon Sep 17 00:00:00 2001 From: Yurii Date: Fri, 13 Dec 2024 11:09:01 +0200 Subject: [PATCH] source email id fix --- .../Meeting/SourceEmailSaver.php | 14 +++++++++++++- .../Espo/Modules/Crm/Entities/Meeting.php | 6 ------ .../Espo/Modules/Crm/Hooks/Meeting/Uid.php | 17 +++++++++++++++-- .../Crm/Resources/i18n/en_US/Meeting.json | 4 +--- .../Resources/metadata/entityDefs/Meeting.json | 7 +------ 5 files changed, 30 insertions(+), 18 deletions(-) diff --git a/application/Espo/Modules/Crm/Classes/FieldProcessing/Meeting/SourceEmailSaver.php b/application/Espo/Modules/Crm/Classes/FieldProcessing/Meeting/SourceEmailSaver.php index 524c94c38d..6535f8d379 100644 --- a/application/Espo/Modules/Crm/Classes/FieldProcessing/Meeting/SourceEmailSaver.php +++ b/application/Espo/Modules/Crm/Classes/FieldProcessing/Meeting/SourceEmailSaver.php @@ -29,6 +29,7 @@ namespace Espo\Modules\Crm\Classes\FieldProcessing\Meeting; +use Espo\Entities\Email; use Espo\Modules\Crm\Entities\Meeting; use Espo\ORM\Entity; use Espo\ORM\EntityManager; @@ -55,7 +56,7 @@ class SourceEmailSaver implements Saver return; } - $email = $entity->getSourceEmail(); + $email = $this->getEmail($entity); if (!$email) { return; @@ -79,4 +80,15 @@ class SourceEmailSaver implements Saver $this->entityManager->saveEntity($email); } + + private function getEmail(Meeting $entity): ?Email + { + $emailId = $entity->get('sourceEmailId'); + + if (!$emailId) { + return null; + } + + return $this->entityManager->getRDBRepositoryByClass(Email::class)->getById($emailId); + } } diff --git a/application/Espo/Modules/Crm/Entities/Meeting.php b/application/Espo/Modules/Crm/Entities/Meeting.php index debceaaa2d..cd8a3b0359 100644 --- a/application/Espo/Modules/Crm/Entities/Meeting.php +++ b/application/Espo/Modules/Crm/Entities/Meeting.php @@ -187,10 +187,4 @@ class Meeting extends Entity { return $this->set('uid', $uid); } - - public function getSourceEmail(): ?Email - { - /** @var ?Email */ - return $this->relations->getOne('sourceEmail'); - } } diff --git a/application/Espo/Modules/Crm/Hooks/Meeting/Uid.php b/application/Espo/Modules/Crm/Hooks/Meeting/Uid.php index ffedb63147..ab0c87790b 100644 --- a/application/Espo/Modules/Crm/Hooks/Meeting/Uid.php +++ b/application/Espo/Modules/Crm/Hooks/Meeting/Uid.php @@ -32,8 +32,10 @@ namespace Espo\Modules\Crm\Hooks\Meeting; use Espo\Core\Hook\Hook\BeforeSave; use Espo\Core\Mail\Event\EventFactory; use Espo\Core\Utils\Util; +use Espo\Entities\Email; use Espo\Modules\Crm\Entities\Meeting; use Espo\ORM\Entity; +use Espo\ORM\EntityManager; use Espo\ORM\Repository\Option\SaveOptions; use ICal\ICal; @@ -42,7 +44,7 @@ use ICal\ICal; */ class Uid implements BeforeSave { - public function __construct() {} + public function __construct(private EntityManager $entityManager) {} public function beforeSave(Entity $entity, SaveOptions $options): void { @@ -68,7 +70,7 @@ class Uid implements BeforeSave private function getIcsUid(Meeting $entity): ?string { - $email = $entity->getSourceEmail(); + $email = $this->getEmail($entity); if (!$email) { return null; @@ -88,4 +90,15 @@ class Uid implements BeforeSave return $espoEvent->getUid(); } + + private function getEmail(Meeting $entity): ?Email + { + $emailId = $entity->get('sourceEmailId'); + + if (!$emailId) { + return null; + } + + return $this->entityManager->getRDBRepositoryByClass(Email::class)->getById($emailId); + } } diff --git a/application/Espo/Modules/Crm/Resources/i18n/en_US/Meeting.json b/application/Espo/Modules/Crm/Resources/i18n/en_US/Meeting.json index ba03cb0d11..11779c8fb1 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/en_US/Meeting.json +++ b/application/Espo/Modules/Crm/Resources/i18n/en_US/Meeting.json @@ -19,9 +19,7 @@ "sourceEmail": "Source Email", "uid": "UID" }, - "links": { - "sourceEmail": "Source Email" - }, + "links": {}, "options": { "status": { "Planned": "Planned", diff --git a/application/Espo/Modules/Crm/Resources/metadata/entityDefs/Meeting.json b/application/Espo/Modules/Crm/Resources/metadata/entityDefs/Meeting.json index e747cff7b7..07a66fd945 100644 --- a/application/Espo/Modules/Crm/Resources/metadata/entityDefs/Meeting.json +++ b/application/Espo/Modules/Crm/Resources/metadata/entityDefs/Meeting.json @@ -301,7 +301,7 @@ "layoutFiltersDisabled": true, "exportDisabled": true, "importDisabled": true, - "entity": "TargetList", + "entity": "Email", "directAccessDisabled": true }, "createdAt": { @@ -411,11 +411,6 @@ "parent": { "type": "belongsToParent", "foreign": "meetings" - }, - "sourceEmail": { - "type": "belongsTo", - "entity": "Email", - "noJoin": true } }, "collection": {