/
v.bolshakov
/
AIEcosystem-Testing
Обзор
Документация
Войти
/
v.bolshakov
/
AIEcosystem-Testing
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
dev
backend/forms/data/task/TaskAssistantForm.php
134 строки
3 KB
Developer
Initial commit
03 авг 2026, 17:43
03 авг 2026, 17:43
7433917
Код
Авторство
О чём код?
<?php namespace backend\forms\data\task; use common\helpers\ArrayHelper; use common\kdf\KPromtFormat; use common\kdf\KTaskType; use common\models\Assistant; use common\models\Project; use common\models\Task; use common\models\TaskAssistant; use Yii; /** * Форма редактирования сервиса * * @author Dmitry E. Semenov <sde.tomsk@gmail.com> * @copyright Self (c) 2024 */ abstract class TaskAssistantForm extends BaseTaskForm { /** * Проект * @var null */ public $project_id = null; /** * Ассистент * @var null */ public $assistant_id = null; /** * формат промта * @var null */ public $promt_format_id = null; /** * @inheritdoc */ protected $type_id = KTaskType::T_ASSISTANT; /** * @inheritdoc */ public function rules() { return ArrayHelper::merge(parent::rules(), [ [['assistant_id', 'project_id', 'promt_format_id'], 'required'], [['assistant_id', 'project_id', 'promt_format_id'], 'integer'], ]); } /** * @inheritdoc */ public function attributeLabels() { return ArrayHelper::merge(parent::attributeLabels(), [ 'project_id' => Yii::t('app', 'Project'), 'assistant_id' => Yii::t('app', 'Assistant AI'), 'promt_format_id' => Yii::t('app', 'Promt format'), ]); } /** * @inheritdoc */ public function getPublicFields() { return ArrayHelper::merge(parent::getPublicFields(), [ 'project_id' => function () { return $this->prepareSelectField(Project::find(), 'project_id', 'title'); }, 'assistant_id' => function () { return $this->prepareSelectField(Assistant::find(), 'assistant_id', 'title'); }, 'promt_format_id' => function () { return $this->prepareSelectField(KPromtFormat::find(), 'promt_format_id', 'title'); }, ]); } /** * @inheritdoc */ public function initState($object) { if ($object instanceof Task) { /** @var TaskAssistant $taskAssistant */ $taskAssistant = $object->getTaskAssistant() ->andWhere(['is_default' => 1]) ->one(); if ($taskAssistant) { $this->project_id = $taskAssistant->assistant->project_id; $this->assistant_id = $taskAssistant->assistant_id; $this->promt_format_id = $taskAssistant->promt_format_id; } } parent::initState($object); // TODO: Change the autogenerated stub } /** * @inheritdoc */ protected function doSave() { $result = parent::doSave(); if ($result) { $ta = TaskAssistant::findOrNew([ 'task_id' => $this->model->id, 'is_default' => 1 ]); $ta->setAttributes([ 'assistant_id' => $this->assistant_id, 'promt_format_id' => $this->promt_format_id, ]); if (!$ta->save()) { $this->addErrors($ta->errors); return false; } } return $result; } }