ok

Mini Shell

Direktori : /home2/selectio/www/billingsoftwarenew/core/app/Notify/
Upload File :
Current File : /home2/selectio/www/billingsoftwarenew/core/app/Notify/Notify.php

<?php

namespace App\Notify;

class Notify {
    /*
    |--------------------------------------------------------------------------
    | Send Notification
    |--------------------------------------------------------------------------
    |
    | The notification will go via some methods which were implemented. Different
    | classes are available for a particular method. But we need a central position
    | to serve a notification via every method which is selected. This is
    | the class that is serving this perspective.
    |
     */

    /**
     * Template name, which contain the short codes and messages
     *
     * @var string
     */
    public $templateName;

    /**
     * Short Codes, which will be replaced
     *
     * @var array
     */
    public $shortCodes;

    /**
     * Send via email,sms etc
     *
     * @var array|null
     */
    public $sendVia;

    /**
     * Instance of user, who will get the notification
     *
     * @var object
     */
    public $user;

    /**
     * Notification log will be created or not
     *
     * @var bool
     */
    public $createLog;

    /**
     * System general setting's instances
     *
     * @var object
     */
    public $setting;

    /**
     * The relational field name like user_id, agent_id
     *
     * @var string
     */
    public $userColumn;

    /**
     * Necessary value for push notification to get redirect page for app user
     *
     * @var object
     */

    public $clickValue;

    /**
     * Assign value to sendVia and setting property
     *
     * @param null $sendVia
     * @return void
     */
    public function __construct($sendVia = null) {
        $this->sendVia = $sendVia;
        $this->setting = gs();
    }

    /**
     * Send notification via methods.
     *
     * This method is creating instances of notifications to send the notification.
     *
     * @return void
     */
    public function send() {
        $methods = [];
        //get the notification method classes which are selected
        if ($this->sendVia) {
            foreach ($this->sendVia as $sendVia) {
                $methods[$sendVia] = $this->notifyMethods($sendVia);
            }
        } else {
            $methods = $this->notifyMethods();
        }

        //send the notification via methods one by one
        foreach ($methods as $method) {
            $notify               = new $method;
            $notify->templateName = $this->templateName;
            $notify->shortCodes   = $this->shortCodes;
            $notify->user         = $this->user;
            $notify->setting      = $this->setting;
            $notify->createLog    = $this->createLog;
            $notify->userColumn   = $this->userColumn;
            $notify->clickValue   = $this->clickValue;
            $notify->send();
        }
    }

    /**
     * Get the notification method classes.
     *
     * @param array|null $sendVia
     * @return array|string
     */
    protected function notifyMethods($sendVia = null) {
        $methods = [
            'email'             => Email::class,
            'sms'               => Sms::class,
            'push_notification' => PushNotification::class,
        ];
        if ($sendVia) {
            return $methods[$sendVia];
        }
        return $methods;
    }
}

Zerion Mini Shell 1.0