ProjectsModel.php 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. <?php
  2. namespace app\models;
  3. use Yii;
  4. use yii\base\Model;
  5. use app\models\TasksModel;
  6. use app\models\entity\ProjectsLocotech;
  7. /**
  8. * This is the model class for table "s_regions".
  9. *
  10. * The followings are the available columns in table 's_regions':
  11. * @property integer $rg_id
  12. * @property string $rg_name
  13. */
  14. class ProjectsModel extends MainModel
  15. {
  16. public $errors;
  17. public $createProject;
  18. // работает
  19. public function StartProject($action, $project_id)
  20. {
  21. // die();
  22. $tasksModel = new TasksModel();
  23. $existing_tasks = $tasksModel->GetTasksForProject($project_id);
  24. if (sizeof($existing_tasks) > 0) {
  25. $this->message['createProject'] = 'Задачи для этого проекта уже созданы';
  26. return true; //данная функция:
  27. }
  28. $tasktypesarr = $tasksModel->GrabTasktypes("all", intval($action));
  29. if (count($tasktypesarr) > 0) {
  30. //$tasksModel->CreateTasks($tasktypesarr, $project_id);
  31. $tasksModel->CreateTasksExtra($tasktypesarr, $project_id);
  32. $this->message = $tasksModel->message;
  33. return true;
  34. } else {
  35. $this->message['createProject'] = 'Ошибка: нет подходящих задач под выбранное действие';
  36. return false;
  37. }
  38. }
  39. public function addProject($params,$idSection = null)
  40. {
  41. $result = false;
  42. $projectsLocotech = new ProjectsLocotech();
  43. $projectsLocotech->action = $params['action'];
  44. $projectsLocotech->company = $params['company'];
  45. $projectsLocotech->status = 1;
  46. $projectsLocotech->loco_type = $params['loco_type'];
  47. $projectsLocotech->loco_number = $params['loco_number'];
  48. $projectsLocotech->depo = $params['depo'];
  49. $projectsLocotech->depo_service = $params['depo_service'];
  50. $projectsLocotech->kind = $params['kind'];
  51. // $projectsLocotech->diagnostic_card = $params['diagnosticCard'];
  52. $projectsLocotech->created = date('Y-m-d H:i:s');
  53. $projectsLocotech->section_id = $idSection;
  54. if( $projectsLocotech->save() ) {
  55. return $projectsLocotech->id;
  56. }
  57. $this->errors['addProject'] = $projectsLocotech->errors;
  58. return $result;
  59. }
  60. // работает
  61. public function StartProjectRequest($action,$activeid) {
  62. //$jsonEncoded = ['activeid' => $activeid, 'action' => $action,'appMykey' => 123465];
  63. $jsonEncoded = "activeid=".$activeid."&action=".$action."&appMykey=123465";
  64. $url = $_SERVER['SERVER_NAME'] . "/addproject.php";
  65. $curl = curl_init();
  66. curl_setopt($curl, CURLOPT_URL, $url);
  67. curl_setopt($curl, CURLOPT_TIMEOUT, 20);
  68. curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
  69. curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
  70. curl_setopt($curl, CURLOPT_POST, 1);
  71. curl_setopt($curl, CURLOPT_POSTFIELDS, $jsonEncoded);
  72. curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
  73. curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
  74. $result = curl_exec($curl);
  75. $info = curl_getinfo($curl, CURLINFO_HTTP_CODE);
  76. //$result = json_decode($result,true);
  77. //echo $result;
  78. curl_close($curl);
  79. return $result;
  80. }
  81. public function GetProjectStatus( $projid )
  82. {
  83. $tasksModel = new TasksModel();
  84. $tasks = $tasksModel->GetTasksForProject( $projid );
  85. $assigned = 0;
  86. $accepted = 0;
  87. $hold = 0;
  88. $done = 0;
  89. $numcommands = 0;
  90. $lentasks = 0;
  91. foreach ( $tasks as $task ) {
  92. if ( $task->parent_id == '0') {
  93. $lentasks++;
  94. $numcommands++;
  95. $status = $tasksModel->GetTaskStatus( $task->id );
  96. switch ($status) {
  97. case 2:
  98. $assigned++;
  99. break;
  100. case 3:
  101. $accepted++;
  102. break;
  103. case 4:
  104. $hold++;
  105. break;
  106. case 5:
  107. $done++;
  108. break;
  109. }
  110. }
  111. }
  112. if ( $done == $lentasks && $lentasks > 0 ) {
  113. return 5;
  114. } elseif ( $accepted > 0 || $assigned > 0 ) {
  115. return 2;
  116. } else {
  117. return 1;
  118. }
  119. }
  120. public function getStatusArray($entity) {
  121. $arrayResult = [];
  122. foreach ($entity as $item) {
  123. $arrayResult[ $item->id ] = $this->GetProjectStatus($item->id);
  124. }
  125. return $arrayResult;
  126. }
  127. /*
  128. public function StartProject($action, $project_id)
  129. {
  130. //$assign_id - id таблицы входных данных
  131. //$action - действие (например перемещение)
  132. //данная функция:
  133. //1. ищет в базе среди tasktype данное действие (глобальное main_task=true)
  134. //2. создает задачу найденного типа
  135. $tasksModel = new TasksModel();
  136. $existing_tasks = $tasksModel->GetTasksForProject($project_id);
  137. if (sizeof($existing_tasks) > 0) {
  138. echo "<span style='color: red'>Задачи для этого проекта уже созданы</span><br>";
  139. return true;
  140. }
  141. $tasktypesarr = GrabTasktypes("all", intval($action));
  142. if (sizeof($tasktypesarr) > 0) {
  143. CreateTasks($tasktypesarr, $project_id);
  144. return true;
  145. }
  146. else
  147. {
  148. echo "<span style='color: red'>Ошибка: нет подходящих задач под выбранное действие</span>";
  149. return false;
  150. }
  151. }
  152. */
  153. }