Catalog.php 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. <?php
  2. namespace Dotdigitalgroup\Email\Model;
  3. class Catalog extends \Magento\Framework\Model\AbstractModel
  4. {
  5. /**
  6. * @var string
  7. */
  8. protected $_idFieldName = 'id';
  9. /**
  10. * @var ResourceModel\Catalog
  11. */
  12. public $catalogResource;
  13. /**
  14. * @var \Dotdigitalgroup\Email\Model\ResourceModel\Catalog\CollectionFactory
  15. */
  16. private $catalogCollection;
  17. /**
  18. * @var \Magento\Framework\Stdlib\DateTime
  19. */
  20. private $dateTime;
  21. /**
  22. * Catalog constructor.
  23. *
  24. * @param \Magento\Framework\Model\Context $context
  25. * @param \Magento\Framework\Registry $registry
  26. * @param ResourceModel\Catalog $catalogResource
  27. * @param ResourceModel\Catalog\CollectionFactory $catalogCollection
  28. * @param \Magento\Framework\Stdlib\DateTime $dateTime
  29. * @param array $data
  30. * @param \Magento\Framework\Model\ResourceModel\AbstractResource|null $resource
  31. * @param \Magento\Framework\Data\Collection\AbstractDb|null $resourceCollection
  32. */
  33. public function __construct(
  34. \Magento\Framework\Model\Context $context,
  35. \Magento\Framework\Registry $registry,
  36. \Dotdigitalgroup\Email\Model\ResourceModel\Catalog $catalogResource,
  37. \Dotdigitalgroup\Email\Model\ResourceModel\Catalog\CollectionFactory $catalogCollection,
  38. \Magento\Framework\Stdlib\DateTime $dateTime,
  39. array $data = [],
  40. \Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
  41. \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null
  42. ) {
  43. $this->catalogResource = $catalogResource;
  44. $this->catalogCollection = $catalogCollection;
  45. $this->dateTime = $dateTime;
  46. parent::__construct(
  47. $context,
  48. $registry,
  49. $resource,
  50. $resourceCollection,
  51. $data
  52. );
  53. }
  54. /**
  55. * Constructor.
  56. *
  57. * @return null
  58. */
  59. public function _construct()
  60. {
  61. $this->_init(\Dotdigitalgroup\Email\Model\ResourceModel\Catalog::class);
  62. }
  63. /**
  64. * Prepare data to be saved to database.
  65. *
  66. * @return $this
  67. */
  68. public function beforeSave()
  69. {
  70. parent::beforeSave();
  71. if ($this->isObjectNew() && !$this->getCreatedAt()) {
  72. $this->setCreatedAt($this->dateTime->formatDate(true));
  73. }
  74. $this->setUpdatedAt($this->dateTime->formatDate(true));
  75. return $this;
  76. }
  77. /**
  78. * Load by product id.
  79. *
  80. * @param int $productId
  81. *
  82. * @return \Dotdigitalgroup\Email\Model\Catalog
  83. */
  84. public function loadProductById($productId)
  85. {
  86. $collection = $this->catalogCollection->create()
  87. ->addFieldToFilter('product_id', $productId)
  88. ->setPageSize(1);
  89. return $collection->getFirstItem();
  90. }
  91. }