PHP Classes

File: README.md

Recommend this page to a friend!
  Classes of Uldis Nelsons   D3 Notification   README.md   Download  
File: README.md
Role: Documentation
Content type: text/markdown
Description: Documentation
Class: D3 Notification
Register handler for change events in model object
Author: By
Last change:
Date: 2 years ago
Size: 4,483 bytes
 

Contents

Class file image Download

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

DB strukture

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