This commit is contained in:
Yuri Kuznetsov
2024-09-13 15:03:03 +03:00
parent 610d7215c8
commit bb2d1650a8
3 changed files with 9 additions and 63 deletions
@@ -29,55 +29,7 @@
namespace Espo\Classes\Select\Email\Where\ItemConverters;
use Espo\Core\Select\Helpers\RandomStringGenerator;
use Espo\Core\Select\Where\Item;
use Espo\Core\Select\Where\ItemConverter;
use Espo\Classes\Select\Email\Helpers\EmailAddressHelper;
use Espo\ORM\Query\Part\WhereClause;
use Espo\ORM\Query\Part\WhereItem as WhereClauseItem;
use Espo\ORM\Query\SelectBuilder as QueryBuilder;
class CcEquals implements ItemConverter
class CcEquals extends ToEquals
{
public function __construct(
private EmailAddressHelper $emailAddressHelper,
private RandomStringGenerator $randomStringGenerator
) {}
public function convert(QueryBuilder $queryBuilder, Item $item): WhereClauseItem
{
$value = $item->getValue();
if (!$value) {
return WhereClause::fromRaw([
'id' => null,
]);
}
$emailAddressId = $this->emailAddressHelper->getEmailAddressIdByValue($value);
if (!$emailAddressId) {
return WhereClause::fromRaw([
'id' => null,
]);
}
$queryBuilder->distinct();
$alias = 'emailEmailAddress' . $this->randomStringGenerator->generate();
$queryBuilder->leftJoin(
'EmailEmailAddress',
$alias,
[
'emailId:' => 'id',
'deleted' => false,
]
);
return WhereClause::fromRaw([
$alias . '.emailAddressId' => $emailAddressId,
$alias . '.addressType' => 'cc',
]);
}
protected string $addressType = 'cc';
}
@@ -49,17 +49,13 @@ class EmailAddressEquals implements ItemConverter
$value = $item->getValue();
if (!$value) {
return WhereClause::fromRaw([
'id' => null,
]);
return WhereClause::fromRaw(['id' => null]);
}
$emailAddressId = $this->emailAddressHelper->getEmailAddressIdByValue($value);
if (!$emailAddressId) {
return WhereClause::fromRaw([
'id' => null,
]);
return WhereClause::fromRaw(['id' => null]);
}
$queryBuilder->distinct();
@@ -39,6 +39,8 @@ use Espo\ORM\Query\SelectBuilder as QueryBuilder;
class ToEquals implements ItemConverter
{
protected string $addressType = 'to';
public function __construct(
private EmailAddressHelper $emailAddressHelper,
private RandomStringGenerator $randomStringGenerator
@@ -49,17 +51,13 @@ class ToEquals implements ItemConverter
$value = $item->getValue();
if (!$value) {
return WhereClause::fromRaw([
'id' => null,
]);
return WhereClause::fromRaw(['id' => null]);
}
$emailAddressId = $this->emailAddressHelper->getEmailAddressIdByValue($value);
if (!$emailAddressId) {
return WhereClause::fromRaw([
'id' => null,
]);
return WhereClause::fromRaw(['id' => null]);
}
$queryBuilder->distinct();
@@ -77,7 +75,7 @@ class ToEquals implements ItemConverter
return WhereClause::fromRaw([
$alias . '.emailAddressId' => $emailAddressId,
$alias . '.addressType' => 'to',
$alias . '.addressType' => $this->addressType,
]);
}
}