| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 | <?php/** * Created by PhpStorm. * User:  NODELOG * Date: 16/6/7 * Time: 上午10:10 */namespace common\components\notify;use common\models\Notify;use common\models\NotifyCategory;use Yii;use yii\base\BaseObject;use yii\data\ActiveDataProvider;use yii\helpers\Json;use yii\helpers\Url;class Handler extends BaseObject{    public $notify;    public $notifyCategory;    /**     * @var     */    public $user;    /**     * @var array     */    private $_errors;    /**     * 依赖notify,notifyCategory     * @param Notify $notify     * @param NotifyCategory $notifyCategory     * @param array $config     */    public function __construct(Notify $notify, NotifyCategory $notifyCategory, $config = [])    {        $this->notify = $notify;        $this->notifyCategory = $notifyCategory;        $this->user = Yii::$app->user;        parent::__construct($config);    }    public function category($name)    {        $category_id = $this->notifyCategory->find()->select('id')->where(['name' => $name])->scalar();        $this->notify->category_id = $category_id;        return $this;    }    public function from($uid)    {        $this->notify->from_uid = $uid;        return $this;    }    public function to($uid)    {        $this->notify->to_uid = $uid;        return $this;    }    public function extra($extra)    {        $this->notify->extra = Json::encode($extra);        return $this;    }    public function send()    {        if ($this->notify->to_uid == $this->notify->from_uid) {            return true;        }        if ($this->notify->save() === false) {            $this->_errors = $this->notify->errors;            return false;        }        return true;    }    public function getNoReadNum()    {        return $this->notify->find()->where(['to_uid' => $this->user->id, 'read' => 0])->count();    }    public function getDataProvider()    {        return new ActiveDataProvider([            'query' => $this->notify->find()->where(['to_uid' => $this->user->id]),            'sort' => [                'defaultOrder' => [                    'id' => SORT_DESC                ]            ]        ]);    }    public function readAll()    {        return $this->notify->updateAll(['read' => 1], ['to_uid' => $this->user->id]);    }    public function getErrors()    {        return $this->_errors;    }}
 |