--- /dev/null
+<?php
+
+namespace app\records;
+
+use Exception;
+use GuzzleHttp\Client;
+
+class LPTrackerApi
+{
+
+ private const LOGIN = 'Zakaz-bazacvetov24@yandex.ru1';
+ private const PASSWORD = 'B8-YY7d3K2ekNdK';
+ public const SERVICE = 117605;
+ private const TIMEOUT = 10;
+
+ public const SUCCESS_STATUS = 'success';
+ public const ERROR_STATUS = 'error';
+
+ private $token;
+ public $client;
+
+ public const BASE_URI = 'https://direct.lptracker.ru';
+
+ public function __construct()
+ {
+ try {
+ $this->client = new Client([
+ 'base_uri' => self::BASE_URI,
+ 'timeout' => self::TIMEOUT,
+ ]);
+
+ if (empty($this->token)) {
+ $this->auth();
+ }
+ } catch (Exception $exception) {
+ throw new Exception($exception);
+ }
+ }
+
+
+ private function auth()
+ {
+ $response = $this->post('/login', [
+ 'login' => self::LOGIN,
+ 'password' => self::PASSWORD,
+ 'service' => self::SERVICE,
+ 'version' => '1.0'
+ ]);
+
+ if (!empty($response) && $response['status'] == self::SUCCESS_STATUS && $response['result']['token']) {
+ $this->token = $response['result']['token'];
+ } else {
+ throw new Exception('Не удалось получить токен!');
+ }
+ }
+
+ public function get($endpoint)
+ {
+ $response = $this->client->get($endpoint, [
+ 'headers' => [
+ 'token' => $this->token,
+ 'Content-type' => 'application/json',
+ ]
+ ]);
+
+ return json_decode($response->getBody(), true);
+ }
+
+ public function post($endpoint, array $data = [])
+ {
+ $response = $this->client->post($endpoint, [
+ 'json' => $data,
+ 'headers' => [
+ 'token' => $this->token,
+ 'Content-Type' => 'application/json',
+ ]
+ ]);
+
+ return json_decode($response->getBody(), true);
+ }
+
+}
\ No newline at end of file
--- /dev/null
+<?php
+
+/**
+ * @var $time integer|null
+ */
+
+use app\records\LPTrackerApi;
+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;
+use yii_app\records\SentKogort;
+
+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 = 35;
+$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 = true;
+
+$minuetTimeInTask = date('i', $time);
+$fullTimeInTask = date('Y-m-d H:i:s', $time);
+
+try {
+ if (
+ (
+ (
+ date('H:i', $time) == "10: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();
+ }
+
+ $numbers = SentKogort::findOne(['number' => '79036571587']);
+
+ foreach ($numbers as $number) {
+ $api = new LPTrackerApi();
+ $response = $api->post('lead', [
+ 'contact' => [
+ 'project_id' => LPTrackerApi::SERVICE,
+ 'name' => "",
+// 'name' => $number->users->name,
+ 'profession' => '',
+ 'site' => '',
+ 'details' => [
+ [
+ 'type' => 'phone',
+// 'data' => $number->phone,
+ 'data' => "+71234567890",
+ ]
+ ]
+ ],
+ 'callback' => false,
+ 'funnel' => LPTrackerApi::SERVICE,
+ 'lead_date' => date('d.m.Y H:i'),
+ 'deal_date' => date('d.m.Y H:i'),
+ 'owner' => 0,
+ 'payments' => [
+ ],
+ ]);
+ }
+
+ $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();
+}
+
+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);
+ }
+}
+