/
v.bolshakov
/
AIEcosystem-Testing
Обзор
Документация
Войти
/
v.bolshakov
/
AIEcosystem-Testing
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
dev
common/forms/api/TaskForm.php
213 строк
5 KB
Developer
Initial commit
03 авг 2026, 17:43
03 авг 2026, 17:43
7433917
Код
Авторство
О чём код?
<?php namespace common\forms\api; use common\forms\task\BaseTaskForm; use common\helpers\AiHelper; use common\helpers\LanguageHelper; use common\helpers\Utf8Helper; use common\kdf\KLanguage; use common\kdf\KSystem; use common\kdf\KTaskType; use common\models\Assistant; use common\models\ModelAI; use common\models\Request; use common\models\SubjectArea; use common\models\Task; use common\models\TaskModel; use Yii; use yii\helpers\ArrayHelper; /** * @SWG\Definition( * definition = "RequestBody", * required = {"task_id", "subject_area_id", "source_lang", "target_lang", "text"} * ) */ class TaskForm extends BaseTaskForm { /** * user task ID * @SWG\Property() * @var string */ public $task_id = null; /** * user subject-area ID * @SWG\Property() * @var string */ public $subject_area_id = null; /** * Source language * @SWG\Property() * @var string */ public $source_lang = null; /** * Translation language * @SWG\Property() * @var string */ public $target_lang = null; /** * Идентификатор системы * @SWG\Property() * @var string */ public $cat_title = null; /** * The source text for the work * @SWG\Property() * @var string */ public $text = null; /** * @inheritdoc */ public function rules() { return [ [['task_id', 'subject_area_id', 'source_lang', 'target_lang', 'text'], 'required'], [ [ 'task_id', 'subject_area_id' ], 'string' ], [ [ 'source_lang', 'target_lang', 'text', 'cat_title' ], 'string' ], ]; } /** * {@inheritdoc} */ public function scenarios() { return ArrayHelper::merge(parent::scenarios(), [ self::SCENARIO_CREATE => [ 'task_id', 'subject_area_id', 'target_lang', 'source_lang', 'cat_title', 'text' ], self::SCENARIO_UPDATE => [ 'task_id', 'subject_area_id', 'target_lang', 'source_lang', 'cat_title', 'text' ], ]); } /** * @inheritdoc */ protected function doSave() { $a = Task::getAlias(); $data = Task::find() ->select([$a . '.id', 'type_id', 'is_debug']) ->andWhere([ 'guid' => $this->task_id, ]) ->currentUser() ->asArray() ->one(); $task_id = ArrayHelper::getValue($data, 'id'); $type_id = ArrayHelper::getValue($data, 'type_id'); $this->is_debug = ArrayHelper::getValue($data, 'is_debug'); if (!$task_id) { $this->addError('task', Yii::t('app', 'Task «{0}» not found', [ $this->task_id ])); return false; } if (!$this->request_class) { if ($type_id == KTaskType::T_MODEL) { $this->request_class = RequestModelForm::class; } else { $this->request_class = RequestAssistantForm::class; } } $this->task_id = $task_id; if ($this->cat_title) { $system_id = KSystem::find() ->andWhere([ 'code' => Utf8Helper::strtolower($this->cat_title) ]) ->scalar() ?: KSystem::MEMOQ; $this->system_id = $system_id; } $subject_area_id = SubjectArea::find() ->select('id') ->andWhere([ 'guid' => $this->subject_area_id, ]) ->scalar(); if (!$subject_area_id) { $this->addError('task', Yii::t('app', 'Subject area «{0}» not found', [ $this->subject_area_id ])); return false; } $this->subject_area_id = $subject_area_id; $source_language_id = LanguageHelper::getLanguageCodeId($this->source_lang, $this->system_id); if (!$source_language_id) { $this->addError('task', Yii::t('app', 'Source language «{0}» not found', [ $this->source_lang ])); return false; } $this->source_language_id = $source_language_id; $target_language_id = LanguageHelper::getLanguageCodeId($this->target_lang, $this->system_id); if (!$target_language_id) { $this->addError('task', Yii::t('app', 'Target language «{0}» not found', [ $this->target_lang ])); return false; } $this->target_language_id = $target_language_id; $this->text = AiHelper::split($this->text); return parent::doSave(); } }