+++ /dev/null
-<?php
-
-/**
- * @var $time integer
- */
-
-use yii\helpers\Json;
-use yii_app\records\Admin;
-use yii_app\records\AdminGroup;
-use yii_app\records\ApiCronBuh;
-use yii_app\records\Firms;
-use yii_app\records\Motivation;
-use yii_app\records\SchedulerTaskLog;
-
-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);
-
-echo "time2_" . $time . "_time2 ";
-$taskNum = 32;
-$dateTask = date('Y-m-d H:i:s');
-$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('H:i', $time) == "06:00" ||
- date('H:i', $time) == "18:00"
- )
- || $force
- )
- && $enable
- ) {
-
- $dateTaskStart = date('Y-m-d H:i:s');
- $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();
- }
-
- $weekRange = Motivation::getWeekRangeForDate();
-
- if ((date('d') % 7 == 0 || date('t') == date('d'))) {
- foreach (Firms::getInn() as $key => $firm) {
- for ($week = Motivation::getWeek(); $week >= 1; $week--) {
- sleep(1);
- $day = $week * 7;
- $month = date('m');
- $year = date('Y');
-
- if ($week == 5) {
- $day = ($week - 1) * 7 + 1;
- }
-
- $date = strtotime("{$day}-{$month}-{$year}");
-
- $weekRange = Motivation::getWeekRangeForDate($date);
- createApiCron($key, $weekRange);
- }
- }
- } else {
- foreach (Firms::getInn() as $key => $firm) {
- createApiCron($key, $weekRange);
- }
-
- }
-
-
- $info = ' ================ test Task ' . $taskNum . ' stop ================';
- echo $info;
- $log .= $info;
- $log .= ' date >= ' . strtotime("-1 week", time());
- $dateTaskStop = date('Y-m-d H:i:s');
- } 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();
-}
-
-function createApiCron($key, $weekRange) {
- $model = new ApiCronBuh();
- $model->date = date('Y-m-d H:i:s');
- $model->request_id = strval(strtotime($model->date) . '_' . $key);
- $model->json_post = Json::encode([
- 'request_id' => $model->request_id,
- 'cost_items' => [
- 'start_time' => date('Y-m-d 00:00:00', strtotime($weekRange['start_time'])),
- 'end_time' => date('Y-m-d 23:59:59', strtotime($weekRange['end_time'])),
- ]
- ]);
- $model->inn = $key;
- try {
- $model->save();
- } catch (Exception $e) {
- throw new Exception($e);
- }
-}
\ No newline at end of file
--- /dev/null
+<?php
+
+/**
+ * @var $time integer
+ */
+
+use yii\helpers\Json;
+use yii_app\records\Admin;
+use yii_app\records\AdminGroup;
+use yii_app\records\ApiCronBuh;
+use yii_app\records\Firms;
+use yii_app\records\Motivation;
+use yii_app\records\SchedulerTaskLog;
+
+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);
+
+echo "time2_" . $time . "_time2 ";
+$taskNum = 34;
+$dateTask = date('Y-m-d H:i:s');
+$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('H:i', $time) == "06:00" ||
+ date('H:i', $time) == "18:00"
+ )
+ || $force
+ )
+ && $enable
+ ) {
+
+ $dateTaskStart = date('Y-m-d H:i:s');
+ $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();
+ }
+
+ $currentDay = date('d');
+ $currentMonth = date('m');
+ $currentYear = date('Y');
+
+
+ if ($currentDay == 8) {
+ // 1-я неделя
+ $weekRange = Motivation::getWeekRangeForDate(1);
+ processFirms($weekRange);
+ } elseif ($currentDay == 15) {
+ // 1-я и 2-я недели
+ for ($week = 1; $week <= 2; $week++) {
+ $weekRange = Motivation::getWeekRangeForDate($week);
+ processFirms($weekRange);
+ }
+ } elseif ($currentDay == 22) {
+ // 1-я, 2-я и 3-я недели
+ for ($week = 1; $week <= 3; $week++) {
+ $weekRange = Motivation::getWeekRangeForDate($week);
+ processFirms($weekRange);
+ }
+ } elseif ($currentDay == 29) {
+ // 1-я, 2-я, 3-я и 4-я недели
+ for ($week = 1; $week <= 4; $week++) {
+ $weekRange = Motivation::getWeekRangeForDate($week);
+ processFirms($weekRange);
+ }
+ } elseif (date('t') == $currentDay) {
+ // Последний день месяца — все 5 недель
+ for ($week = 1; $week <= 5; $week++) {
+ $weekRange = Motivation::getWeekRangeForDate($week);
+ processFirms($weekRange);
+ }
+ }
+
+
+ if ($currentDay == 1) {
+ $previousMonth = date('m', strtotime('first day of last month'));
+ for ($week = 1; $week <= 5; $week++) {
+ $weekRange = Motivation::getWeekRangeForDate($week, $previousMonth);
+ processFirms($weekRange);
+ }
+ }
+
+ $info = ' ================ test Task ' . $taskNum . ' stop ================';
+ echo $info;
+ $log .= $info;
+ $log .= ' date >= ' . strtotime("-1 week", time());
+ $dateTaskStop = date('Y-m-d H:i:s');
+ } 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();
+}
+
+
+function processFirms($weekRange) {
+ foreach (Firms::getInn() as $key => $firm) {
+ createApiCron($key, $weekRange);
+ }
+}
+
+function createApiCron($key, $weekRange) {
+ $model = new ApiCronBuh();
+ $model->date = date('Y-m-d H:i:s');
+ $model->request_id = strval(strtotime($model->date) . '_' . $key);
+ $model->json_post = Json::encode([
+ 'request_id' => $model->request_id,
+ 'cost_items' => [
+ 'start_time' => date('Y-m-d 00:00:00', strtotime($weekRange['start_time'])),
+ 'end_time' => date('Y-m-d 23:59:59', strtotime($weekRange['end_time'])),
+ ]
+ ]);
+ $model->inn = $key;
+ try {
+ $model->save();
+ } catch (Exception $e) {
+ throw new Exception($e);
+ }
+}
\ No newline at end of file