]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
Вывод сообщений на странице просмотра
authorfomichev <vladimir.fomichev@erp-flowers.ru>
Thu, 23 Jan 2025 14:38:29 +0000 (17:38 +0300)
committerfomichev <vladimir.fomichev@erp-flowers.ru>
Thu, 23 Jan 2025 14:38:29 +0000 (17:38 +0300)
erp24/controllers/UsersMessageManagementController.php
erp24/records/UsersMessageManagement.php
erp24/views/users-message-management/view-kogort.php

index 04b33ea672e0eff96f1ac0d59516bfd0ac74e581..97fbc85ed334880464601730fe586cbc0d2f3361 100644 (file)
@@ -287,11 +287,28 @@ class UsersMessageManagementController extends Controller
         $data = Users::prepareDataForExport($dataKogort, $date, $type);
 
         $messagesSettings = UsersMessageManagement::find()->one();
-        $message = '';
-        if ($messagesSettings && $messagesSettings->{UsersMessageManagement::TYPE_MESSAGE[$type]}) {
-            $message = $messagesSettings->replaceShortcodes(
-                $messagesSettings->{UsersMessageManagement::TYPE_MESSAGE[$type]}, $targetDate->target_date
-            );
+        $messages = [];
+
+        if ($messagesSettings) {
+            $messageType = UsersMessageManagement::TYPE_MESSAGE[$type];
+
+            if (is_array($messageType)) {
+                foreach ($messageType as $field) {
+                    if (!empty($messagesSettings->{$field})) {
+                        $messages[$field] = $messagesSettings->replaceShortcodes(
+                            $messagesSettings->{$field},
+                            $targetDate->target_date
+                        );
+                    }
+                }
+            } else {
+                if (!empty($messagesSettings->{$messageType})) {
+                    $messages[] = $messagesSettings->replaceShortcodes(
+                        $messagesSettings->{$messageType},
+                        $targetDate->target_date
+                    );
+                }
+            }
         }
         $models = ArrayHelper::index($data, 'phone');
 
@@ -307,7 +324,7 @@ class UsersMessageManagementController extends Controller
             'date' => $date,
             'targetDate' => $targetDate,
             'type' => $type,
-            'message' => $message,
+            'messages' => $messages,
         ]);
     }
 
@@ -404,114 +421,4 @@ class UsersMessageManagementController extends Controller
         return ['success' => false, 'message' => 'Invalid request'];
     }
 
-
-    public function actionSyncTelegramUsers()
-    {
-        $remoteDb = Yii::$app->dbRemote;
-        $batchSize = 500;
-        $offset = 0;
-
-        //$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
-                ->createCommand('SELECT * FROM chatbot_telegram_users LIMIT :limit OFFSET :offset', [
-                    ':limit' => $batchSize,
-                    ':offset' => $offset,
-                ])->queryAll();
-
-            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'];
-
-                $user = UsersTelegram::findOne(['chat_id' => $chatId]);
-
-                if (!$user) {
-                    $user = new UsersTelegram([
-                        'chat_id' => $chatId,
-                        'phone' => $phone,
-                        'username' => $username ?? 'Клиент из чатбота',
-                        'first_name' => $firstName ?? 'Клиент из чатбота',
-                        'is_blocked' => $isBlocked,
-                        '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);
-
-                if (empty($phone)) {
-                 //   fputcsv($fileHandle, [$phone, $username, $chatId, $isBlocked, $isRegistered, 'Отсутствует телефон'], ';');
-                     continue;
-                }
-
-                $existingLog = UsersTelegramLog::find()
-                    ->where(['phone' => $phone, 'date_end' => null])
-                    ->one();
-
-                if ($existingLog) {
-                    if (
-                        $existingLog->is_blocked != $isBlocked ||
-                        $existingLog->is_registered != $isRegistered
-                    ) {
-                        $existingLog->date_end = date('Y-m-d H:i:s');
-                        $existingLog->save(false);
-
-                        $this->createTelegramLog($phone, $isBlocked, $isRegistered);
-                    }
-                } else {
-                    $this->createTelegramLog($phone, $isBlocked, $isRegistered);
-                }
-
-
-            }
-
-            $offset += $batchSize;
-
-        }
-
-       // fclose($fileHandle);
-
-        return 'ok';
-    }
-
-    /**
-     * Создает новую запись в таблице users_telegram_log.
-     *
-     * @param string $phone
-     * @param int $isBlocked
-     * @param int $isRegistered
-     */
-    protected function createTelegramLog($phone, $isBlocked, $isRegistered)
-    {
-        $log = new UsersTelegramLog([
-            'phone' => $phone,
-            'is_blocked' => $isBlocked,
-            'is_registered' => $isRegistered,
-            'active' => ($isBlocked == 0 && $isRegistered == 1) ? 1 : 0,
-        ]);
-        $log->save(false);
-    }
 }
