/** * Retrieve alert row by object parameters * * @param \Magento\Framework\Model\AbstractModel $object * @return array|false */ protected function _getAlertRow(\Magento\Framework\Model\AbstractModel $object) { $adapter = $this->_getReadAdapter(); if ($object->getCustomerId() && $object->getProductId() && $object->getWebsiteId()) { $select = $adapter->select()->from($this->getMainTable())->where('customer_id = :customer_id')->where('product_id = :product_id')->where('website_id = :website_id'); $bind = [':customer_id' => $object->getCustomerId(), ':product_id' => $object->getProductId(), ':website_id' => $object->getWebsiteId()]; return $adapter->fetchRow($select, $bind); } return false; }
/** * Validate Product Rule Condition * * @param \Magento\Framework\Model\AbstractModel $model * @return bool */ public function validate(\Magento\Framework\Model\AbstractModel $model) { //@todo reimplement this method when is fixed MAGETWO-5713 /** @var \Magento\Catalog\Model\Product $product */ $product = $model->getProduct(); if (!$product instanceof \Magento\Catalog\Model\Product) { $product = $this->productRepository->getById($model->getProductId()); } $product->setQuoteItemQty($model->getQty())->setQuoteItemPrice($model->getPrice())->setQuoteItemRowTotal($model->getBaseRowTotal()); return parent::validate($product); }
/** * Before save action * * @param \Magento\Framework\Model\AbstractModel $object * @return $this */ protected function _beforeSave(\Magento\Framework\Model\AbstractModel $object) { if (is_null($object->getId()) && $object->getCustomerId() && $object->getProductId() && $object->getWebsiteId()) { if ($row = $this->_getAlertRow($object)) { $object->addData($row); $object->setStatus(0); } } if (is_null($object->getAddDate())) { $object->setAddDate($this->_dateFactory->create()->gmtDate()); $object->setStatus(0); } return parent::_beforeSave($object); }