+++ /dev/null
-<?php
-
-/**
- * @var $time integer|null
- */
-
-use yii\helpers\Json;
-use yii_app\records\SchedulerTaskLog;
-use yii_app\records\SentKogort;
-use yii_app\records\Users;
-use yii_app\records\UsersMessageManagement;
-
-ini_set('max_execution_time', (string)(60 * 60 * 1)); // 1 час
-ini_set('display_errors', 'on');
-ini_set('display_errors', 1);
-ini_set('display_startup_errors', 1);
-error_reporting(E_ALL);
-
-$time = $time ?? time(); // Использовать текущее время, если параметр не передан
-
-echo "time2_" . $time . "_time2 ";
-$taskNum = 34;
-$dateTask = date('Y-m-d H:i:s', $time);
-$dateTaskStart = null;
-$dateTaskStop = null;
-$log = '';
-$error = '';
-$infoError = '';
-$infoText = '';
-$description = '';
-$result = 0;
-
-$enable = true;
-$start = false;
-$force = false;
-
-$minuetTimeInTask = date('i', $time);
-$fullTimeInTask = date('Y-m-d H:i:s', $time);
-
-try {
- if (
- (
- (date('j', $time) == 1 && date('H:i', $time) == "00:00") || // Старт: 1-й день месяца в 00:00
- (date('j', $time) == 21 && date('H:i', $time) == "00:00") // Старт: 21-й день месяца в 00:00
- || $force
- )
- && $enable
- ) {
- $dateTaskStart = date('Y-m-d H:i:s', $time);
- $info = ' ================ test Task ' . $taskNum . ' start ================';
- echo $info;
- $log .= $info;
- $log .= $time;
-
- $schedulerTaskLog = new SchedulerTaskLog();
- $schedulerTaskLog->setTaskNum($taskNum)
- ->setName('Task ' . $taskNum)
- ->setDate($dateTask)
- ->setDateStart($dateTaskStart);
- $validate = $schedulerTaskLog->validate();
- if ($validate) {
- $schedulerTaskLog->save();
- }
-
- // === Логика формирования когорт ===
- $currentYear = date('Y', $time);
- $currentMonth = date('m', $time);
- $daysInMonth = cal_days_in_month(CAL_GREGORIAN, $currentMonth, $currentYear);
-
- if (date('j', $time) == 1) {
- $startDay = 1;
- $endDay = $daysInMonth;
- }
-
-
- if (date('j', $time) == 21) {
- $startDay = 1;
- $endDay = 10;
- $currentMonth = ($currentMonth == 12) ? 1 : (int)$currentMonth + 1;
- $currentYear = ($currentMonth == 1) ? (int)$currentYear + 1 : $currentYear;
- }
-
- for ($day = $startDay; $day <= $endDay; $day++) {
- $currentDate = sprintf('%04d-%02d-%02d', $currentYear, $currentMonth, $day);
-
-
- if (SentKogort::find()->where(['kogort_date' => $currentDate])->exists()) {
- $info = "Когорта для даты {$currentDate} уже существует. Пропускаю...\n";
- echo $info;
- $log .= $info;
- continue;
- }
-
- $kogortPhones = Users::formKogortByDateAndType($currentDate, 'target');
-
- if (!empty($kogortPhones)) {
- Users::saveKogort($kogortPhones, $currentDate, SentKogort::KOGORT_NUMBERS['target']);
- $info = "Когорта для даты {$currentDate} успешно сохранена.\n";
- echo $info;
- $log .= $info;
- } else {
- $info = "Нет данных для формирования когрты на дату {$currentDate}.\n";
- echo $info;
- $log .= $info;
- }
- }
- // === Конец логики формирования когорт ===
-
- $info = ' ================ test Task ' . $taskNum . ' stop ================';
- echo $info;
- $log .= $info;
- $log .= ' date >= ' . strtotime("-1 week", $time);
- $dateTaskStop = date('Y-m-d H:i:s', $time);
- } else {
- $info = ' Task ' . $taskNum . ' skip ';
- echo $info;
- $log .= $info;
- }
-} catch (Exception $e) {
- $error = 'Exception: ' . $e->getMessage() . ' ' . $e->getFile() . ' >>> ' . $e->getLine();
-}
-
-if (empty($schedulerTaskLog)) {
- $schedulerTaskLog = new SchedulerTaskLog();
- $schedulerTaskLog->setTaskNum($taskNum)
- ->setName('Task ' . $taskNum)
- ->setDate($dateTask)
- ->setDateStart($dateTaskStart)
- ->setDateStop($dateTaskStop)
- ->setDescription($description)
- ->setError($error)
- ->setInfo($infoText)
- ->setLog($log);
-} else {
- $schedulerTaskLog->setDateStop($dateTaskStop)
- ->setDescription($description)
- ->setError($error)
- ->setInfo($infoText)
- ->setLog($log);
-}
-$validate = $schedulerTaskLog->validate();
-if ($validate) {
- $schedulerTaskLog->save();
-}
-