This commit is contained in:
Yuri Kuznetsov
2025-01-17 22:10:18 +02:00
parent 7022be3636
commit 982df272d5
6 changed files with 44 additions and 30 deletions
@@ -30,7 +30,10 @@
namespace Espo\Classes\FieldProcessing\Email;
use Espo\Core\Name\Field;
use Espo\Entities\User;
use Espo\Modules\Crm\Entities\Call;
use Espo\Modules\Crm\Entities\Contact;
use Espo\Modules\Crm\Entities\Lead;
use Espo\Modules\Crm\Entities\Meeting;
use Espo\ORM\Entity;
use Espo\ORM\EntityManager;
@@ -57,9 +60,9 @@ class IcsDataLoader implements Loader
{
/** @var array<string, string> */
private $entityTypeLinkMap = [
'User' => 'users',
'Contact' => 'contacts',
'Lead' => 'leads',
User::ENTITY_TYPE => Meeting::LINK_USERS,
Contact::ENTITY_TYPE => Meeting::LINK_CONTACTS,
Lead::ENTITY_TYPE => Meeting::LINK_LEADS,
];
public function __construct(private EntityManager $entityManager, private Log $log)
@@ -291,7 +291,9 @@ class Invitations
$attendees = [];
/** @var iterable<User> $users */
$users = $this->entityManager->getRelation($entity, 'users')->find();
$users = $this->entityManager
->getRelation($entity, Meeting::LINK_USERS)
->find();
foreach ($users as $it) {
$address = $it->getEmailAddress();
@@ -303,7 +305,9 @@ class Invitations
}
/** @var iterable<Contact> $contacts */
$contacts = $this->entityManager->getRelation($entity, 'contacts')->find();
$contacts = $this->entityManager
->getRelation($entity, Meeting::LINK_CONTACTS)
->find();
foreach ($contacts as $it) {
$address = $it->getEmailAddress();
@@ -315,7 +319,9 @@ class Invitations
}
/** @var iterable<Lead> $leads */
$leads = $this->entityManager->getRelation($entity, 'leads')->find();
$leads = $this->entityManager
->getRelation($entity, Meeting::LINK_LEADS)
->find();
foreach ($leads as $it) {
$address = $it->getEmailAddress();
@@ -334,7 +340,9 @@ class Invitations
$timeZone = $this->applicationConfig->getTimeZone();
if ($invitee instanceof User) {
$preferences = $this->entityManager->getRepositoryByClass(Preferences::class)->getById($invitee->getId());
$preferences = $this->entityManager
->getRepositoryByClass(Preferences::class)
->getById($invitee->getId());
if ($preferences && $preferences->getTimeZone()) {
$timeZone = $preferences->getTimeZone();
@@ -30,6 +30,9 @@
namespace Espo\Modules\Crm\Classes\FieldProcessing\Call;
use Espo\Modules\Crm\Entities\Call;
use Espo\Modules\Crm\Entities\Contact;
use Espo\Modules\Crm\Entities\Lead;
use Espo\Modules\Crm\Entities\Meeting;
use Espo\ORM\Entity;
use Espo\Core\ORM\Entity as CoreEntity;
use Espo\Core\FieldProcessing\Loader;
@@ -55,16 +58,16 @@ class PhoneNumberMapLoader implements Loader
assert($entity instanceof CoreEntity);
$contactIdList = $entity->getLinkMultipleIdList('contacts');
$contactIdList = $entity->getLinkMultipleIdList(Meeting::LINK_CONTACTS);
if (count($contactIdList)) {
$this->populate($map, 'Contact', $contactIdList);
$this->populate($map, Contact::ENTITY_TYPE, $contactIdList);
}
$leadIdList = $entity->getLinkMultipleIdList('leads');
$leadIdList = $entity->getLinkMultipleIdList(Meeting::LINK_LEADS);
if (count($leadIdList)) {
$this->populate($map, 'Lead', $leadIdList);
$this->populate($map, Lead::ENTITY_TYPE, $leadIdList);
}
$entity->set('phoneNumbersMap', $map);
@@ -131,34 +131,34 @@ class Call extends Entity
public function getUsers(): LinkMultiple
{
/** @var LinkMultiple */
return $this->getValueObject('users');
return $this->getValueObject(Meeting::LINK_USERS);
}
public function getContacts(): LinkMultiple
{
/** @var LinkMultiple */
return $this->getValueObject('contacts');
return $this->getValueObject(Meeting::LINK_CONTACTS);
}
public function getLeads(): LinkMultiple
{
/** @var LinkMultiple */
return $this->getValueObject('leads');
return $this->getValueObject(Meeting::LINK_LEADS);
}
public function setUsers(LinkMultiple $users): self
{
return $this->setValueObject('users', $users);
return $this->setValueObject(Meeting::LINK_USERS, $users);
}
public function setContacts(LinkMultiple $contacts): self
{
return $this->setValueObject('contacts', $contacts);
return $this->setValueObject(Meeting::LINK_CONTACTS, $contacts);
}
public function setLeads(LinkMultiple $leads): self
{
return $this->setValueObject('leads', $leads);
return $this->setValueObject(Meeting::LINK_LEADS, $leads);
}
public function setParent(Entity|LinkParent|null $parent): self
@@ -51,6 +51,10 @@ class Meeting extends Entity
public const STATUS_HELD = 'Held';
public const STATUS_NOT_HELD = 'Not Held';
public const LINK_USERS = 'users';
public const LINK_CONTACTS = 'contacts';
public const LINK_LEADS = 'leads';
public function setName(?string $name): self
{
return $this->set(Field::NAME, $name);
@@ -136,34 +140,34 @@ class Meeting extends Entity
public function getUsers(): LinkMultiple
{
/** @var LinkMultiple */
return $this->getValueObject('users');
return $this->getValueObject(self::LINK_USERS);
}
public function getContacts(): LinkMultiple
{
/** @var LinkMultiple */
return $this->getValueObject('contacts');
return $this->getValueObject(self::LINK_CONTACTS);
}
public function getLeads(): LinkMultiple
{
/** @var LinkMultiple */
return $this->getValueObject('leads');
return $this->getValueObject(self::LINK_LEADS);
}
public function setUsers(LinkMultiple $users): self
{
return $this->setValueObject('users', $users);
return $this->setValueObject(self::LINK_USERS, $users);
}
public function setContacts(LinkMultiple $contacts): self
{
return $this->setValueObject('contacts', $contacts);
return $this->setValueObject(self::LINK_CONTACTS, $contacts);
}
public function setLeads(LinkMultiple $leads): self
{
return $this->setValueObject('leads', $leads);
return $this->setValueObject(self::LINK_LEADS, $leads);
}
public function setParent(Entity|LinkParent|null $parent): self
@@ -30,7 +30,6 @@
namespace Espo\Modules\Crm\Tools\Meeting\Invitation;
use Espo\Core\Binding\BindingContainerBuilder;
use Espo\Core\Exceptions\Error;
use Espo\Core\Exceptions\Forbidden;
use Espo\Core\InjectableFactory;
use Espo\Core\Mail\Exceptions\SendingError;
@@ -67,7 +66,6 @@ class Sender
* @param Meeting|Call $entity
* @param ?Invitee[] $targets
* @return Entity[] Entities an invitation was sent to.
* @throws Error
* @throws SendingError
* @throws Forbidden
*/
@@ -80,7 +78,6 @@ class Sender
* @param Meeting|Call $entity
* @param ?Invitee[] $targets
* @return Entity[] Entities an invitation was sent to.
* @throws Error
* @throws SendingError
* @throws Forbidden
*/
@@ -93,7 +90,6 @@ class Sender
/**
* @param ?Invitee[] $targets
* @return Entity[]
* @throws Error
* @throws SendingError
* @throws Forbidden
*/
@@ -102,9 +98,9 @@ class Sender
$this->checkStatus($entity, $type);
$linkList = [
'users',
'contacts',
'leads',
Meeting::LINK_USERS,
Meeting::LINK_CONTACTS,
Meeting::LINK_LEADS,
];
$sender = $this->getSender();