QuoteProxy.php 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. <?php
  2. /**
  3. * @copyright Vertex. All rights reserved. https://www.vertexinc.com/
  4. * @author Mediotype https://www.mediotype.com/
  5. */
  6. namespace Vertex\Tax\Service;
  7. use Magento\Store\Model\ScopeInterface;
  8. use Vertex\Services\Quote\RequestInterface;
  9. use Vertex\Tax\Api\QuoteInterface;
  10. use Vertex\Tax\Model\Api\Logger;
  11. use Vertex\Tax\Model\Api\Service\QuoteBuilder;
  12. /**
  13. * Default implementation of {@see QuoteInterface}
  14. */
  15. class QuoteProxy implements QuoteInterface
  16. {
  17. /** @var Logger */
  18. private $logger;
  19. /** @var QuoteBuilder */
  20. private $quoteBuilder;
  21. /**
  22. * @param Logger $logger
  23. * @param QuoteBuilder $quoteBuilder
  24. */
  25. public function __construct(Logger $logger, QuoteBuilder $quoteBuilder)
  26. {
  27. $this->logger = $logger;
  28. $this->quoteBuilder = $quoteBuilder;
  29. }
  30. /**
  31. * @inheritdoc
  32. */
  33. public function request(RequestInterface $request, $scopeCode = null, $scopeType = ScopeInterface::SCOPE_STORE)
  34. {
  35. $quote = $this->quoteBuilder
  36. ->setScopeCode($scopeCode)
  37. ->setScopeType($scopeType)
  38. ->build();
  39. return $this->logger->wrapCall(
  40. function () use ($quote, $request) {
  41. return $quote->request($request);
  42. },
  43. 'quote'
  44. );
  45. }
  46. }