$stepsBack = $this->stepsBack ?? $step1;
// Генерация для прошлых дат (от текущей даты на $step1 дней назад)
- for ($i = $stepsBack; $i > 0; $i--) {
+ for ($i = $stepsBack; $i >= 0; $i--) {
$kogortDate = date('Y-m-d', strtotime("-$i days", strtotime($currentDate))); // Дата когорты
$targetDate = date('Y-m-d', strtotime("+$step1 days", strtotime($kogortDate))); // Целевая дата
}
}
- // Генерация для текущей даты
- $kogortDate = $currentDate;
- $targetDate = date('Y-m-d', strtotime("+$step1 days", strtotime($kogortDate)));
-
- $kogortPhones = Users::formKogortByDateAndType($targetDate, 'target');
-
- if (!empty($kogortPhones)) {
- Users::saveKogort($kogortPhones, $kogortDate, $targetDate, SentKogort::KOGORT_NUMBERS['target']);
- $this->stdout(
- "Когорта таргета на {$kogortDate} для целевой даты {$targetDate} успешно сохранена.\n",
- BaseConsole::FG_GREEN
- );
- $countPhones = count($kogortPhones);
- $this->stdout(
- "Всего телефонов в когорте {$countPhones} записей.\n",
- BaseConsole::FG_GREEN
- );
- } else {
- $this->stdout(
- "Нет данных для формирования когорты для целевой даты {$targetDate}.\n",
- BaseConsole::FG_RED
- );
- }
-
// Генерация для будущих дат (от текущей даты на $step1 дней вперёд)
for ($i = 1; $i <= $step1; $i++) {
$kogortDate = date('Y-m-d', strtotime("+$i days", strtotime($currentDate))); // Дата когорты
BaseConsole::FG_GREEN
);
if (!empty($telegramUsers)) {
+ $messageText = $messagesSettings->replaceShortcodes(
+ $messagesSettings->offer_1,
+ $targetDate
+ );
foreach ($telegramUsers as $telegramUser) {
if (!in_array($telegramUser['phone'], $sentStatusKogort)) {
$messageData = [];
$messageData['kogort_date'] = $kogortDate;
$messageData['target_date'] = $targetDate;
$messageData['type'] = 1;
- $messageData['message'] = $messagesSettings->replaceShortcodes(
- $messagesSettings->offer_1,
- $targetDate
- );
+ $messageData['message'] = $messageText;
Yii::$app->queue->push(new SendTelegramMessageDBJob([
'messageData' => $messageData,
$tip_sale = "target";
$name = "Начисление бонусов на дату {$kogortDate}";
$daysToEnd = $step1 + 1;
+ $userBonusExist = UsersBonus::find()
+ ->select(['phone'])
+ ->where(['phone' => $kogortPhones])
+ ->andWhere(['tip_sale' => 'target'])
+ ->andWhere(['date_start' => $kogortDate])
+ ->column();
foreach ($kogortPhones as $key => $phone) {
- $userBonusExist = UsersBonus::find()
- ->where(['phone' => $phone])
- ->andWhere(['tip_sale' => 'target'])
- ->andWhere(['date_start' => $kogortDate])
- ->one();
- if (!$userBonusExist) {
+ if (!in_array($phone, $userBonusExist)) {
$userBonus4 = new UsersBonus();
$userBonus4->phone = '' . $phone;
$userBonus4->name = $name;
);
if (!empty($telegramUsers)) {
+ $messageText = $messagesSettings
+ ->replaceShortcodes($messagesSettings->offer_2, $targetDate);
foreach ($telegramUsers as $telegramUser) {
if (!in_array($telegramUser['phone'], $sentStatusKogort)) {
$messageData = [];
$messageData['kogort_date'] = $kogortDate;
$messageData['target_date'] = $targetDate;
$messageData['type'] = 2;
- $messageData['message'] = $messagesSettings
- ->replaceShortcodes($messagesSettings->offer_2, $targetDate);
+ $messageData['message'] = $messageText;
Yii::$app->queue->push(new SendTelegramMessageDBJob([
'messageData' => $messageData,
}
foreach ($chatbotUsers as $remoteUser) {
+ if (empty($phone)) {
+ // fputcsv($fileHandle, [$phone, $username, $chatId, $isBlocked, $isRegistered, 'Отсутствует телефон'], ';');
+ continue;
+ }
$phone = $remoteUser['phone'];
$chatId = $remoteUser['chat_id'];
$username = $remoteUser['username'];
'is_registered' => $isRegistered,
]);
$user->save(false);
- }
- if (
- $user->is_blocked != $isBlocked ||
- $user->is_registered != $isRegistered ||
- $user->phone != $phone
- ) {
- $user->is_blocked = $isBlocked;
- $user->is_registered = $isRegistered;
- $user->phone = $phone;
- }
-
- $user->save(false);
+ } else {
+ if (
+ $user->is_blocked != $isBlocked ||
+ $user->is_registered != $isRegistered ||
+ $user->phone != $phone
+ ) {
+ $user->is_blocked = $isBlocked;
+ $user->is_registered = $isRegistered;
+ $user->phone = $phone;
+ }
- if (empty($phone)) {
- // fputcsv($fileHandle, [$phone, $username, $chatId, $isBlocked, $isRegistered, 'Отсутствует телефон'], ';');
- continue;
+ $user->save(false);
}
$existingLog = UsersTelegramLog::find()