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

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

 - Добавлены действия ПОСЛЕ сохранения модели;
parent 663225ff
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
namespace common\modules\triggers\models; namespace common\modules\triggers\models;
use common\modules\triggers\components\conditions\Conditions;
use Yii; use Yii;
use common\modules\users\models\User; use common\modules\users\models\User;
...@@ -32,17 +33,36 @@ class TriggerTrigger extends \common\components\ActiveRecordModel ...@@ -32,17 +33,36 @@ class TriggerTrigger extends \common\components\ActiveRecordModel
return 'Триггеры'; 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){ public function afterSave($insert,$changedAttributes){
parent::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); $this->conditions = array_values($this->conditions);
// Перебираем условия в цикле // Перебираем условия в цикле
foreach($this->conditions as $group_index=>$condition_array) { 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) { foreach($condition_array as $condition) {
$conditionModel = new TriggerCondition();
$conditionModel->group_number = $group_index;
$conditionModel->trigger_id = $this->id;
$conditionModel->condition_id = $condition['id']; $conditionModel->condition_id = $condition['id'];
if ($conditionModel->save()) { if ($conditionModel->save()) {
if (array_key_exists('params', $condition)) { if (array_key_exists('params', $condition)) {
...@@ -66,12 +86,17 @@ class TriggerTrigger extends \common\components\ActiveRecordModel ...@@ -66,12 +86,17 @@ class TriggerTrigger extends \common\components\ActiveRecordModel
// Формируем тело будущей таблицы // Формируем тело будущей таблицы
$table .= '<tbody>'; $table .= '<tbody>';
// Если есть ошибка // Если есть ошибка
if ($this->model->getErrors('conditions')) { if ($this->getErrors('conditions')) {
$error = $this->model->getErrors('conditions'); $error = $this->getErrors('conditions');
$table .= '<tr><td style="color: red;">'.$error[0].'</td></tr>'; $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 .= '</tbody>';
// Формируем футер // Формируем футер
$table .= '<tfoot>'; $table .= '<tfoot>';
...@@ -82,6 +107,11 @@ class TriggerTrigger extends \common\components\ActiveRecordModel ...@@ -82,6 +107,11 @@ class TriggerTrigger extends \common\components\ActiveRecordModel
return $table; 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 * @inheritdoc
*/ */
...@@ -156,4 +186,11 @@ class TriggerTrigger extends \common\components\ActiveRecordModel ...@@ -156,4 +186,11 @@ class TriggerTrigger extends \common\components\ActiveRecordModel
{ {
return $this->hasOne(User::className(), ['id' => 'owner_id']); 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