From a80c3e2ecfaae259fe41903985d2fb8ede08782b Mon Sep 17 00:00:00 2001 From: Yuri Kuznetsov Date: Mon, 6 Jan 2025 16:47:09 +0200 Subject: [PATCH] meeting cancelation fix --- .../Crm/Tools/Meeting/Invitation/Sender.php | 22 ++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/application/Espo/Modules/Crm/Tools/Meeting/Invitation/Sender.php b/application/Espo/Modules/Crm/Tools/Meeting/Invitation/Sender.php index 2f8fa90a3e..25cf0e6095 100644 --- a/application/Espo/Modules/Crm/Tools/Meeting/Invitation/Sender.php +++ b/application/Espo/Modules/Crm/Tools/Meeting/Invitation/Sender.php @@ -99,7 +99,7 @@ class Sender */ private function sendInternal(Meeting|Call $entity, string $type, ?array $targets): array { - $this->checkStatus($entity); + $this->checkStatus($entity, $type); $linkList = [ 'users', @@ -187,17 +187,33 @@ class Sender /** * @throws Forbidden */ - private function checkStatus(Meeting|Call $entity): void + private function checkStatus(Meeting|Call $entity, string $type): void { $entityType = $entity->getEntityType(); + if ($type === self::TYPE_CANCELLATION) { + if (!in_array($entity->getStatus(), $this->getCanceledStatusList($entityType))) { + throw new Forbidden("Can't send invitation for not canceled event."); + } + + return; + } + $notActualStatusList = [ ...($this->metadata->get("scopes.$entityType.completedStatusList") ?? []), - ...($this->metadata->get("scopes.$entityType.canceledStatusList") ?? []), + ...$this->getCanceledStatusList($entityType), ]; if (in_array($entity->getStatus(), $notActualStatusList)) { throw new Forbidden("Can't send invitation for not actual event."); } } + + /** + * @return string[] + */ + private function getCanceledStatusList(string $entityType): array + { + return $this->metadata->get("scopes.$entityType.canceledStatusList") ?? []; + } }