use yii_app\records\SentKogort;
use yii_app\records\Users;
use yii_app\records\UsersMessageManagement;
+use yii_app\records\UsersTelegramChatId;
use yii_app\records\UsersTelegramLog;
class CronController extends Controller
$batchSize = 500;
$offset = 0;
- // $csvFilePath = Yii::getAlias('@runtime/missing_users.csv');
- // $fileHandle = fopen($csvFilePath, 'w');
- // fputcsv($fileHandle, ['phone', 'username', 'chat_id', 'is-blocked', 'is_registered', 'reason'], ';');
+ $csvFilePath = Yii::getAlias('@data/missing_users.csv');
+ $fileHandle = fopen($csvFilePath, 'w');
+ fputcsv($fileHandle, ['phone', 'username', 'chat_id', 'is-blocked', 'is_registered', 'reason'], ';');
while (true) {
$chatbotUsers = $remoteDb
$phone = $remoteUser['phone'];
$chatId = $remoteUser['chat_id'];
$username = $remoteUser['username'];
+ $firstName = $remoteUser['first_name'];
$isBlocked = (int)$remoteUser['is_blocked'];
$isRegistered = (int)$remoteUser['is_registered'];
if (empty($phone)) {
- // fputcsv($fileHandle, [$phone, $username, $chatId, $isBlocked, $isRegistered, 'Отсутствует телефон'], ';');
- continue;
+ fputcsv($fileHandle, [$phone, $username, $chatId, $isBlocked, $isRegistered, 'Отсутствует телефон'], ';');
+ // continue;
}
$existingLog = UsersTelegramLog::find()
$this->createTelegramLog($phone, $isBlocked, $isRegistered);
}
- $user = Users::findOne(['phone' => $phone]);
+ $user = UsersTelegramChatId::findOne(['chat_id' => $chatId]);
if (!$user) {
- // fputcsv($fileHandle, [$phone, $username, $chatId, $isBlocked, $isRegistered, 'Пользователь не найден'], ';');
- continue;
- /* $user = new Users([
+ $user = new UsersTelegramChatId([
+ 'chat_id' => $chatId,
'phone' => $phone,
- 'name' => $username ?: 'Клиент из чатбота',
- 'date' => date('Y-m-d H:i:s'),
- 'password' => '00000',
- 'keycode' => '00000',
+ 'username' => $username ?? 'Клиент из чатбота',
+ 'first_name' => $firstName ?? 'Клиент из чатбота',
+ 'is_blocked' => $isBlocked,
+ 'is_registered' => $isRegistered,
]);
- $user->save(false);*/
+ $user->save(false);
}
-
- if (empty($user->telegram_chat_id)) {
- $user->telegram_chat_id = $chatId;
- }
-
- if ($isRegistered && $user->telegram_is_subscribed == 0) {
- $user->telegram_is_subscribed = 1;
- } elseif (!$isRegistered && $user->telegram_is_subscribed == 1) {
- $user->telegram_is_subscribed = 0;
- $user->telegram_unsubscribed_at = date('Y-m-d H:i:s');
+ 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);
$this->stdout("Обработано записей: {$offset}\n", BaseConsole::FG_GREEN);
}
- // fclose($fileHandle);
+ fclose($fileHandle);
$this->stdout(
"Синхронизация завершена успешно. Записи без пользователей сохранены в {$csvFilePath}\n",
BaseConsole::FG_GREEN
use yii_app\records\UsersEvents;
use yii_app\records\UsersMessageManagement;
use yii_app\records\UsersMessageManagementLogs;
+use yii_app\records\UsersTelegramChatId;
use yii_app\records\UsersTelegramLog;
class UsersMessageManagementController extends Controller
$batchSize = 500;
$offset = 0;
- // $csvFilePath = Yii::getAlias('@runtime/missing_users.csv');
- // $fileHandle = fopen($csvFilePath, 'w');
- // fputcsv($fileHandle, ['phone', 'username', 'chat_id', 'is-blocked', 'is_registered', 'reason'], ';');
+ $csvFilePath = Yii::getAlias('@data/missing_users.csv');
+ $fileHandle = fopen($csvFilePath, 'w');
+ fputcsv($fileHandle, ['phone', 'username', 'chat_id', 'is-blocked', 'is_registered', 'reason'], ';');
while (true) {
$chatbotUsers = $remoteDb
if (empty($chatbotUsers)) {
break;
}
+ if ($offset == 1500) {
+ break;
+ }
foreach ($chatbotUsers as $remoteUser) {
$phone = $remoteUser['phone'];
$chatId = $remoteUser['chat_id'];
$username = $remoteUser['username'];
+ $firstName = $remoteUser['first_name'];
$isBlocked = (int)$remoteUser['is_blocked'];
$isRegistered = (int)$remoteUser['is_registered'];
if (empty($phone)) {
- // fputcsv($fileHandle, [$phone, $username, $chatId, $isBlocked, $isRegistered, 'Отсутствует телефон'], ';');
- continue;
+ fputcsv($fileHandle, [$phone, $username, $chatId, $isBlocked, $isRegistered, 'Отсутствует телефон'], ';');
+ // continue;
}
$existingLog = UsersTelegramLog::find()
$this->createTelegramLog($phone, $isBlocked, $isRegistered);
}
- $user = Users::findOne(['phone' => $phone]);
+ $user = UsersTelegramChatId::findOne(['chat_id' => $chatId]);
if (!$user) {
- // fputcsv($fileHandle, [$phone, $username, $chatId, $isBlocked, $isRegistered, 'Пользователь не найден'], ';');
- continue;
- }
-
- if (empty($user->telegram_chat_id)) {
- $user->telegram_chat_id = $chatId;
+ $user = new UsersTelegramChatId([
+ 'chat_id' => $chatId,
+ 'phone' => $phone,
+ 'username' => $username ?? 'Клиент из чатбота',
+ 'first_name' => $firstName ?? 'Клиент из чатбота',
+ 'is_blocked' => $isBlocked,
+ 'is_registered' => $isRegistered,
+ ]);
+ $user->save(false);
}
-
- if ($isRegistered && $user->telegram_is_subscribed == 0) {
- $user->telegram_is_subscribed = 1;
- } elseif (!$isRegistered && $user->telegram_is_subscribed == 1) {
- $user->telegram_is_subscribed = 0;
- $user->telegram_unsubscribed_at = date('Y-m-d H:i:s');
+ 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);
}
- // fclose($fileHandle);
+ fclose($fileHandle);
+
return 'ok';
}