123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173 |
- <?php
- /**
- * @copyright Vertex. All rights reserved. https://www.vertexinc.com/
- * @author Mediotype https://www.mediotype.com/
- */
- namespace Vertex\Tax\Model\Repository;
- use Magento\Framework\Api\SearchCriteriaInterface;
- use Magento\Framework\Exception\CouldNotDeleteException;
- use Magento\Framework\Exception\CouldNotSaveException;
- use Vertex\Tax\Api\Data\LogEntryInterface;
- use Vertex\Tax\Api\Data\LogEntrySearchResultsInterface;
- use Vertex\Tax\Api\Data\LogEntrySearchResultsInterfaceFactory;
- use Vertex\Tax\Api\LogEntryRepositoryInterface;
- use Vertex\Tax\Model\CollectionProcessor;
- use Vertex\Tax\Model\Data\LogEntry;
- use Vertex\Tax\Model\Data\LogEntryFactory;
- use Vertex\Tax\Model\ResourceModel\LogEntry as ResourceModel;
- use Vertex\Tax\Model\ResourceModel\LogEntry\Collection;
- use Vertex\Tax\Model\ResourceModel\LogEntry\CollectionFactory;
- /**
- * Repository of Log Entries
- */
- class LogEntryRepository implements LogEntryRepositoryInterface
- {
- /** @var ResourceModel */
- private $resourceModel;
- /** @var LogEntryFactory */
- private $logEntryFactory;
- /** @var CollectionFactory */
- private $collectionFactory;
- /** @var LogEntrySearchResultsInterfaceFactory */
- private $searchResultsFactory;
- /** @var CollectionProcessor */
- private $collectionProcessor;
- /**
- * @param ResourceModel $resourceModel
- * @param LogEntryFactory $logEntryFactory
- * @param CollectionFactory $collectionFactory
- * @param LogEntrySearchResultsInterfaceFactory $searchResultsFactory
- * @param CollectionProcessor $collectionProcessor
- */
- public function __construct(
- ResourceModel $resourceModel,
- LogEntryFactory $logEntryFactory,
- CollectionFactory $collectionFactory,
- LogEntrySearchResultsInterfaceFactory $searchResultsFactory,
- CollectionProcessor $collectionProcessor
- ) {
- $this->resourceModel = $resourceModel;
- $this->logEntryFactory = $logEntryFactory;
- $this->collectionFactory = $collectionFactory;
- $this->searchResultsFactory = $searchResultsFactory;
- $this->collectionProcessor = $collectionProcessor;
- }
- /**
- * @inheritdoc
- */
- public function save(LogEntryInterface $logEntry)
- {
- $model = $this->mapDataIntoModel($logEntry);
- try {
- $this->resourceModel->save($model);
- } catch (\Exception $originalException) {
- throw new CouldNotSaveException(__('Could not save Log Entry'), $originalException);
- }
- return $this;
- }
- /**
- * @inheritdoc
- */
- public function getList(SearchCriteriaInterface $searchCriteria)
- {
- /** @var LogEntrySearchResultsInterface $searchResults */
- $searchResults = $this->searchResultsFactory->create();
- /** @var Collection $collection */
- $collection = $this->collectionFactory->create();
- $this->collectionProcessor->process($searchCriteria, $collection);
- $searchResults->setTotalCount($collection->getSize());
- $logEntries = [];
- /** @var LogEntry $logEntryModel */
- foreach ($collection as $logEntryModel) {
- $logEntries[] = $logEntryModel;
- }
- $searchResults->setItems($logEntries);
- return $searchResults;
- }
- /**
- * @inheritdoc
- */
- public function delete(LogEntryInterface $logEntry)
- {
- return $this->deleteById($logEntry->getId());
- }
- /**
- * @inheritdoc
- */
- public function deleteById($logEntryId)
- {
- /** @var LogEntry $model */
- $model = $this->logEntryFactory->create();
- $model->setId($logEntryId);
- try {
- $this->resourceModel->delete($model);
- } catch (\Exception $e) {
- throw new CouldNotDeleteException(__('Could not delete log entry'), $e);
- }
- return true;
- }
- /**
- * @inheritdoc
- */
- public function deleteByCriteria(SearchCriteriaInterface $searchCriteria)
- {
- /** @var Collection $collection */
- $collection = $this->collectionFactory->create();
- $this->collectionProcessor->process($searchCriteria, $collection);
- try {
- $this->resourceModel->deleteByCollection($collection);
- } catch (\Exception $e) {
- throw new CouldNotDeleteException(__('Could not delete log entries'), $e);
- }
- return true;
- }
- /**
- * Convert a LogEntryInterface into a LogEntry model
- *
- * @param LogEntryInterface $logEntry
- * @return LogEntry
- */
- private function mapDataIntoModel(LogEntryInterface $logEntry)
- {
- /** @var LogEntry $model */
- $model = $this->logEntryFactory->create();
- $model->setData(
- [
- LogEntryInterface::FIELD_ID => $logEntry->getId(),
- LogEntryInterface::FIELD_TYPE => $logEntry->getType(),
- LogEntryInterface::FIELD_CART_ID => $logEntry->getCartId(),
- LogEntryInterface::FIELD_ORDER_ID => $logEntry->getOrderId(),
- LogEntryInterface::FIELD_TOTAL_TAX => $logEntry->getTotalTax(),
- LogEntryInterface::FIELD_SOURCE_PATH => $logEntry->getSourcePath(),
- LogEntryInterface::FIELD_TAX_AREA_ID => $logEntry->getTaxAreaId(),
- LogEntryInterface::FIELD_SUBTOTAL => $logEntry->getSubTotal(),
- LogEntryInterface::FIELD_TOTAL => $logEntry->getTotal(),
- LogEntryInterface::FIELD_LOOKUP_RESULT => $logEntry->getLookupResult(),
- LogEntryInterface::FIELD_REQUEST_DATE => $logEntry->getDate(),
- LogEntryInterface::FIELD_REQUEST_XML => $logEntry->getRequestXml(),
- LogEntryInterface::FIELD_RESPONSE_XML => $logEntry->getResponseXml(),
- ]
- );
- return $model;
- }
- }
|