formula attribute fetch phone email

This commit is contained in:
Yuri Kuznetsov
2022-12-09 13:23:53 +02:00
parent 7b9c6cdb3f
commit 87c5371846
3 changed files with 52 additions and 2 deletions
@@ -29,9 +29,13 @@
namespace Espo\Core\Formula;
use Espo\Entities\EmailAddress;
use Espo\Entities\PhoneNumber;
use Espo\ORM\Entity;
use Espo\Core\ORM\Entity as CoreEntity;
use Espo\ORM\EntityManager;
use Espo\Repositories\EmailAddress as EmailAddressRepository;
use Espo\Repositories\PhoneNumber as PhoneNumberRepository;
/**
* Fetches attributes from an entity.
@@ -111,6 +115,44 @@ class AttributeFetcher
return;
}
if ($entity->getAttributeParam($attribute, 'isEmailAddressData')) {
/** @var ?string $fieldName */
$fieldName = $entity->getAttributeParam($attribute, 'field');
if (!$fieldName) {
return;
}
/** @var EmailAddressRepository $emailAddressRepository */
$emailAddressRepository = $this->entityManager->getRepository(EmailAddress::ENTITY_TYPE);
$data = $emailAddressRepository->getEmailAddressData($entity);
$entity->set($attribute, $data);
$entity->setFetched($attribute, $data);;
return;
}
if ($entity->getAttributeParam($attribute, 'isPhoneNumberData')) {
/** @var ?string $fieldName */
$fieldName = $entity->getAttributeParam($attribute, 'field');
if (!$fieldName) {
return;
}
/** @var PhoneNumberRepository $phoneNumberRepository */
$phoneNumberRepository = $this->entityManager->getRepository(PhoneNumber::ENTITY_TYPE);
$data = $phoneNumberRepository->getPhoneNumberData($entity);
$entity->set($attribute, $data);
$entity->setFetched($attribute, $data);;
return;
}
}
public function resetRuntimeCache(): void
@@ -29,6 +29,8 @@
namespace Espo\Core\Utils\Database\Orm\Fields;
use Espo\ORM\Entity;
class Email extends Base
{
/**
@@ -174,9 +176,11 @@ class Email extends Base
'fields' => [
$fieldName => $mainFieldDefs,
$fieldName . 'Data' => [
'type' => 'text',
'type' => Entity::JSON_ARRAY,
'notStorable' => true,
'notExportable' => true,
'isEmailAddressData' => true,
'field' => $fieldName,
],
$fieldName .'IsOptedOut' => [
'type' => 'bool',
@@ -29,6 +29,8 @@
namespace Espo\Core\Utils\Database\Orm\Fields;
use Espo\ORM\Entity;
class Phone extends Base
{
/**
@@ -270,9 +272,11 @@ class Phone extends Base
'fields' => [
$fieldName => $mainFieldDefs,
$fieldName . 'Data' => [
'type' => 'text',
'type' => Entity::JSON_ARRAY,
'notStorable' => true,
'notExportable' => true,
'isPhoneNumberData' => true,
'field' => $fieldName,
],
$fieldName .'IsOptedOut' => [
'type' => 'bool',