. * * The interactive user interfaces in modified source and object code versions * of this program must display Appropriate Legal Notices, as required under * Section 5 of the GNU Affero General Public License version 3. * * In accordance with Section 7(b) of the GNU Affero General Public License version 3, * these Appropriate Legal Notices must retain the display of the "EspoCRM" word. ************************************************************************/ namespace Espo\Tools\Currency\Conversion; use Espo\Core\Acl; use Espo\Core\Binding\BindingContainerBuilder; use Espo\Core\InjectableFactory; use Espo\Core\Utils\Metadata; use Espo\Entities\User; use Espo\ORM\Entity; class EntityConverterFactory { public function __construct( private Metadata $metadata, private InjectableFactory $injectableFactory, private User $user, private Acl $acl ) {} /** * @return EntityConverter */ public function create(string $entityType): EntityConverter { /** @var class-string> $className */ $className = $this->metadata ->get(['app', 'currencyConversion', 'entityConverterClassNameMap', $entityType]) ?? DefaultEntityConverter::class; $binding = BindingContainerBuilder::create() ->bindInstance(User::class, $this->user) ->bindInstance(Acl::class, $this->acl) ->build(); return $this->injectableFactory->createWithBinding($className, $binding); } }