<?php namespace app\models; use Yii; use yii\base\Model; use app\models\TasksModel; use app\models\entity\ProjectsLocotech; /** * This is the model class for table "s_regions". * * The followings are the available columns in table 's_regions': * @property integer $rg_id * @property string $rg_name */ class ProjectsModel extends MainModel { public $errors; public $createProject; // работает public function StartProject($action, $project_id) { // die(); $tasksModel = new TasksModel(); $existing_tasks = $tasksModel->GetTasksForProject($project_id); if (sizeof($existing_tasks) > 0) { $this->message['createProject'] = 'Задачи для этого проекта уже созданы'; return true; //данная функция: } $tasktypesarr = $tasksModel->GrabTasktypes("all", intval($action)); if (count($tasktypesarr) > 0) { //$tasksModel->CreateTasks($tasktypesarr, $project_id); $tasksModel->CreateTasksExtra($tasktypesarr, $project_id); $this->message = $tasksModel->message; return true; } else { $this->message['createProject'] = 'Ошибка: нет подходящих задач под выбранное действие'; return false; } } public function addProject($params,$idSection = null) { $result = false; $projectsLocotech = new ProjectsLocotech(); $projectsLocotech->action = $params['action']; $projectsLocotech->company = $params['company']; $projectsLocotech->status = 1; $projectsLocotech->loco_type = $params['loco_type']; $projectsLocotech->loco_number = $params['loco_number']; $projectsLocotech->depo = $params['depo']; $projectsLocotech->depo_service = $params['depo_service']; $projectsLocotech->kind = $params['kind']; // $projectsLocotech->diagnostic_card = $params['diagnosticCard']; $projectsLocotech->created = date('Y-m-d H:i:s'); $projectsLocotech->section_id = $idSection; if( $projectsLocotech->save() ) { return $projectsLocotech->id; } $this->errors['addProject'] = $projectsLocotech->errors; return $result; } // работает public function StartProjectRequest($action,$activeid) { //$jsonEncoded = ['activeid' => $activeid, 'action' => $action,'appMykey' => 123465]; $jsonEncoded = "activeid=".$activeid."&action=".$action."&appMykey=123465"; $url = $_SERVER['SERVER_NAME'] . "/addproject.php"; $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_TIMEOUT, 20); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, $jsonEncoded); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); $result = curl_exec($curl); $info = curl_getinfo($curl, CURLINFO_HTTP_CODE); //$result = json_decode($result,true); //echo $result; curl_close($curl); return $result; } public function GetProjectStatus( $projid ) { $tasksModel = new TasksModel(); $tasks = $tasksModel->GetTasksForProject( $projid ); $assigned = 0; $accepted = 0; $hold = 0; $done = 0; $numcommands = 0; $lentasks = 0; foreach ( $tasks as $task ) { if ( $task->parent_id == '0') { $lentasks++; $numcommands++; $status = $tasksModel->GetTaskStatus( $task->id ); switch ($status) { case 2: $assigned++; break; case 3: $accepted++; break; case 4: $hold++; break; case 5: $done++; break; } } } if ( $done == $lentasks && $lentasks > 0 ) { return 5; } elseif ( $accepted > 0 || $assigned > 0 ) { return 2; } else { return 1; } } public function getStatusArray($entity) { $arrayResult = []; foreach ($entity as $item) { $arrayResult[ $item->id ] = $this->GetProjectStatus($item->id); } return $arrayResult; } /* public function StartProject($action, $project_id) { //$assign_id - id таблицы входных данных //$action - действие (например перемещение) //данная функция: //1. ищет в базе среди tasktype данное действие (глобальное main_task=true) //2. создает задачу найденного типа $tasksModel = new TasksModel(); $existing_tasks = $tasksModel->GetTasksForProject($project_id); if (sizeof($existing_tasks) > 0) { echo "<span style='color: red'>Задачи для этого проекта уже созданы</span><br>"; return true; } $tasktypesarr = GrabTasktypes("all", intval($action)); if (sizeof($tasktypesarr) > 0) { CreateTasks($tasktypesarr, $project_id); return true; } else { echo "<span style='color: red'>Ошибка: нет подходящих задач под выбранное действие</span>"; return false; } } */ }