Commit 1c4f501e authored by Shakarim Sapa's avatar Shakarim Sapa

- Добавлен метод проверяющий триггер по условивям "И";

- Добавлен метод (вспомогательный для первого), проверяющий срабатывание массива условий "ИЛИ"
parent 447abe2b
...@@ -9,6 +9,8 @@ ...@@ -9,6 +9,8 @@
namespace common\modules\triggers\components\conditions; namespace common\modules\triggers\components\conditions;
use common\modules\triggers\controllers\TriggerAdminController; use common\modules\triggers\controllers\TriggerAdminController;
use common\modules\triggers\models\TriggerCondition;
use common\modules\triggers\models\TriggerTrigger;
use yii\web\ServerErrorHttpException; use yii\web\ServerErrorHttpException;
class Conditions { class Conditions {
...@@ -89,6 +91,12 @@ class Conditions { ...@@ -89,6 +91,12 @@ class Conditions {
return null; return null;
} }
/**
* @param $id
* @param $key
* @param array $values
* @return string
*/
public static function getConditionHtml($id, $key, $values=array()){ public static function getConditionHtml($id, $key, $values=array()){
$condition = Conditions::init()->getConditionById($id); $condition = Conditions::init()->getConditionById($id);
$condition_key = rand(100,999); $condition_key = rand(100,999);
...@@ -135,4 +143,50 @@ class Conditions { ...@@ -135,4 +143,50 @@ class Conditions {
$html .= '</div>'; $html .= '</div>';
return $html; return $html;
} }
/**
* Получаем триггер и проверяем срабатывание всех условий в его рамках
* @param \common\modules\triggers\models\TriggerSchedule $model
* @param $trigger_id
* @return bool
*/
public function handleMessageByTriggerId($model, $trigger_id) {
// Результирующий массив
$resultArray=[];
// Получили все условия в рамках триггера
$conditions = TriggerCondition::find()->where(['trigger_id' => $trigger_id])->all();
// Привели массив в понятный вид
$conditionsArray=[];
foreach($conditions as $i=>$condition) {
$conditionsArray[$i][] = $condition;
} // На выходе получаем массив необходимого формата
// Обрабатываем отформатированный массив
foreach($conditionsArray as $key=>$array) {
$resultArray[] = self::checkConditionsArray($array, $model);
}
// Проверяем результат
if (count($resultArray)>0) {
foreach($resultArray as $result)
if ($result===false)
return false;
return true;
}
return false;
}
/**
* Проверяем массив параметров на срабатывание хотябы одного условия
* @param $array
* @param $message
* @return bool
*/
public static function checkConditionsArray($array, $message){
foreach($array as $item) {
$object=Conditions::init()->getConditionById($item->condition_id);
$object->model=$item;
if ($object->check($message)==true)
return true;
}
return false;
}
} }
\ No newline at end of file
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