public function actionGenerateTargetKogorts()
{
+ $messagesSettings = UsersMessageManagement::find()->one();
+ if (empty($messagesSettings) && $messagesSettings->active == 0) {
+ $this->stdout("Рассылка неактивна. Генерация корорт прервана.\n", BaseConsole::FG_RED);
+ return ExitCode::UNAVAILABLE;
+ }
+
date_default_timezone_set('Europe/Moscow');
if ($this->time && !is_numeric($this->time)) {
$currentDay = date('j', $time);
$currentDate = sprintf('%04d-%02d-%02d', $currentYear, $currentMonth, $currentDay);
- /*if (date('j', $time) == 1) {
- $startDay = 1;
- $endDay = cal_days_in_month(CAL_GREGORIAN, $currentMonth, $currentYear);
- } elseif (date('j', $time) == 21) {
- $startDay = 1;
- $endDay = 10;
- $currentMonth = ($currentMonth == 12) ? 1 : (int)$currentMonth + 1;
- $currentYear = ($currentMonth == 1) ? (int)$currentYear + 1 : $currentYear;
- } else {
- $this->stdout("Формирование когорты в текущий день невозможно. Пропускаю.\n", BaseConsole::FG_YELLOW);
- return ExitCode::UNAVAILABLE;
- }*/
-
- $messagesSettings = UsersMessageManagement::find()
- // ->where(['active' => 1])
- ->one();
-
$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($dateToProcess, 'target');
+ $kogortPhones = Users::formKogortByDateAndType($startDate, 'target');
if (!empty($kogortPhones)) {
- Users::saveKogort($kogortPhones, $dateToProcess, SentKogort::KOGORT_NUMBERS['target']);
- $this->stdout("Когорта для даты {$dateToProcess} успешно сохранена.\n", BaseConsole::FG_GREEN);
+ Users::saveKogort($kogortPhones, $startDate, SentKogort::KOGORT_NUMBERS['target']);
+ $this->stdout("Когорта для даты {$startDate} успешно сохранена.\n", BaseConsole::FG_GREEN);
} else {
- $this->stdout("Нет данных для формирования когорты на дату {$dateToProcess}.\n", BaseConsole::FG_RED);
+ $this->stdout("Нет данных для формирования когорты на дату {$startDate}.\n", BaseConsole::FG_RED);
}
}
*/
public function actionGenerateWhatsappKogorts()
{
+ $messagesSettings = UsersMessageManagement::find()->one();
+ if (empty($messagesSettings) && $messagesSettings->active == 0) {
+ $this->stdout("Рассылка неактивна. Генерация корорт прервана.\n", BaseConsole::FG_RED);
+ return ExitCode::UNAVAILABLE;
+ }
date_default_timezone_set('Europe/Moscow');
if ($this->time && !is_numeric($this->time)) {
$currentDate = $this->time ? date('Y-m-d', (int)$this->time) : date('Y-m-d');
$stepsBack = $this->stepsBack ?? 0;
- $messagesSettings = UsersMessageManagement::find()
- // ->where(['active' => 1])
- ->one();
-
$step2 = $messagesSettings ? $messagesSettings->day_before_step2 : 4;
for ($i = $stepsBack; $i >= 0; $i--) {
$dateToProcess = date('Y-m-d', strtotime("-$i days", strtotime($currentDate)));
$startDate = date('Y-m-d', strtotime("+$step2 days", strtotime($dateToProcess)));
- /* if (
- SentKogort::find()
- ->where(['kogort_date' => $startDate, 'kogort_number' => SentKogort::KOGORT_NUMBERS['whatsapp']])
- ->exists()
- ) {
- $this->stdout(
- "Когорта для Вотсапа на дату {$startDate} уже существует. Пропустить...\n",
- BaseConsole::FG_YELLOW
- );
- continue;
- }*/
-
- $kogortPhones = Users::formKogortByDateAndType($dateToProcess, 'whatsapp');
+ $kogortPhones = Users::formKogortByDateAndType($startDate, 'whatsapp');
if (!empty($kogortPhones)) {
- Users::saveKogort($kogortPhones, $dateToProcess, SentKogort::KOGORT_NUMBERS['whatsapp']);
+ Users::saveKogort($kogortPhones, $startDate, SentKogort::KOGORT_NUMBERS['whatsapp']);
$this->stdout(
- "Когорта для Вотсапа на дату {$dateToProcess} успешно создана.\n",
+ "Когорта для Вотсапа на дату {$startDate} успешно создана.\n",
BaseConsole::FG_GREEN
);
} else {
$this->stdout(
- "Нет данных для формирования когорты для Ватсапа на дату {$dateToProcess}.\n",
+ "Нет данных для формирования когорты для Ватсапа на дату {$startDate}.\n",
BaseConsole::FG_RED
);
}
public function actionGenerateCallKogorts()
{
+ $messagesSettings = UsersMessageManagement::find()->one();
+ if (empty($messagesSettings) && $messagesSettings->active == 0) {
+ $this->stdout("Рассылка неактивна. Генерация корорт прервана.\n", BaseConsole::FG_RED);
+ return ExitCode::UNAVAILABLE;
+ }
date_default_timezone_set('Europe/Moscow');
if ($this->time && !is_numeric($this->time)) {
}
$currentDate = $this->time ? date('Y-m-d', (int)$this->time) : date('Y-m-d');
$stepsBack = $this->stepsBack ?? 0;
- $messagesSettings = UsersMessageManagement::find()
- // ->where(['active' => 1])
- ->one();
-
$step3 = $messagesSettings ? $messagesSettings->day_before_step3 : 2;
for ($i = $stepsBack; $i >= 0; $i--) {
$dateToProcess = date('Y-m-d', strtotime("-$i days", strtotime($currentDate)));
$startDate = date('Y-m-d', strtotime("+$step3 days", strtotime($dateToProcess)));
- /*if (
- SentKogort::find()
- ->where(['kogort_date' => $startDate, 'kogort_number' => SentKogort::KOGORT_NUMBERS['call']])
- ->exists()
- ) {
- $this->stdout(
- "Когорта для Звонка на данную дату {$startDate} уже существует. Пропустить...\n",
- BaseConsole::FG_YELLOW
- );
- continue;
- }*/
-
- $kogortPhones = Users::formKogortByDateAndType($dateToProcess, 'call');
+ $kogortPhones = Users::formKogortByDateAndType($startDate, 'call');
if (!empty($kogortPhones)) {
- Users::saveKogort($kogortPhones, $dateToProcess, SentKogort::KOGORT_NUMBERS['call']);
+ Users::saveKogort($kogortPhones, $startDate, SentKogort::KOGORT_NUMBERS['call']);
$this->stdout(
- "Когорта для Звонка на данную дату {$dateToProcess} успешно создана.\n",
+ "Когорта для Звонка на данную дату {$startDate} успешно создана.\n",
BaseConsole::FG_GREEN
);
} else {
$monthDay = date('m-d', strtotime($startDate));
- $messagesSettings = UsersMessageManagement::find()
- //->where(['active' => 1])
- ->one();
+ $messagesSettings = UsersMessageManagement::find()->one();
- $hold = isset($messagesSettings->hold) ? $messagesSettings->hold : 10;
- $holdActive = isset($messagesSettings->hold_active) ? $messagesSettings->hold_active : 1;
+ $hold = isset($messagesSettings->hold) ? $messagesSettings->hold : 0;
+ $holdActive = isset($messagesSettings->hold_active) ? $messagesSettings->hold_active : 0;
$salesPhone = Sales::find()
->where(new \yii\db\Expression("TO_CHAR(date, 'MM-DD') = :monthDay", [':monthDay' => $monthDay]))
->where(['between', 'kogort_date',
date('Y-m-d', strtotime("$startDate -$hold days")),
date('Y-m-d', strtotime("$startDate -1 days"))])
+ ->andWhere(['kogort_number' => SentKogort::KOGORT_NUMBERS['target']])
->column();
} else {
$phonesSent = [];
*/
private static function processWhatsappKogort(array $targetPhones, string $startDate): array
{
- $messagesSettings = UsersMessageManagement::find()
- // ->where(['active' => 1])
- ->one();
+ $messagesSettings = UsersMessageManagement::find()->one();
$step1 = $messagesSettings ? $messagesSettings->day_before_step1 : 10;
$step2 = $messagesSettings ? $messagesSettings->day_before_step2 : 4;
-
$excludeRegistered = UsersTelegram::find()
->where(['is_blocked' => 0, 'is_registered' => 1])
->andWhere(['phone' => $targetPhones])