"Всего телефонов в когорте {$countPhones} записей.\n",
BaseConsole::FG_GREEN
);
+ $sentStatusKogort = SentKogort::find()
+ ->select('phones')
+ ->where(['kogort_date' => $kogortDate])
+ ->andWhere(['target' => $targetDate])
+ ->andWhere(['status' => 2])
+ ->column();
+
// Выбираем номера для отправки через бота
$telegramUsers = UsersTelegram::find()
->where(['is_blocked' => 0, 'is_registered' => 1])
->select(['phone', 'chat_id'])
->asArray()
->all();
- $phonesArray = array_column($telegramUsers, 'phone');
+
+ $phonesArray = array_diff(array_column($telegramUsers, 'phone'), $sentStatusKogort);
+
$chatIdsArray = array_column($telegramUsers, 'chat_id');
- $countTelegramPhones = count($telegramUsers);
+ $countTelegramPhones = count($phonesArray);
$this->stdout(
"Всего телефонов в рассылке телеграма {$countTelegramPhones} записей.\n",
BaseConsole::FG_GREEN
);
if (!empty($telegramUsers)) {
foreach ($telegramUsers as $telegramUser) {
- $messageData = [];
- $messageData['chat_id'] = $telegramUser['chat_id'];
- $messageData['phone'] = $telegramUser['phone'];
- $messageData['kogort_date'] = $kogortDate;
- $messageData['target_date'] = $targetDate;
- $messageData['type'] = 1;
- $messageData['message'] = $messagesSettings->replaceShortcodes($messagesSettings->offer_1);
+ if (!in_array($telegramUser['phone'], $sentStatusKogort)) {
+ $messageData = [];
+ $messageData['chat_id'] = $telegramUser['chat_id'];
+ $messageData['phone'] = $telegramUser['phone'];
+ $messageData['kogort_date'] = $kogortDate;
+ $messageData['target_date'] = $targetDate;
+ $messageData['type'] = 1;
+ $messageData['message'] = $messagesSettings->replaceShortcodes($messagesSettings->offer_1);
Yii::$app->queue->push(new SendTelegramMessageDBJob([
'messageData' => $messageData,
]));
Yii::$app->queue->push(new SendTelegramMessageJob([
- 'chatId' => $telegramUser['chat_id'],
- 'message' => $messageData['message'],
+ 'chatId' => $telegramUser['chat_id'],
+ 'message' => $messageData['message'],
]));
+ }
}
$updatedCount = SentKogort::updateAll(
);
if ($i == 0) {
+ $sentStatusKogort = SentKogort::find()
+ ->select('phones')
+ ->where(['kogort_date' => $kogortDate])
+ ->andWhere(['target' => $targetDate])
+ ->andWhere(['status' => 3])
+ ->column();
// Выбираем номера для отправки через бота
$telegramUsers = UsersTelegram::find()
->where(['is_blocked' => 0, 'is_registered' => 1])
->select(['phone', 'chat_id'])
->asArray()
->all();
- $phonesArray = array_column($telegramUsers, 'phone');
+ $phonesArray = array_diff(array_column($telegramUsers, 'phone'), $sentStatusKogort);
$chatIdsArray = array_column($telegramUsers, 'chat_id');
- $countTelegramPhones = count($telegramUsers);
+ $countTelegramPhones = count($phonesArray);
$this->stdout(
"Всего телефонов в рассылке телеграма {$countTelegramPhones} записей.\n",
BaseConsole::FG_GREEN
if (!empty($telegramUsers)) {
foreach ($telegramUsers as $telegramUser) {
- $messageData = [];
- $messageData['chat_id'] = $telegramUser['chat_id'];
- $messageData['phone'] = $telegramUser['phone'];
- $messageData['kogort_date'] = $kogortDate;
- $messageData['target_date'] = $targetDate;
- $messageData['type'] = 2;
- $messageData['message'] = $messagesSettings->replaceShortcodes($messagesSettings->offer_2);
-
- Yii::$app->queue->push(new SendTelegramMessageDBJob([
- 'messageData' => $messageData,
- ]));
- Yii::$app->queue->push(new SendTelegramMessageJob([
- 'chatId' => $telegramUser['chat_id'],
- 'message' => $messageData['message'],
- ]));
+ if (!in_array($telegramUser['phone'], $sentStatusKogort)) {
+ $messageData = [];
+ $messageData['chat_id'] = $telegramUser['chat_id'];
+ $messageData['phone'] = $telegramUser['phone'];
+ $messageData['kogort_date'] = $kogortDate;
+ $messageData['target_date'] = $targetDate;
+ $messageData['type'] = 2;
+ $messageData['message'] = $messagesSettings
+ ->replaceShortcodes($messagesSettings->offer_2);
+
+ Yii::$app->queue->push(new SendTelegramMessageDBJob([
+ 'messageData' => $messageData,
+ ]));
+ Yii::$app->queue->push(new SendTelegramMessageJob([
+ 'chatId' => $telegramUser['chat_id'],
+ 'message' => $messageData['message'],
+ ]));
+ }
}
$updatedCount = SentKogort::updateAll(
['status' => SentKogort::STATUSES['second']], // Устанавливаем статус "вторая рассылка"
$kogortPhones = Users::formKogortByDateAndType($targetDate, 'whatsapp');
if (!empty($kogortPhones)) {
- Users::saveKogort($kogortPhones['whatsapp'], $kogortDate, $targetDate, SentKogort::KOGORT_NUMBERS['whatsapp'], true);
+ Users::saveKogort(
+ $kogortPhones['whatsapp'],
+ $kogortDate,
+ $targetDate,
+ SentKogort::KOGORT_NUMBERS['whatsapp'],
+ true
+ );
$this->stdout(
"Когорта для Вотсапа на {$kogortDate} для целевой даты {$targetDate} успешно сохранена.\n",
BaseConsole::FG_GREEN