From fa35e32578d0f8a78dce0612355fd06f4ed249cc Mon Sep 17 00:00:00 2001 From: Yuri Kuznetsov Date: Thu, 9 Sep 2021 14:57:01 +0300 Subject: [PATCH] refactoring --- .../Crm/Business/Reminder/EmailReminder.php | 89 ++++++++++--------- 1 file changed, 47 insertions(+), 42 deletions(-) diff --git a/application/Espo/Modules/Crm/Business/Reminder/EmailReminder.php b/application/Espo/Modules/Crm/Business/Reminder/EmailReminder.php index b01e3a3e7f..a86e2978b4 100644 --- a/application/Espo/Modules/Crm/Business/Reminder/EmailReminder.php +++ b/application/Espo/Modules/Crm/Business/Reminder/EmailReminder.php @@ -45,11 +45,17 @@ use Espo\Core\{ class EmailReminder { protected $entityManager; + protected $emailSender; + protected $config; + protected $dateTime; + protected $templateFileManager; + protected $language; + protected $htmlizerFactory; public function __construct( @@ -68,73 +74,72 @@ class EmailReminder $this->htmlizerFactory = $htmlizerFactory; } - protected function getEntityManager() + public function send(Entity $reminder): void { - return $this->entityManager; - } + $user = $this->entityManager->getEntity('User', $reminder->get('userId')); + $entity = $this->entityManager->getEntity($reminder->get('entityType'), $reminder->get('entityId')); - protected function getTemplateFileManager() - { - return $this->templateFileManager; - } + if (!$user || !$entity) { + return; + } - protected function getConfig() - { - return $this->config; - } - - protected function getLanguage() - { - return $this->language; - } - - public function send(Entity $reminder) - { - $user = $this->getEntityManager()->getEntity('User', $reminder->get('userId')); - $entity = $this->getEntityManager()->getEntity($reminder->get('entityType'), $reminder->get('entityId')); - - if (!$user || !$entity) return; $emailAddress = $user->get('emailAddress'); - if (!$emailAddress) return; + + if (!$emailAddress) { + return; + } if ($entity->hasLinkMultipleField('users')) { $entity->loadLinkMultipleField('users', ['status' => 'acceptanceStatus']); - $status = $entity->getLinkMultipleColumn('users', 'status', $user->id); - if ($status === 'Declined') return; + $status = $entity->getLinkMultipleColumn('users', 'status', $user->getId()); + + if ($status === 'Declined') { + return; + } } - $email = $this->getEntityManager()->getEntity('Email'); + $email = $this->entityManager->getEntity('Email'); + $email->set('to', $emailAddress); - $subjectTpl = $this->getTemplateFileManager()->getTemplate('reminder', 'subject', $entity->getEntityType(), 'Crm'); - $bodyTpl = $this->getTemplateFileManager()->getTemplate('reminder', 'body', $entity->getEntityType(), 'Crm'); + $subjectTpl = $this->templateFileManager + ->getTemplate('reminder', 'subject', $entity->getEntityType(), 'Crm'); + + $bodyTpl = $this->templateFileManager + ->getTemplate('reminder', 'body', $entity->getEntityType(), 'Crm'); $subjectTpl = str_replace(["\n", "\r"], '', $subjectTpl); $data = []; - $siteUrl = rtrim($this->getConfig()->get('siteUrl'), '/'); - $recordUrl = $siteUrl . '/#' . $entity->getEntityType() . '/view/' . $entity->id; - $data['recordUrl'] = $recordUrl; + $siteUrl = rtrim($this->config->get('siteUrl'), '/'); + $recordUrl = $siteUrl . '/#' . $entity->getEntityType() . '/view/' . $entity->getId(); - $data['entityType'] = $this->getLanguage()->translate($entity->getEntityType(), 'scopeNames'); + $data['recordUrl'] = $recordUrl; + $data['entityType'] = $this->language->translate($entity->getEntityType(), 'scopeNames'); $data['entityTypeLowerFirst'] = Util::mbLowerCaseFirst($data['entityType']); if ($user) { $data['userName'] = $user->get('name'); } - $preferences = $this->getEntityManager()->getEntity('Preferences', $user->id); - $timezone = $preferences->get('timeZone'); + $htmlizer = $this->htmlizerFactory->createForUser($user); - if (!$timezone) { - $timezone = null; - } + $subject = $htmlizer->render( + $entity, + $subjectTpl, + 'reminder-email-subject-' . $entity->getEntityType(), + $data, + true + ); - $htmlizer = $this->htmlizerFactory->create(true, $timezone); - - $subject = $htmlizer->render($entity, $subjectTpl, 'reminder-email-subject-' . $entity->getEntityType(), $data, true); - $body = $htmlizer->render($entity, $bodyTpl, 'reminder-email-body-' . $entity->getEntityType(), $data, false); + $body = $htmlizer->render( + $entity, + $bodyTpl, + 'reminder-email-body-' . $entity->getEntityType(), + $data, + false + ); $email->set('subject', $subject); $email->set('body', $body);