123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213 |
- <?php
- namespace app\models\procedure;
- use Yii;
- use yii\base\Model;
- use yii\db\Expression;
- use app\models\entity\Tasks;
- use app\models\entity\Checkpoints;
- use app\models\entity\CheckpointTypes;
- use app\models\entity\CheckpointTypesForTasks;
- use app\models\entity\CheckpointTypeHierarchy;
- class AsusgAddCheckpointsToTaskModel extends Model
- {
- private $cb;
- private $cpt;
- private $cpid;
- private $uuid;
- private $task_id;
- private $txt = '';
- private $initiator;
- private $txtParent;
- private $tasktypeId;
- private $tmpUuid = '';
- private static $_instance = null;
-
- public static function execute($initiator, $taskCreated) {
-
-
- self::$_instance = new self();
-
- self::$_instance->task_id = $taskCreated;
- self::$_instance->initiator = $initiator;
-
- self::$_instance->getTasktypeId();
- self::$_instance->createCheckpoints();
- return true;
- }
-
- private function cpt_get($tasktypeId)
- {
- $checkpointTypesForTasksEntity = CheckpointTypesForTasks::find()->select('cp_type_id')->where(['tasktype_id' => $tasktypeId])->orderBy(['coalesce(priority, 0)' => SORT_ASC, 'cp_type_id' => SORT_ASC])->all();
- return $checkpointTypesForTasksEntity;
- }
-
-
- private function cb_get($cpt)
- {
- $checkpointTypeHierarchyEntity = CheckpointTypeHierarchy::find()->select('cp_type')->where(['parent_cp_type' => $cpt])->orderBy(['cp_type' => SORT_ASC])->all();
- return $checkpointTypeHierarchyEntity;
- }
-
- private function getTasktypeId()
- {
- $tasksEntity = Tasks::find()->select('type')->where(['id' => self::$_instance->task_id])->one();
- self::$_instance->tasktypeId = $tasksEntity->type;
- }
-
- private function createCheckpoints() {
-
- $tasktype = self::$_instance->tasktypeId;
- foreach(self::$_instance->cpt_get($tasktype) as $tasktypeId) {
-
- self::$_instance->txt = CheckpointTypes::findOne($tasktypeId->cp_type_id);
- self::$_instance->generateUuid();
- self::$_instance->addCheckpoints();
- self::$_instance->cpid = Checkpoints::find()->where(['text' => self::$_instance->tmpUuid])->one();
-
- $checkpointsEntity = Checkpoints::findOne(self::$_instance->cpid->id);
- $checkpointsEntity->text = self::$_instance->txt->name;
- $checkpointsEntity->save();
-
- foreach( self::$_instance->cb_get($tasktypeId->cp_type_id) as $parent ) {
- self::$_instance->getCheckpointTypesName($parent->cp_type);
- self::$_instance->insertCheckpointTypes($parent->cp_type);
- }
- }
- }
-
- private function generateUuid()
- {
- $query = 'select UUID()';
- $uuid = Yii::$app->db->createCommand('select UUID() as uuid')->queryOne();
- self::$_instance->tmpUuid = $uuid["uuid"];
- if ( null == self::$_instance->tmpUuid ){
- return false;
- }
- return true;
- }
-
-
- private function addCheckpoints()
- {
- $checkpointsEntity = new Checkpoints();
- $checkpointsEntity->type = $tasktypeId->cp_type_id;
- $checkpointsEntity->text = self::$_instance->tmpUuid;
- $checkpointsEntity->parent_task_id = self::$_instance->task_id;
- $checkpointsEntity->parent_checkpoint_id = 0;
- $checkpointsEntity->save();
- if ( !$checkpointsEntity->save()){
- return false;
- }
- return true;
- }
-
- private function getCheckpointTypesName($cb)
- {
- $checkpointTypesEntity = CheckpointTypes::find()->select('name')->where(['id' => $cb])->one();
- self::$_instance->txtParent = $checkpointTypesEntity->name;
- if ( null == self::$_instance->txtParent ){
- return false;
- }
- return true;
- }
-
- private function insertCheckpointTypes($cb)
- {
- $checkpointsEntity = new Checkpoints();
- $checkpointsEntity->type = $cb;
- $checkpointsEntity->text = self::$_instance->txtParent;
- $checkpointsEntity->parent_task_id = self::$_instance->task_id;
- $checkpointsEntity->parent_checkpoint_id = self::$_instance->cpid->id;
- $checkpointsEntity->save();
- if ( null == self::$_instance->tmpUuid ){
- return false;
- }
- return true;
- }
- }
|