Documentation
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',
]
],
]
];
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);