QuoteCollectTotalsAfterObserver.php 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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\Observer;
  7. use Vertex\Tax\Model\TaxRegistry;
  8. use Magento\Framework\Event\Observer;
  9. use Magento\Framework\Event\ObserverInterface;
  10. use Magento\Framework\Message\ManagerInterface;
  11. use Vertex\Tax\Model\ErrorMessageDisplayState;
  12. /**
  13. * Retrieve tax calculation service errors.
  14. *
  15. * Prepares error messages and sends them to the message manager as a warning.
  16. */
  17. class QuoteCollectTotalsAfterObserver implements ObserverInterface
  18. {
  19. /** @var ManagerInterface */
  20. private $messageManager;
  21. /** @var TaxRegistry */
  22. private $taxRegistry;
  23. /** @var ErrorMessageDisplayState */
  24. private $messageDisplayState;
  25. /**
  26. * @param TaxRegistry $taxRegistry
  27. * @param ManagerInterface $messageManager
  28. * @param ErrorMessageDisplayState $messageDisplayState
  29. */
  30. public function __construct(
  31. TaxRegistry $taxRegistry,
  32. ManagerInterface $messageManager,
  33. ErrorMessageDisplayState $messageDisplayState
  34. ) {
  35. $this->messageManager = $messageManager;
  36. $this->taxRegistry = $taxRegistry;
  37. $this->messageDisplayState = $messageDisplayState;
  38. }
  39. /**
  40. * Get the last error message from a Vertex calculation.
  41. *
  42. * @return string|null
  43. */
  44. private function getError()
  45. {
  46. return $this->taxRegistry->lookup(TaxRegistry::KEY_ERROR_GENERIC);
  47. }
  48. /**
  49. * Add service error message to session storage.
  50. *
  51. * @param Observer $observer
  52. * @return void
  53. * @SuppressWarnings(PHPMD.UnusedFormalParameter) Only event occurrence is needed.
  54. */
  55. public function execute(Observer $observer)
  56. {
  57. $error = $this->getError();
  58. if ($error !== null && $this->messageDisplayState->isEnabled()) {
  59. $this->messageManager->addWarningMessage($error);
  60. }
  61. }
  62. }