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;
- }
- }
|