$this->stdout($message . "\n", BaseConsole::FG_YELLOW);
};
- $messages = MarketplaceService::getFlowwowOrdersFromMail($date, $since, $oldMail, $progressCallback, $seen, $unseen);
+ $messages = MarketplaceService::getFlowwowOrdersFromMail(
+ $date,
+ $since,
+ $oldMail,
+ $progressCallback,
+ $seen,
+ $unseen
+ );
- $countMessages = count($messages);
- $count = MarketplaceService::processMessages($messages);
+ $countMessages = $messages['all'];
+ $count = $messages['processed'];
$this->stdout(
"Удалось сохранить {$count} новых заказов из {$countMessages} сообщений почты.\n",
$folders = imap_list($inbox, $hostname, '*');
imap_close($inbox);
- $messages = [];
-
+ $countAllMessages = 0;
+ $countProcessedMessages = 0;
foreach ($folders as $folder) {
if ($folder == '{imap.yandex.ru:993/imap/ssl}Drafts') {
continue;
call_user_func($progressCallback, "Найдено " . count($emails) . " писем.");
}
foreach ($emails as $index => $email_number) {
+ $countAllMessages += 1;
$overview = imap_fetch_overview($inbox, $email_number, 0);
$structure = imap_fetchstructure($inbox, $email_number);
$htmlMessage = '';
$savedEmail->email_status = 1;
$savedEmail->save();
}
- $messages[] = [
+ $message = [
'subject' => $subject,
'subject_index' => $subjectIndex,
'from' => $from,
'date' => $date,
'body' => $htmlMessage,
];
+ $countProcessedMessages += MarketplaceService::processMessage($message);
+
if ($unseen) {
self::imap_debug_log("Установка флага SEEN для сообшения #" . $email_number, $debugMode, $progressCallback);
}
- //usort($messages, fn($a, $b) => $a['subject_index'] <=> $b['subject_index']);
- usort($messages, fn($a, $b) => strtotime($a['date']) <=> strtotime($b['date']));
- return $messages;
+
+ return ['processed' => $countProcessedMessages, 'all' => $countAllMessages];
}
public static function saveEmailIfNotExists($subject, $subjectPattern, $from, $to, $date, $body)
return $count;
}
+ public static function processMessage($message)
+ {
+ $count = 0;
+ if ($message) {
+ $store = MarketplaceStore::getWarehouseGuidByAccountEmail($message['to']) ?? 206008;
+
+ $order = self::getOrdersDataFromMessage($message);
+
+ if ($message['subject_index'] == self::SUBJECT_INDEX[self::SUBJECT_NEW]) {
+ $statusCode = 'PROCESSING';
+ $substatusCode = 'STARTED';
+ } elseif ($message['subject_index'] == self::SUBJECT_INDEX[self::SUBJECT_APPROVED]) {
+ $statusCode = 'PROCESSING';
+ $substatusCode = 'APPROVED';
+ } elseif ($message['subject_index'] == self::SUBJECT_INDEX[self::SUBJECT_CANCELLED]) {
+ $statusCode = 'CANCELLED';
+ $substatusCode = 'USER_CHANGED_MIND';
+ } elseif ($message['subject_index'] == self::SUBJECT_INDEX[self::SUBJECT_CHANGED]) {
+ $statusCode = 'PROCESSING';
+ $substatusCode = 'CHANGED';
+ } elseif ($message['subject_index'] == self::SUBJECT_INDEX[self::SUBJECT_DELIVERED]) {
+ $statusCode = 'DELIVERED';
+ $substatusCode = 'DELIVERY_SERVICE_DELIVERED';
+ }
+ $count = self::processFlowwowOrders($order, $store, $statusCode, $substatusCode, $message['subject_index']);
+
+ }
+ return $count;
+ }
+
public static function getOrdersDataFromMessage($message)
{
$html = $message['body'];