/
v.bolshakov
/
AIEcosystem-Testing
Обзор
Документация
Войти
/
v.bolshakov
/
AIEcosystem-Testing
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
dev
common/models/TaskAssistant.php
176 строк
5 KB
Developer
Initial commit
03 авг 2026, 17:43
03 авг 2026, 17:43
7433917
Код
Авторство
О чём код?
<?php namespace common\models; use common\behaviors\CloneBehavior; use common\behaviors\DefaultBehavior; use common\behaviors\PositionBehavior; use common\helpers\UuidHelper; use common\kdf\KModelStatus; use common\kdf\KPromtFormat; use common\validators\UidValidator; use Yii; use yii\db\ActiveQuery; use yii\helpers\ArrayHelper; use yii\helpers\VarDumper; use function Clue\StreamFilter\fun; /** * Таблица - задачи * * @property int $assistant_id * @property int $task_id * @property int $is_default * @property int $version * @property string $description * @property int $promt_format_id * * @author Dmitry E. Semenov <sde.tomsk@gmail.com> * @copyright Self (c) 2024 */ class TaskAssistant extends \common\models\base\BaseModel { /** * {@inheritdoc} */ public static function tableName() { return 'task_assistant'; } /** * {@inheritdoc} */ public function rules() { return ArrayHelper::merge(parent::rules(), [ [['is_default', 'version'], 'default', 'value' => 1], ['promt_format_id', 'default', 'value' => KPromtFormat::T_TEXT], [['assistant_id', 'task_id', 'is_default', 'version', 'promt_format_id'], 'required'], [['assistant_id', 'task_id', 'is_default', 'version', 'promt_format_id'], 'number'], [['description'], 'string', 'max' => 500] ]); } /** * {@inheritdoc} */ public function attributeLabels() { return ArrayHelper::merge(parent::attributeLabels(), [ 'task_id' => Yii::t('app', 'Task'), 'assistant_id' => Yii::t('app', 'Assistant'), 'promt_format_id' => Yii::t('app', 'Promt type'), 'is_default' => Yii::t('app', 'Is default'), 'version' => Yii::t('app', 'Version'), 'description' => Yii::t('app', 'Description'), ]); } /** * {@inheritdoc} */ public function behaviors() { return ArrayHelper::merge(parent::behaviors(), [ 'CloneBehavior' => [ 'class' => CloneBehavior::class, 'parent_field' => 'task_id', 'default_values' => [ 'version' => null, 'is_default' => 1 ], ], 'DefaultBehavior' => [ 'class' => DefaultBehavior::className(), 'scope' => [ 'task_id' ] ], 'PositionBehavior' => [ 'class' => PositionBehavior::className(), 'positionAttribute' => 'version', 'scopeQuery' => function ($query) { return self::find() ->andWhere(['task_id' => $this->task_id]); }, ], ]); } /** * @return ActiveQuery */ public function getAssistant() { return $this->hasOne(Assistant::class, ['id' => 'assistant_id']); } /** * @return ActiveQuery */ public function getTask() { return $this->hasOne(Task::class, ['id' => 'task_id']); } /** * @return ActiveQuery */ public function getPromtFormat() { return $this->hasOne(KPromtFormat::class, ['id' => 'promt_format_id']); } public function afterSave($insert, $changedAttributes) { parent::afterSave($insert, $changedAttributes); // TODO: Change the autogenerated stub if ($this->is_default) { $is_default = TaskDefault::find() ->andWhere([ 'task_id' => $this->task_id ]) ->exists(); if ($is_default) { $ct_list = ClonedTask::find() ->select('cloned_task_id') ->innerJoin(['t' => Task::tableName()], 't.id = cloned_task_id') ->andWhere([ 't.rec_status' => KModelStatus::PUBLISHED, 'task_id' => $this->task_id ]); $updated = TaskAssistant::updateAll([ 'assistant_id' => $this->assistant_id, 'promt_format_id' => $this->promt_format_id, ], [ 'task_id' => $ct_list ]); Yii::debug(VarDumper::dumpAsString([ 'updated' => $updated ])); } } } /** * Получить доп параметры * * @param Request $r * @return array */ public function getOptions(Request $r) { /** @var Assistant $assistant */ $assistant = $this->assistant; return [ 'asst_key' => $assistant->key, 'promt_format_id' => $this->promt_format_id, ]; } }