Consent.php 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. <?php
  2. namespace Dotdigitalgroup\Email\Model\ResourceModel;
  3. use Dotdigitalgroup\Email\Setup\Schema;
  4. class Consent extends \Magento\Framework\Model\ResourceModel\Db\AbstractDb
  5. {
  6. /**
  7. * @var Consent\CollectionFactory
  8. */
  9. public $consentCollectionFactory;
  10. /**
  11. * Initialize resource.
  12. *
  13. * @return null
  14. */
  15. public function _construct()
  16. {
  17. $this->_init(Schema::EMAIL_CONTACT_CONSENT_TABLE, 'id');
  18. }
  19. public function __construct(
  20. \Magento\Framework\Model\ResourceModel\Db\Context $context,
  21. \Dotdigitalgroup\Email\Model\ResourceModel\Consent\CollectionFactory $consentCollectionFactory,
  22. $connectionName = null
  23. ) {
  24. $this->consentCollectionFactory = $consentCollectionFactory;
  25. parent::__construct($context, $connectionName);
  26. }
  27. /**
  28. * Delete Consent for contact.
  29. *
  30. * @param array $emails
  31. * @return array
  32. */
  33. public function deleteConsentByEmails($emails)
  34. {
  35. if (empty($emails)) {
  36. return [];
  37. }
  38. $collection = $this->consentCollectionFactory->create();
  39. $collection->getSelect()
  40. ->joinInner(
  41. ['c' => $this->getTable(Schema::EMAIL_CONTACT_TABLE)],
  42. "c.email_contact_id = main_table.email_contact_id",
  43. []
  44. );
  45. $collection->addFieldToFilter('c.email', ['in' => $emails]);
  46. return $collection->walk('delete');
  47. }
  48. }