8
8
use Magento \Framework \App \Config \ValueFactory ;
9
9
use Magento \Framework \App \Config \ValueInterface ;
10
10
use Magento \Framework \App \ObjectManager ;
11
- use Magento \Framework \Stdlib \DateTime \TimezoneInterface ;
12
11
use Magento \Sales \Model \Order \Email \Container \IdentityInterface ;
12
+ use Magento \Sales \Model \ResourceModel \Collection \AbstractCollection ;
13
13
14
14
/**
15
15
* Sales emails sending
@@ -36,7 +36,7 @@ class EmailSenderHandler
36
36
/**
37
37
* Entity collection model.
38
38
*
39
- * @var \Magento\Sales\Model\ResourceModel\Collection\ AbstractCollection
39
+ * @var AbstractCollection
40
40
*/
41
41
protected $ entityCollection ;
42
42
@@ -64,36 +64,29 @@ class EmailSenderHandler
64
64
*/
65
65
private $ configValueFactory ;
66
66
67
- /**
68
- * @var TimezoneInterface
69
- */
70
- private $ localeDate ;
71
-
72
67
/**
73
68
* @var string
74
69
*/
75
- private $ modifyStartFromDate = ' -1 day ' ;
70
+ private $ modifyStartFromDate ;
76
71
77
72
/**
78
73
* @param \Magento\Sales\Model\Order\Email\Sender $emailSender
79
74
* @param \Magento\Sales\Model\ResourceModel\EntityAbstract $entityResource
80
- * @param \Magento\Sales\Model\ResourceModel\Collection\ AbstractCollection $entityCollection
75
+ * @param AbstractCollection $entityCollection
81
76
* @param \Magento\Framework\App\Config\ScopeConfigInterface $globalConfig
82
77
* @param IdentityInterface|null $identityContainer
83
78
* @param \Magento\Store\Model\StoreManagerInterface|null $storeManager
84
79
* @param ValueFactory|null $configValueFactory
85
- * @param TimezoneInterface|null $localeDate
86
80
* @param string|null $modifyStartFromDate
87
81
*/
88
82
public function __construct (
89
83
\Magento \Sales \Model \Order \Email \Sender $ emailSender ,
90
84
\Magento \Sales \Model \ResourceModel \EntityAbstract $ entityResource ,
91
- \ Magento \ Sales \ Model \ ResourceModel \ Collection \ AbstractCollection $ entityCollection ,
85
+ AbstractCollection $ entityCollection ,
92
86
\Magento \Framework \App \Config \ScopeConfigInterface $ globalConfig ,
93
87
IdentityInterface $ identityContainer = null ,
94
88
\Magento \Store \Model \StoreManagerInterface $ storeManager = null ,
95
89
?ValueFactory $ configValueFactory = null ,
96
- ?TimezoneInterface $ localeDate = null ,
97
90
?string $ modifyStartFromDate = null
98
91
) {
99
92
$ this ->emailSender = $ emailSender ;
@@ -107,7 +100,6 @@ public function __construct(
107
100
->get (\Magento \Store \Model \StoreManagerInterface::class);
108
101
109
102
$ this ->configValueFactory = $ configValueFactory ?: ObjectManager::getInstance ()->get (ValueFactory::class);
110
- $ this ->localeDate = $ localeDate ?: ObjectManager::getInstance ()->get (TimezoneInterface::class);
111
103
$ this ->modifyStartFromDate = $ modifyStartFromDate ?: $ this ->modifyStartFromDate ;
112
104
}
113
105
@@ -120,8 +112,7 @@ public function sendEmails()
120
112
if ($ this ->globalConfig ->getValue ('sales_email/general/async_sending ' )) {
121
113
$ this ->entityCollection ->addFieldToFilter ('send_email ' , ['eq ' => 1 ]);
122
114
$ this ->entityCollection ->addFieldToFilter ('email_sent ' , ['null ' => true ]);
123
- $ startFromDate = $ this ->getStartFromDate ();
124
- $ this ->entityCollection ->addFieldToFilter ('created_at ' , ['from ' => $ startFromDate ]);
115
+ $ this ->filterCollectionByStartFromDate ($ this ->entityCollection );
125
116
$ this ->entityCollection ->setPageSize (
126
117
$ this ->globalConfig ->getValue ('sales_email/general/sending_limit ' )
127
118
);
@@ -158,7 +149,7 @@ public function sendEmails()
158
149
* @throws \Magento\Framework\Exception\NoSuchEntityException
159
150
*/
160
151
private function getStores (
161
- \ Magento \ Sales \ Model \ ResourceModel \ Collection \ AbstractCollection $ entityCollection
152
+ AbstractCollection $ entityCollection
162
153
): array {
163
154
$ stores = [];
164
155
@@ -174,22 +165,24 @@ private function getStores(
174
165
}
175
166
176
167
/**
177
- * Get start from date for collection filter
168
+ * Filter collection by start from date
178
169
*
179
- * @return string
170
+ * @param AbstractCollection $collection
171
+ * @return void
180
172
*/
181
- private function getStartFromDate ( ): string
173
+ private function filterCollectionByStartFromDate ( AbstractCollection $ collection ): void
182
174
{
183
- $ fromDate = $ this ->localeDate ->date ()->format ('Y-m-d H:i:s ' );
184
175
/** @var $configValue ValueInterface */
185
176
$ configValue = $ this ->configValueFactory ->create ();
186
177
$ configValue ->load ('sales_email/general/async_sending ' , 'path ' );
187
178
188
179
if ($ configValue ->getId ()) {
189
- $ fromDate = $ this ->localeDate ->date ($ configValue ->getUpdatedAt ())
190
- ->modify ($ this ->modifyStartFromDate )->format ('Y-m-d H:i:s ' );
191
- }
180
+ $ startFromDate = date (
181
+ 'Y-m-d H:i:s ' ,
182
+ strtotime ($ configValue ->getUpdatedAt () . ' ' . $ this ->modifyStartFromDate )
183
+ );
192
184
193
- return $ fromDate ;
185
+ $ collection ->addFieldToFilter ('created_at ' , ['from ' => $ startFromDate ]);
186
+ }
194
187
}
195
188
}
0 commit comments