transportBuilder = $transportBuilder; $this->helper = $helper; $this->storeManager = $storeManager; $this->validator = $validator ?? ObjectManager::getInstance()->get(Validator::class); } /** * @return void * @SuppressWarnings(PHPMD.CyclomaticComplexity) */ public function execute() { $id = $this->getRequest()->getParam('request_id'); $message = $this->getRequest()->getParam('email_text'); if (!$this->validator->isNotEmpty(trim($message))) { $this->messageManager->addErrorMessage(__('Please enter a Email Text.')); $this->_redirect('*/*/edit', ['id' => $id]); return; } if ($id) { try { $model = $this->requestRepository->get($id); $emailTo = $model->getEmail(); $sender = $this->helper->getModuleConfig('general/sender'); $template = $this->helper->getModuleConfig('general/template'); if ($this->sendEmail($model, $sender, $emailTo, $template, $message)) { $model->setStatus(Status::ANSWERED); $model->setMessageText($message); $this->requestRepository->save($model); $this->messageManager->addSuccessMessage(__('Email Answer was sent.')); } } catch (\Magento\Framework\Exception\NoSuchEntityException $exception) { $this->messageManager->addErrorMessage(__('This request no longer exists.')); } } else { $this->messageManager->addErrorMessage(__('Please select request id.')); } $this->_redirect('amasty_hideprice/*/'); } /** * @param \Amasty\HidePrice\Model\Request $model * @param $sender * @param $emailTo * @param $template * @param $message * * @return bool */ private function sendEmail(\Amasty\HidePrice\Model\Request $model, $sender, $emailTo, $template, $message) { try { $store = $this->storeManager->getStore($model->getStoreId()); $data = [ 'website_name' => $store->getWebsite()->getName(), 'group_name' => $store->getGroup()->getName(), 'store_name' => $store->getName(), 'store' => $store, 'request' => $model, 'message' => $message, 'customer_name' => $model->getName() ]; $transport = $this->transportBuilder->setTemplateIdentifier( $template )->setTemplateOptions( ['area' => \Magento\Framework\App\Area::AREA_FRONTEND, 'store' => $store->getId()] )->setTemplateVars( $data )->setFrom( $sender )->addTo( $emailTo, $model->getName() )->getTransport(); $transport->sendMessage(); return true; } catch (\Exception $e) { $this->messageManager->addErrorMessage($e->getMessage()); return false; } } }