Collection.php 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. <?php
  2. namespace Dotdigitalgroup\Email\Model\ResourceModel\Rules;
  3. class Collection extends
  4. \Magento\Framework\Model\ResourceModel\Db\Collection\AbstractCollection
  5. {
  6. /**
  7. * @var string
  8. */
  9. protected $_idFieldName = 'id';
  10. /**
  11. * Initialize resource collection.
  12. *
  13. * @return void
  14. */
  15. public function _construct()
  16. {
  17. $this->_init(
  18. \Dotdigitalgroup\Email\Model\Rules::class,
  19. \Dotdigitalgroup\Email\Model\ResourceModel\Rules::class
  20. );
  21. }
  22. /**
  23. * Reset collection.
  24. *
  25. * @return $this
  26. */
  27. public function reset()
  28. {
  29. $this->_reset();
  30. return $this;
  31. }
  32. /**
  33. * Check if rule already exist for website.
  34. *
  35. * @param int $websiteId
  36. * @param string $type
  37. * @param bool $ruleId
  38. *
  39. * @return bool
  40. */
  41. public function hasCollectionAnyItemsByWebsiteAndType($websiteId, $type, $ruleId = false)
  42. {
  43. $collection = $this->addFieldToFilter('type', ['eq' => $type])
  44. ->addFieldToFilter('website_ids', ['finset' => $websiteId]);
  45. if ($ruleId) {
  46. $collection->addFieldToFilter('id', ['neq' => $ruleId]);
  47. }
  48. $collection->setPageSize(1);
  49. if ($collection->getSize()) {
  50. return false;
  51. }
  52. return true;
  53. }
  54. /**
  55. * Get rule for website.
  56. *
  57. * @param string $type
  58. * @param int|array $websiteId
  59. *
  60. * @return array|\Magento\Framework\DataObject
  61. */
  62. public function getActiveRuleByWebsiteAndType($type, $websiteId)
  63. {
  64. $collection = $this->addFieldToFilter('type', ['eq' => $type])
  65. ->addFieldToFilter('status', ['eq' => 1])
  66. ->addFieldToFilter('website_ids', ['finset' => $websiteId])
  67. ->setPageSize(1);
  68. if ($collection->getSize()) {
  69. return $collection->getFirstItem();
  70. }
  71. return [];
  72. }
  73. }