commentResource = $commentResource; $this->commentFactory = $commentFactory; $this->searchResultFactory = $searchResultFactory; $this->collectionProcessor = $collectionProcessor; $this->shipmentCommentSender = $shipmentCommentSender ?: ObjectManager::getInstance()->get(ShipmentCommentSender::class); $this->shipmentRepository = $shipmentRepository ?: ObjectManager::getInstance()->get(ShipmentRepositoryInterface::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(ShipmentCommentInterface $entity) { try { $this->commentResource->delete($entity); } catch (\Exception $e) { throw new CouldNotDeleteException(__('Could not delete the shipment comment.'), $e); } return true; } /** * @inheritdoc */ public function save(ShipmentCommentInterface $entity) { try { $this->commentResource->save($entity); } catch (\Exception $e) { throw new CouldNotSaveException(__('Could not save the shipment comment.'), $e); } try { $shipment = $this->shipmentRepository->get($entity->getParentId()); $this->shipmentCommentSender->send($shipment, $entity->getIsCustomerNotified(), $entity->getComment()); } catch (\Exception $exception) { $this->logger->critical($exception); } return $entity; } }