From d0a9c40f7df2696268569acfc57305dc64cc8f24 Mon Sep 17 00:00:00 2001 From: fomichev Date: Thu, 26 Dec 2024 14:07:37 +0300 Subject: [PATCH] =?utf8?q?=D0=9F=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D0=B0?= =?utf8?q?=20=D0=BD=D0=B0=20hold=20>=200=20=D0=B8=20=D0=B8=20=D0=BF=D0=BE?= =?utf8?q?=D0=BA=D0=B0=D0=B7=20=D1=81=D0=BE=D0=BE=D0=B1=D1=89=D0=B5=D0=BD?= =?utf8?q?=D0=B8=D1=8F=20=D0=B2=20=D1=82=D0=B0=D0=B1=D0=BB=D0=B8=D1=86?= =?utf8?q?=D0=B5=20=D0=BD=D0=BE=D0=BC=D0=B5=D1=80=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- erp24/commands/CronController.php | 34 +++++++++---------- .../UsersMessageManagementController.php | 6 ++++ erp24/records/Users.php | 5 ++- erp24/records/UsersMessageManagement.php | 6 ++++ .../users-message-management/view-kogort.php | 3 ++ 5 files changed, 34 insertions(+), 20 deletions(-) diff --git a/erp24/commands/CronController.php b/erp24/commands/CronController.php index 1aaf979a..bd304748 100644 --- a/erp24/commands/CronController.php +++ b/erp24/commands/CronController.php @@ -195,11 +195,13 @@ class CronController extends Controller } $time = $this->time ? (int)$this->time : time(); - + $stepsBack = $this->stepsBack ?? 0; $currentYear = date('Y', $time); $currentMonth = date('m', $time); + $currentDay = date('j', $time); + $currentDate = sprintf('%04d-%02d-%02d', $currentYear, $currentMonth, $currentDay); - if (date('j', $time) == 1) { + /*if (date('j', $time) == 1) { $startDay = 1; $endDay = cal_days_in_month(CAL_GREGORIAN, $currentMonth, $currentYear); } elseif (date('j', $time) == 21) { @@ -210,27 +212,25 @@ class CronController extends Controller } else { $this->stdout("Формирование когорты в текущий день невозможно. Пропускаю.\n", BaseConsole::FG_YELLOW); return ExitCode::UNAVAILABLE; - } + }*/ - for ($day = $startDay; $day <= $endDay; $day++) { - $currentDate = sprintf('%04d-%02d-%02d', $currentYear, $currentMonth, $day); + $messagesSettings = UsersMessageManagement::find() + ->where(['active' => 1]) + ->one(); - /*if ( - SentKogort::find() - ->where(['kogort_date' => $currentDate, 'kogort_number' => SentKogort::KOGORT_NUMBERS['target']]) - ->exists() - ) { - $this->stdout("Когорта для даты {$currentDate} уже существует. Пропускаю...\n", BaseConsole::FG_YELLOW); - continue; - }*/ + $step1 = $messagesSettings ? $messagesSettings->day_before_step1 : 10; + + for ($i = $stepsBack; $i >= 0; $i--) { + $dateToProcess = date('Y-m-d', strtotime("-$i days", strtotime($currentDate))); + $startDate = date('Y-m-d', strtotime("+$step1 days", strtotime($dateToProcess))); - $kogortPhones = Users::formKogortByDateAndType($currentDate, 'target'); + $kogortPhones = Users::formKogortByDateAndType($startDate, 'target'); if (!empty($kogortPhones)) { - Users::saveKogort($kogortPhones, $currentDate, SentKogort::KOGORT_NUMBERS['target']); - $this->stdout("Когорта для даты {$currentDate} успешно сохранена.\n", BaseConsole::FG_GREEN); + Users::saveKogort($kogortPhones, $startDate, SentKogort::KOGORT_NUMBERS['target']); + $this->stdout("Когорта для даты {$startDate} успешно сохранена.\n", BaseConsole::FG_GREEN); } else { - $this->stdout("Нет данных для формирования когорты на дату {$currentDate}.\n", BaseConsole::FG_RED); + $this->stdout("Нет данных для формирования когорты на дату {$startDate}.\n", BaseConsole::FG_RED); } } diff --git a/erp24/controllers/UsersMessageManagementController.php b/erp24/controllers/UsersMessageManagementController.php index da9daa0c..633f7712 100644 --- a/erp24/controllers/UsersMessageManagementController.php +++ b/erp24/controllers/UsersMessageManagementController.php @@ -280,6 +280,11 @@ class UsersMessageManagementController extends Controller $data = Users::prepareDataForExport($dataKogort, $date, $type); + $messagesSettings = UsersMessageManagement::find() + ->where(['active' => 1]) + ->one(); + $message = $messagesSettings->{UsersMessageManagement::TYPE_MESSAGE[$type]} ?? ''; + $dataProvider = new ArrayDataProvider([ 'allModels' => $data, 'pagination' => [ @@ -291,6 +296,7 @@ class UsersMessageManagementController extends Controller 'dataProvider' => $dataProvider, 'date' => $date, 'type' => $type, + 'message' => $message, ]); } diff --git a/erp24/records/Users.php b/erp24/records/Users.php index 3e437051..7a7a62f0 100755 --- a/erp24/records/Users.php +++ b/erp24/records/Users.php @@ -487,7 +487,7 @@ class Users extends \yii\db\ActiveRecord $usersArray = array_unique(array_merge($salesPhone, $memorableDate)); - if ($holdActive == 1) { + if ($hold > 0) { $phonesSent = SentKogort::find() ->select('phone') ->where(['between', 'kogort_date', @@ -495,10 +495,9 @@ class Users extends \yii\db\ActiveRecord date('Y-m-d', strtotime("$startDate -1 days"))]) ->column(); } else { - $phonesSent =[]; + $phonesSent = []; } - $filteredUsers = array_diff($usersArray, $phonesSent); $kogortData = array_values($filteredUsers); diff --git a/erp24/records/UsersMessageManagement.php b/erp24/records/UsersMessageManagement.php index ebe801f4..3414ea65 100644 --- a/erp24/records/UsersMessageManagement.php +++ b/erp24/records/UsersMessageManagement.php @@ -37,6 +37,12 @@ class UsersMessageManagement extends \yii\db\ActiveRecord const TYPE_TARGET = 'target'; const TYPE_WHATSAPP = 'whatsapp'; const TYPE_CALL = 'call'; + + const TYPE_MESSAGE = [ + 'target' => 'offer_text', + 'whatsapp' => 'offer_whatsapp', + //'call' => 'offer_text', + ]; /** * {@inheritdoc} */ diff --git a/erp24/views/users-message-management/view-kogort.php b/erp24/views/users-message-management/view-kogort.php index 4b675139..3a7ff7a2 100644 --- a/erp24/views/users-message-management/view-kogort.php +++ b/erp24/views/users-message-management/view-kogort.php @@ -8,6 +8,7 @@ use yii\helpers\Html; /** @var yii\data\ActiveDataProvider $dataProvider */ /** @var string $date */ /** @var string $type */ +/** @var string $message */ $this->title = 'Когорта пользователей'; $this->params['breadcrumbs'][] = $this->title; @@ -34,6 +35,8 @@ array_unshift($columns, ['class' => 'yii\grid\SerialColumn']);

title) ?>: -

+

Сообщение:

+ $dataProvider, -- 2.39.5