- Добавили вызов триггера проверки завершенности теста

parent 9c8e2902
...@@ -2,6 +2,10 @@ ...@@ -2,6 +2,10 @@
namespace common\modules\testings\models; namespace common\modules\testings\models;
use common\modules\triggers\components\conditions\conditions\UserSuccessfullyCompletedTheTest;
use common\modules\triggers\components\conditions\conditions\UserUnsuccessfullyCompletedTheTest;
use common\modules\triggers\models\TriggerCondition;
use common\modules\triggers\models\TriggerTrigger;
use Yii; use Yii;
use yii\behaviors\TimestampBehavior; use yii\behaviors\TimestampBehavior;
use yii\db\Expression; use yii\db\Expression;
...@@ -210,4 +214,42 @@ class Passing extends \common\components\ActiveRecordModel ...@@ -210,4 +214,42 @@ class Passing extends \common\components\ActiveRecordModel
return true; return true;
} }
public function afterSave($insert, $changedAttributes)
{
parent::afterSave($insert, $changedAttributes);
$this->initTriggerByTestFinish(['email' => Yii::$app->user->identity->email]);
}
/**
* @param array $params
* @return bool
*/
public function initTriggerByTestFinish($params=array()) {
/** @var TriggerTrigger[] $actualTriggers */
$actualTriggers = TriggerTrigger::getActualTriggers();
foreach($actualTriggers as $trigger) {
$exists = TriggerCondition::find()->where(['trigger_id'=>$trigger->id, 'condition_id'=>(($this->passed==1) ? UserSuccessfullyCompletedTheTest::CONDITION_ID : UserUnsuccessfullyCompletedTheTest::CONDITION_ID)])->exists();
$count = TriggerCondition::find()->where(['trigger_id'=>$trigger->id])->count();
// Добавляем в расписание срабатывание триггера завершения теста только при условии что у оно триггера есть и оно там одно
if ($exists===true && $count==1) {
$init = $trigger->initAction($params);
if ($init===true) {
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, Yii::$app->urlManager->createAbsoluteUrl('/triggers/default/rechecktriggers'));
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
if (!curl_exec($curl)) {
$this->addError('email', curl_error($curl));
return false;
}
return true;
} else {
$this->addError('email', $init);
return false;
}
}
}
return true;
}
} }
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