From 5069547464c1dfbeec1f5c09fbf019d7bc4367a6 Mon Sep 17 00:00:00 2001 From: Yuri Kuznetsov Date: Mon, 17 Mar 2025 15:43:46 +0200 Subject: [PATCH] ref --- .../Core/Record/Defaults/DefaultPopulator.php | 104 ++++++++++-------- 1 file changed, 59 insertions(+), 45 deletions(-) diff --git a/application/Espo/Core/Record/Defaults/DefaultPopulator.php b/application/Espo/Core/Record/Defaults/DefaultPopulator.php index 87ed9cf59b..ea8c8b447a 100644 --- a/application/Espo/Core/Record/Defaults/DefaultPopulator.php +++ b/application/Espo/Core/Record/Defaults/DefaultPopulator.php @@ -32,10 +32,10 @@ namespace Espo\Core\Record\Defaults; use Espo\Core\Acl; use Espo\Core\Acl\Permission; use Espo\Core\Acl\Table as AclTable; +use Espo\Core\Currency\ConfigDataProvider as CurrencyConfigDataProvider; use Espo\Core\Name\Field; use Espo\Core\ORM\Entity as CoreEntity; use Espo\Core\ORM\Type\FieldType; -use Espo\Core\Utils\Config; use Espo\Core\Utils\FieldUtil; use Espo\Entities\User; use Espo\ORM\Defs\Params\FieldParam; @@ -52,50 +52,15 @@ class DefaultPopulator implements Populator private Acl $acl, private User $user, private FieldUtil $fieldUtil, - private Config $config, - private EntityManager $entityManager + private EntityManager $entityManager, + private CurrencyConfigDataProvider $currencyConfig, ) {} public function populate(Entity $entity): void { - $entityType = $entity->getEntityType(); - - if ($this->isAssignedUserShouldBeSetWithSelf($entityType)) { - $entity->set('assignedUserId', $this->user->getId()); - $entity->set('assignedUserName', $this->user->getName()); - } - - if ($this->toAddDetailTeam($entity)) { - $defaultTeamId = $this->user->getDefaultTeam()?->getId(); - - if (!$defaultTeamId || !$entity instanceof CoreEntity) { - throw new RuntimeException(); - } - - $entity->addLinkMultipleId(Field::TEAMS, $defaultTeamId); - - $teamsNames = $entity->get('teamsNames'); - - if (!$teamsNames || !is_object($teamsNames)) { - $teamsNames = (object) []; - } - - $teamsNames->$defaultTeamId = $this->user->get('defaultTeamName'); - - $entity->set('teamsNames', $teamsNames); - } - - foreach ($this->fieldUtil->getEntityTypeFieldList($entityType) as $field) { - $type = $this->fieldUtil->getEntityTypeFieldParam($entityType, $field, FieldParam::TYPE); - - if ( - $type === FieldType::CURRENCY && - $entity->get($field) && - !$entity->get($field . 'Currency') - ) { - $entity->set($field . 'Currency', $this->config->get('defaultCurrency')); - } - } + $this->processAssignedUser($entity); + $this->processDefaultTeam($entity); + $this->processCurrency($entity); } /** @@ -127,10 +92,7 @@ class DefaultPopulator implements Populator return false; } - /** - * @phpstan-assert-if-true CoreEntity $entity - */ - private function toAddDetailTeam(Entity $entity): bool + private function toAddDefaultTeam(Entity $entity): bool { if ($this->user->isPortal()) { return false; @@ -166,4 +128,56 @@ class DefaultPopulator implements Populator return false; } + + private function processCurrency(Entity $entity): void + { + $entityType = $entity->getEntityType(); + + foreach ($this->fieldUtil->getEntityTypeFieldList($entityType) as $field) { + $type = $this->fieldUtil->getEntityTypeFieldParam($entityType, $field, FieldParam::TYPE); + + if ( + $type === FieldType::CURRENCY && + $entity->get($field) && + !$entity->get($field . 'Currency') + ) { + $entity->set($field . 'Currency', $this->currencyConfig->getDefaultCurrency()); + } + } + } + + private function processDefaultTeam(Entity $entity): void + { + if (!$this->toAddDefaultTeam($entity)) { + return; + } + + $defaultTeamId = $this->user->getDefaultTeam()?->getId(); + + if (!$defaultTeamId || !$entity instanceof CoreEntity) { + throw new RuntimeException(); + } + + $entity->addLinkMultipleId(Field::TEAMS, $defaultTeamId); + + $teamsNames = $entity->get(Field::TEAMS . 'Names'); + + if (!$teamsNames || !is_object($teamsNames)) { + $teamsNames = (object)[]; + } + + $teamsNames->$defaultTeamId = $this->user->getDefaultTeam()?->getName(); + + $entity->set(Field::TEAMS . 'Names', $teamsNames); + } + + private function processAssignedUser(Entity $entity): void + { + if (!$this->isAssignedUserShouldBeSetWithSelf($entity->getEntityType())) { + return; + } + + $entity->set(Field::ASSIGNED_USER . 'Id', $this->user->getId()); + $entity->set(Field::ASSIGNED_USER . 'Name', $this->user->getName()); + } }