RemoveContact.php 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. <?php
  2. namespace Dotdigitalgroup\Email\Observer\Customer;
  3. /**
  4. * Removes the contact if the customer is deleted.
  5. */
  6. class RemoveContact implements \Magento\Framework\Event\ObserverInterface
  7. {
  8. /**
  9. * @var \Dotdigitalgroup\Email\Helper\Data
  10. */
  11. private $helper;
  12. /**
  13. * @var \Dotdigitalgroup\Email\Model\ContactFactory
  14. */
  15. private $contactFactory;
  16. /**
  17. * @var \Dotdigitalgroup\Email\Model\ImporterFactory
  18. */
  19. private $importerFactory;
  20. /**
  21. * @var \Dotdigitalgroup\Email\Model\ResourceModel\Contact
  22. */
  23. private $contactResource;
  24. /**
  25. * RemoveContact constructor.
  26. *
  27. * @param \Dotdigitalgroup\Email\Model\ResourceModel\Contact $contactResource
  28. * @param \Dotdigitalgroup\Email\Model\ImporterFactory $importerFactory
  29. * @param \Dotdigitalgroup\Email\Model\ContactFactory $contactFactory
  30. * @param \Dotdigitalgroup\Email\Helper\Data $data
  31. */
  32. public function __construct(
  33. \Dotdigitalgroup\Email\Model\ResourceModel\Contact $contactResource,
  34. \Dotdigitalgroup\Email\Model\ImporterFactory $importerFactory,
  35. \Dotdigitalgroup\Email\Model\ContactFactory $contactFactory,
  36. \Dotdigitalgroup\Email\Helper\Data $data
  37. ) {
  38. $this->contactFactory = $contactFactory;
  39. $this->importerFactory = $importerFactory;
  40. $this->helper = $data;
  41. $this->contactResource = $contactResource;
  42. }
  43. /**
  44. * If it's configured to capture on shipment - do this.
  45. *
  46. * @param \Magento\Framework\Event\Observer $observer
  47. *
  48. * @return $this
  49. */
  50. public function execute(\Magento\Framework\Event\Observer $observer)
  51. {
  52. $customer = $observer->getEvent()->getCustomer();
  53. $email = $customer->getEmail();
  54. $websiteId = $customer->getWebsiteId();
  55. $apiEnabled = $this->helper->isEnabled($websiteId);
  56. $customerSync = $this->helper->isCustomerSyncEnabled($websiteId);
  57. /*
  58. * Remove contact.
  59. */
  60. if ($apiEnabled && $customerSync) {
  61. try {
  62. //register in queue with importer
  63. $this->importerFactory->create()->registerQueue(
  64. \Dotdigitalgroup\Email\Model\Importer::IMPORT_TYPE_CONTACT,
  65. $email,
  66. \Dotdigitalgroup\Email\Model\Importer::MODE_CONTACT_DELETE,
  67. $websiteId
  68. );
  69. $contactModel = $this->contactFactory->create()
  70. ->loadByCustomerEmail($email, $websiteId);
  71. if ($contactModel->getId()) {
  72. //remove contact
  73. $this->contactResource->delete($contactModel);
  74. }
  75. } catch (\Exception $e) {
  76. $this->helper->debug((string)$e, []);
  77. }
  78. }
  79. return $this;
  80. }
  81. }