<?php
namespace common\modules\triggers\components\conditions\conditions;

use common\modules\triggers\components\conditions\vendor\ConditionBase;
use common\modules\triggers\components\conditions\vendor\ConditionInterface;
use common\modules\triggers\models\TriggerParam;
use common\components\UnisenderAPI;

class CheckClickingOnTheLink extends ConditionBase implements ConditionInterface {
    const CONDITION_ID = 2;

    public $name = 'Был произведен переход по ссылке';

    public $params=[];

    public $model;

    /**
     * @param null|string $conditionName
     * @return $this mixed
     */
    public static function init($conditionName=__CLASS__){
        return parent::init($conditionName);
    }

    /**
     * Осуществляем проверку на переход по ссылке
     * @param $message
     * @return bool
     */
    public function check($message=null, $params = array()){
        // Если модель условия указана и полученное сообщение не нуль
        if (!is_null($this->model) && !is_null($message)) {
            // Получаем параметр link
            $param = TriggerParam::find()->where(['condition_id' => $this->model->id, 'key' => 'link'])->one();
            // Если параметр есть, он длиннее нуля и не равен #
            if (!is_null($param) && strlen($param->value)>0 && $param->value!='#') {
                // Если идентификатор кампании в сообщении не равен нулю
                if (!is_null($message->campaign_id)) {
                    // Создаем объект унисендера
                    $sender=new UnisenderAPI();
                    // Делаем запрос на получение ссылок по которым переходили
                    $sender->getVisitedLinks($message->campaign_id);
                    // Возвращаем переход по конкретной ссылке
                    return $sender->linkIsVisited($message->email, $param->value);
                }
            } else {
                // В противном случае срабатывает переход по любой ссылке
                $sender=new UnisenderAPI();
                // Делаем запрос на получение статуса сообщения
                $sender->getMessageStatuses($message->message_id);
                return $sender->isLinkVisited();
            }
        }
        return false;
    }
} 