commentResource = $commentResource; $this->commentFactory = $commentFactory; $this->searchResultFactory = $searchResultFactory; $this->collectionProcessor = $collectionProcessor; $this->invoiceCommentSender = $invoiceCommentSender ?:ObjectManager::getInstance()->get(InvoiceCommentSender::class); $this->invoiceRepository = $invoiceRepository ?:ObjectManager::getInstance()->get(InvoiceRepositoryInterface::class); $this->logger = $logger ?: ObjectManager::getInstance()->get(LoggerInterface::class); } /** * @inheritdoc */ public function getList(SearchCriteriaInterface $searchCriteria) { $searchResult = $this->searchResultFactory->create(); $this->collectionProcessor->process($searchCriteria, $searchResult); $searchResult->setSearchCriteria($searchCriteria); return $searchResult; } /** * @inheritdoc */ public function get($id) { $entity = $this->commentFactory->create(); $this->commentResource->load($entity, $id); return $entity; } /** * @inheritdoc */ public function delete(InvoiceCommentInterface $entity) { try { $this->commentResource->delete($entity); } catch (\Exception $e) { throw new CouldNotDeleteException(__('Could not delete the invoice comment.'), $e); } return true; } /** * @inheritdoc */ public function save(InvoiceCommentInterface $entity) { try { $this->commentResource->save($entity); } catch (\Exception $e) { throw new CouldNotSaveException(__('Could not save the invoice comment.'), $e); } try { $invoice = $this->invoiceRepository->get($entity->getParentId()); $this->invoiceCommentSender->send($invoice, $entity->getIsCustomerNotified(), $entity->getComment()); } catch (\Exception $exception) { $this->logger->critical($exception); } return $entity; } }