RemoveContact.php 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. <?php
  2. namespace Dotdigitalgroup\Email\Observer\Newsletter;
  3. /**
  4. * Remove contact single delete.
  5. */
  6. class RemoveContact implements \Magento\Framework\Event\ObserverInterface
  7. {
  8. /**
  9. * @var \Dotdigitalgroup\Email\Helper\Data
  10. */
  11. private $helper;
  12. /**
  13. * @var \Magento\Store\Model\StoreManagerInterface
  14. */
  15. private $storeManager;
  16. /**
  17. * @var \Dotdigitalgroup\Email\Model\ContactFactory
  18. */
  19. private $contactFactory;
  20. /**
  21. * @var \Dotdigitalgroup\Email\Model\ImporterFactor
  22. */
  23. private $importerFactory;
  24. /**
  25. * @var \Dotdigitalgroup\Email\Model\ResourceModel\Contact
  26. */
  27. private $contactResource;
  28. /**
  29. * RemoveContact constructor.
  30. *
  31. * @param \Dotdigitalgroup\Email\Model\ResourceModel\Contact $contactResource
  32. * @param \Dotdigitalgroup\Email\Model\ContactFactory $contactFactory
  33. * @param \Dotdigitalgroup\Email\Helper\Data $data
  34. * @param \Magento\Store\Model\StoreManagerInterface $storeManagerInterface
  35. * @param \Dotdigitalgroup\Email\Model\ImporterFactory $importerFactory
  36. */
  37. public function __construct(
  38. \Dotdigitalgroup\Email\Model\ResourceModel\Contact $contactResource,
  39. \Dotdigitalgroup\Email\Model\ContactFactory $contactFactory,
  40. \Dotdigitalgroup\Email\Helper\Data $data,
  41. \Magento\Store\Model\StoreManagerInterface $storeManagerInterface,
  42. \Dotdigitalgroup\Email\Model\ImporterFactory $importerFactory
  43. ) {
  44. $this->contactFactory = $contactFactory;
  45. $this->helper = $data;
  46. $this->storeManager = $storeManagerInterface;
  47. $this->importerFactory = $importerFactory;
  48. $this->contactResource = $contactResource;
  49. }
  50. /**
  51. * Remove contact from account
  52. *
  53. * @param \Magento\Framework\Event\Observer $observer
  54. *
  55. * @return $this
  56. */
  57. public function execute(\Magento\Framework\Event\Observer $observer)
  58. {
  59. $subscriber = $observer->getEvent()->getSubscriber();
  60. $email = $subscriber->getEmail();
  61. $websiteId = $this->storeManager->getStore($subscriber->getStoreId())
  62. ->getWebsiteId();
  63. $apiEnabled = $this->helper->isEnabled($websiteId);
  64. /*
  65. * Remove contact.
  66. */
  67. if ($apiEnabled) {
  68. try {
  69. //register in queue with importer
  70. $this->importerFactory->create()->registerQueue(
  71. \Dotdigitalgroup\Email\Model\Importer::IMPORT_TYPE_CONTACT,
  72. $email,
  73. \Dotdigitalgroup\Email\Model\Importer::MODE_CONTACT_DELETE,
  74. $websiteId
  75. );
  76. $contactModel = $this->contactFactory->create()
  77. ->loadByCustomerEmail($email, $websiteId);
  78. if ($contactModel->getId()) {
  79. //remove contact
  80. $this->contactResource->delete($contactModel);
  81. }
  82. } catch (\Exception $e) {
  83. $this->helper->debug((string)$e, []);
  84. }
  85. }
  86. return $this;
  87. }
  88. }