index d17f782b0354235887be409f983c7a61df6ea83c..a8b69e79e6f6ea5635d82ac44b48be5d5a6beb88 100644 (file)
@@ -41,10 +41,17 @@ class UsersMessageManagement extends \yii\db\ActiveRecord
     const TYPE_CALL = 'call';
 
     const TYPE_MESSAGE = [
-        'target' => 'offer_1',
-        'whatsapp' => 'offer_whatsapp',
+        'target' => ['offer_1', 'offer_text'],
+        'whatsapp' => ['offer_whatsapp', 'offer_2'],
         'call' => 'offer_text',
         ];
+
+    const TYPE_MESSAGE_LABELS = [
+        'offer_1' => 'Первое сообщение в чатбот',
+        'offer_text' => 'Сообщение когорты Таргет',
+        'offer_whatsapp' => 'Сообщение когорты Whatsapp',
+        'offer_2' => 'Второе сообщение в чатбот',
+    ];
     /**
      * {@inheritdoc}
      */
index 85dc45821de53a8080cf6756e9ce728b65bd926f..31408d89849d8659d49db5880cbf88edfc33fd90 100644 (file)
@@ -3,13 +3,14 @@
 use yii\grid\GridView;
 use yii\helpers\ArrayHelper;
 use yii\helpers\Html;
+use yii_app\records\UsersMessageManagement;
 
 
 /** @var yii\data\ActiveDataProvider $dataProvider */
 /** @var string $date */
 /** @var string $targetDate */
 /** @var string $type */
-/** @var string $message */
+/** @var array $messages */
 
 $this->title = 'Когорта пользователей';
 $this->params['breadcrumbs'][] = $this->title;
@@ -25,11 +26,8 @@ $columns = array_map(function ($attribute) {
     ];
 }, $attributes);
 array_unshift($columns, ['class' => 'yii\grid\SerialColumn']);
-if ($message == '') {
-    $message = Html::a('Нет сообщения для рассылки - сформируйте ее в интерфейсе', ['index'], ['class' => 'btn btn-link']);
-} else {
-    $message = Html::encode($message);
-}
+
+
 
 ?>
 <?= Html::a('Назад', ['index'], ['class' => 'btn btn-primary m-5']) ?>
@@ -42,22 +40,30 @@ if ($message == '') {
 
 <?php if ($type != 'call') { ?>
     <div class="row mb-6">
+<?php foreach ($messages as $key => $message) {
+    if ($message == '') {
+        $message = Html::a('Нет сообщения для рассылки - сформируйте ее в интерфейсе', ['index'], ['class' => 'btn btn-link']);
+    } else {
+        $message = Html::encode($message);
+    }
+?>
         <div class="col-lg-4 col-md-6 col-sm-8 col-xs-12 col-xl-4">
 
-            <div class="accordion accordion-flush" id="accordionFlushExample">
+            <div class="accordion accordion-flush" id="accordionFlushExample<?php echo $key ?>">
                 <div class="accordion-item">
-                    <h2 class="accordion-header" id="flush-headingOne">
-                        <button class="accordion-button border collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#flush-collapseOne" aria-expanded="false" aria-controls="flush-collapseOne">
-                            Сообщение когорты:
+                    <h2 class="accordion-header" id="flush-headingOne<?php echo $key ?>">
+                        <button class="accordion-button border collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#flush-collapseOne<?php echo $key ?>" aria-expanded="false" aria-controls="flush-collapseOne<?php echo $key ?>">
+                             <?php echo UsersMessageManagement::TYPE_MESSAGE_LABELS[$key] ?>:
                         </button>
                     </h2>
-                    <div id="flush-collapseOne" class="accordion-collapse collapse" aria-labelledby="flush-headingOne" data-bs-parent="#accordionFlushExample">
+                    <div id="flush-collapseOne<?php echo $key ?>" class="accordion-collapse collapse" aria-labelledby="flush-headingOne<?php echo $key ?>" data-bs-parent="#accordionFlushExample<?php echo $key ?>">
                         <div class="accordion-body card card-body border"><?= $message  ?></div>
                     </div>
                 </div>
 
             </div>
         </div>
+<?php } ?>
     </div>
 <?php } ?>