d3yii2 / d3notification
Notification registry
dev-master
2024-11-05 18:45 UTC
Requires
This package is auto-updated.
Last update: 2024-12-05 19:04:38 UTC
README
#Notification"
Features
For active records register events (time,status, notification class, user). Status can be changed. Collect status history.
Installation
The preferred way to install this extension is through composer.
Either run
$ composer require d3yii2/d3notification "*"
or add
"d3yii2/d3notification": "*"
to the require
section of your composer.json
file.
To console config add migration
return [ 'controllerMap' => [ 'migrate' => [ 'class' => 'yii\console\controllers\MigrateController', 'migrationPath' => [ '@vendor/d3yii2/d3notification/migrations', ] ], ] ];
translation
'd3notification' => [ 'class' => 'yii\i18n\PhpMessageSource', 'basePath' => '@vendor/d3yii2/d3notification/messages', 'sourceLanguage' => 'en-US' ],
DB
Methods
Usage
Examples
notification model
Extend regular model and implement Notification interface
class KpsSmgsNotification extends KpsSmgs implements Notification { public const NOTIFICATION_NEW_ID = 1; public const NOTIFICATION_RESOLVED_ID = 2; public const NOTIFICATION_IGNORED_ID = 3; public const NOTIFICATION_TYPE_NO_DELIVERY = 1; public const NOTIFICATION_TYPE_MISMATCH_LOAD_STATION = 2; public const NOTIFICATION_TYPE_MISMATCH_END_STATION = 3; public const NOTIFICATION_TYPE_KPS_EXTRA_CAR = 4; public const NOTIFICATION_TYPE_DELIVERY_EXTRA_CAR = 5; public const NOTIFICATION_TYPE_DIFF_WEIGHT = 6; /** @var CmdDelivery */ public $delivery; /** @var CmdDCar */ public $deliveryCar; /** @var KpsSmgs */ public $smgs; /** @var KpsSmgsWagon */ public $smgsWagon; /** @var CmdStatus */ public $deliveryStatus; /** * @var mixed|null */ public $statusId; /** * @var mixed|null */ public $typeId; public function getNotificationData(): array { $data = []; if($this->deliveryCar){ $data['deliveryCarNumber'] = $this->deliveryCar->number; } if($this->deliveryStatus){ $data['deliveryStatusType'] = $this->deliveryStatus->type; $data['deliveryStatusStation'] = TtStation::findOne($this->deliveryStatus->station_id)->name_ru; } if($this->delivery){ $data['deliveryWeight'] = $this->delivery->weight; $data['deliverySmgsNumber'] = $this->delivery->delivery_note; } if($this->smgs){ $data['kpsSmgsNumber'] = $this->smgs->number; } if($this->smgsWagon){ $data['kpsCarNumber'] = $this->smgsWagon->number; $data['kpsCarWeight'] = $this->smgsWagon->weight; } return $data; } public function getNotificationKey(): int { if($this->delivery){ return $this->delivery->id; } return 0; } public function getNotificationRecordId(): int { return $this->id; } public function getNotificationStatusList(): array { return [ self::NOTIFICATION_NEW_ID => 'New', self::NOTIFICATION_RESOLVED_ID => 'Resolved', self::NOTIFICATION_IGNORED_ID => 'Ignored' ]; } public function getNotificationTypeList(): array { return [ self::NOTIFICATION_TYPE_NO_DELIVERY => 'Not Found Delivery record', self::NOTIFICATION_TYPE_MISMATCH_LOAD_STATION => 'Mismatch load station', self::NOTIFICATION_TYPE_MISMATCH_END_STATION => 'Mismatch end station', self::NOTIFICATION_TYPE_KPS_EXTRA_CAR => 'KPS Extra car', self::NOTIFICATION_TYPE_DELIVERY_EXTRA_CAR => 'Delivery Extra Car', self::NOTIFICATION_TYPE_DIFF_WEIGHT => 'Different weight', ]; } public function getStatusId(): int { return $this->statusId; } public function getTypeId(): int { return $this->typeId; } }
###Notification registration
$logic = new NotificationLogic($companyId,$userId); $notification = new KpsSmgsNotification(); $notification->attributes = $smgs->attributes; $notification->typeId = KpsSmgsNotification::NOTIFICATION_TYPE_MISMATCH_END_STATION; $notification->statusId = KpsSmgsNotification::NOTIFICATION_NEW_ID; $notification->smgs = $smgs; $notification->delivery = $delivery; $notification->deliveryStatus = $statusEndStation; $logic->register($notification);
###Notification registration by form To controlier add action
public function actions() { return [ 'notification-create' => [ 'class' => CreateNotification::class, 'notificationModelClass' => MTaskNotification::class, 'typeId' => MTaskNotification::NOTIFICATION_TYPE_OTHER, 'backUrl' => ['view','id' => '@id'], 'notesList' => [ 'aaa1', 'aaa2', ] ] ]; }
widget for model actions
show all model record notifications
echo ModelNotifications::widget([ 'modelClass' => MTaskNotification::class, 'modelRecordId' => $model->id ]);