Commit 39238dc2 authored by Shakarim Sapa's avatar Shakarim Sapa

- Вынесена логика формирования таблицы с условиями в модель;

 - Добавлены действия ПОСЛЕ сохранения модели;
parent 663225ff
......@@ -2,6 +2,7 @@
namespace common\modules\triggers\models;
use common\modules\triggers\components\conditions\Conditions;
use Yii;
use common\modules\users\models\User;
......@@ -32,17 +33,36 @@ class TriggerTrigger extends \common\components\ActiveRecordModel
return 'Триггеры';
}
public function afterFind(){
/** @var TriggerCondition $condition */
foreach($this->triggerConditions as $condition) {
$this->conditions[$condition->group_number][$condition->getPrimaryKey()] = [
'id' => $condition->condition_id
];
foreach($condition->triggerParams as $param) {
$this->conditions[$condition->group_number][$condition->getPrimaryKey()]['params'][$param->key] = $param->value;
}
}
}
public function afterSave($insert,$changedAttributes){
parent::afterSave($insert,$changedAttributes);
if ($this->scenario == 'update') {
foreach($this->triggerConditions as $condition) {
TriggerParam::deleteAll(['condition_id' => $condition->getPrimaryKey()]);
TriggerCondition::deleteAll(['id' => $condition->getPrimaryKey()]);
}
}
// Сбросили ключи
$this->conditions = array_values($this->conditions);
// Перебираем условия в цикле
foreach($this->conditions as $group_index=>$condition_array) {
$conditionModel = new TriggerCondition();
$conditionModel->group_number = $group_index;
$conditionModel->trigger_id=$this->id;
foreach($condition_array as $condition) {
$conditionModel = new TriggerCondition();
$conditionModel->group_number = $group_index;
$conditionModel->trigger_id = $this->id;
$conditionModel->condition_id = $condition['id'];
if ($conditionModel->save()) {
if (array_key_exists('params', $condition)) {
......@@ -66,12 +86,17 @@ class TriggerTrigger extends \common\components\ActiveRecordModel
// Формируем тело будущей таблицы
$table .= '<tbody>';
// Если есть ошибка
if ($this->model->getErrors('conditions')) {
$error = $this->model->getErrors('conditions');
if ($this->getErrors('conditions')) {
$error = $this->getErrors('conditions');
$table .= '<tr><td style="color: red;">'.$error[0].'</td></tr>';
}
// Тут добавляем кнопки управления по умолчанию
$table .= Yii::$app->controller->actionGetandconditionhtml();
// Тут добавляем кнопки управления
if (count($this->conditions)>0) {
foreach($this->conditions as $condition_array) {
$table .= self::getControlButtons($condition_array);
}
} else
$table .= self::getControlButtons();
$table .= '</tbody>';
// Формируем футер
$table .= '<tfoot>';
......@@ -82,6 +107,11 @@ class TriggerTrigger extends \common\components\ActiveRecordModel
return $table;
}
public static function getControlButtons($condition_array=array(), $key=null){
$key = ($key!==null) ? $key : rand(100000,999999);
return '<tr data-key='.$key.'><td>'.Conditions::init()->getControlArea($condition_array, $key).'</td></tr>';
}
/**
* @inheritdoc
*/
......@@ -156,4 +186,11 @@ class TriggerTrigger extends \common\components\ActiveRecordModel
{
return $this->hasOne(User::className(), ['id' => 'owner_id']);
}
public function scenarios(){
return [
'default' => ['active','name','description','owner_id','date_create','timeout','message_template_id','conditions'],
'update' => ['active','name','description','owner_id','date_create','timeout','message_template_id','conditions'],
];
}
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment