50 \Psr\Log\LoggerInterface
$logger,
52 \
Magento\Framework\Event\ManagerInterface $eventManager,
53 \
Magento\Framework\Stdlib\DateTime\DateTime $date,
68 $this->_map[
'fields'][
'queue_id'] =
'main_table.queue_id';
80 [
'template' => $this->
getTable(
'newsletter_template')],
81 'template.template_id=main_table.template_id',
82 [
'template_subject',
'template_sender_name',
'template_sender_email']
84 $this->_joinedTables[
'template'] =
true;
93 protected function _addSubscriberInfoToSelect()
97 [
'qlt' => $this->
getTable(
'newsletter_queue_link')],
98 'COUNT(qlt.queue_link_id)' 100 'qlt.queue_id = main_table.queue_id' 102 $totalExpr = new \Zend_Db_Expr(sprintf(
'(%s)',
$select->assemble()));
104 [
'qls' => $this->
getTable(
'newsletter_queue_link')],
105 'COUNT(qls.queue_link_id)' 107 'qls.queue_id = main_table.queue_id' 109 'qls.letter_sent_at IS NOT NULL' 111 $sentExpr = new \Zend_Db_Expr(sprintf(
'(%s)',
$select->assemble()));
113 $this->
getSelect()->columns([
'subscribers_sent' => $sentExpr,
'subscribers_total' => $totalExpr]);
124 public function load($printQuery =
false, $logQuery =
false)
126 if ($this->_addSubscribersFlag && !$this->
isLoaded()) {
127 $this->_addSubscriberInfoToSelect();
129 return parent::load($printQuery, $logQuery);
139 $this->_addSubscribersFlag =
true;
153 if (in_array($field, [
'subscribers_total',
'subscribers_sent'])) {
157 return parent::addFieldToFilter($field, $condition);
171 $this->
getTable(
'newsletter_queue_link'),
172 [
'queue_id',
'total' =>
new \
Zend_Db_Expr(
'COUNT(queue_link_id)')]
179 if ($field ==
'subscribers_sent') {
180 $select->where(
'letter_sent_at IS NOT NULL');
185 if (
count($idList)) {
201 [
'link' => $this->
getTable(
'newsletter_queue_link')],
202 'main_table.queue_id=link.queue_id',
205 'link.subscriber_id = ?',
220 'main_table.queue_status in (?)',
223 'main_table.queue_start_at < ?',
224 $this->_date->gmtDate()
226 'main_table.queue_start_at IS NOT NULL' 262 if (!$this->_isStoreFilter) {
264 [
'store_link' => $this->
getTable(
'newsletter_queue_store_link')],
265 'main_table.queue_id = store_link.queue_id',
268 'store_link.store_id IN (?)',
271 'main_table.queue_id' 273 $this->_isStoreFilter =
true;
addFieldToFilter($field, $condition=null)
_toOptionArray($valueField=null, $labelField='name', $additional=[])
addOnlyForSendingFilter()
_getConditionSql($fieldName, $condition)
_getIdsFromLink($field, $condition)
load($printQuery=false, $logQuery=false)
_init($model, $resourceModel)
addSubscriberFilter($subscriberId)
__construct(\Magento\Framework\Data\Collection\EntityFactory $entityFactory, \Psr\Log\LoggerInterface $logger, \Magento\Framework\Data\Collection\Db\FetchStrategyInterface $fetchStrategy, \Magento\Framework\Event\ManagerInterface $eventManager, \Magento\Framework\Stdlib\DateTime\DateTime $date, \Magento\Framework\DB\Adapter\AdapterInterface $connection=null, \Magento\Framework\Model\ResourceModel\Db\AbstractDb $resource=null)
addStoreFilter($storeIds)