126 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			126 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
namespace App\Notifications\Install;
 | 
						|
 | 
						|
use Illuminate\Notifications\Notification;
 | 
						|
use Illuminate\Notifications\Messages\MailMessage;
 | 
						|
use Illuminate\Notifications\Messages\SlackMessage;
 | 
						|
 | 
						|
class UpdateFailed extends Notification
 | 
						|
{
 | 
						|
    /**
 | 
						|
     * The event.
 | 
						|
     *
 | 
						|
     * @var object
 | 
						|
     */
 | 
						|
    public $event;
 | 
						|
 | 
						|
    /**
 | 
						|
     * The notification config.
 | 
						|
     *
 | 
						|
     * @var object
 | 
						|
     */
 | 
						|
    public $notifications;
 | 
						|
 | 
						|
    /**
 | 
						|
     * Create a notification instance.
 | 
						|
     *
 | 
						|
     * @param  object  $event
 | 
						|
     */
 | 
						|
    public function __construct($event)
 | 
						|
    {
 | 
						|
        $this->event = $event;
 | 
						|
        $this->notifications = config('update.notifications');
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Get the notification's channels.
 | 
						|
     *
 | 
						|
     * @param  mixed  $notifiable
 | 
						|
     * @return array|string
 | 
						|
     */
 | 
						|
    public function via($notifiable)
 | 
						|
    {
 | 
						|
        $channels = [];
 | 
						|
 | 
						|
        foreach ($this->notifications as $channel => $settings) {
 | 
						|
            if (empty($settings['enabled'])) {
 | 
						|
                continue;
 | 
						|
            }
 | 
						|
 | 
						|
            $channels[] = $channel;
 | 
						|
        }
 | 
						|
 | 
						|
        return $channels;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Build the mail representation of the notification.
 | 
						|
     *
 | 
						|
     * @param  mixed  $notifiable
 | 
						|
     * @return \Illuminate\Notifications\Messages\MailMessage
 | 
						|
     */
 | 
						|
    public function toMail($notifiable)
 | 
						|
    {
 | 
						|
        $subject = trans('notifications.update.mail.subject', [
 | 
						|
            'domain' => request()->getHttpHost(),
 | 
						|
        ]);
 | 
						|
 | 
						|
        $message = trans('notifications.update.mail.message', [
 | 
						|
            'alias'             => $this->getAliasName(),
 | 
						|
            'current_version'   => $this->event->old,
 | 
						|
            'new_version'       => $this->event->new,
 | 
						|
            'step'              => $this->event->step,
 | 
						|
            'error_message'     => $this->event->message,
 | 
						|
        ]);
 | 
						|
 | 
						|
        return (new MailMessage)
 | 
						|
            ->from($this->notifications['mail']['from'], $this->notifications['mail']['name'])
 | 
						|
            ->subject($subject)
 | 
						|
            ->line($message);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Get the Slack representation of the notification.
 | 
						|
     *
 | 
						|
     * @param  mixed  $notifiable
 | 
						|
     * @return SlackMessage
 | 
						|
     */
 | 
						|
    public function toSlack($notifiable)
 | 
						|
    {
 | 
						|
        $message = trans('notifications.update.slack.message', [
 | 
						|
            'domain' => request()->getHttpHost(),
 | 
						|
        ]);
 | 
						|
 | 
						|
        return (new SlackMessage)
 | 
						|
            ->error()
 | 
						|
            ->from($this->notifications['slack']['from'], $this->notifications['slack']['emoji'])
 | 
						|
            ->to($this->notifications['slack']['to'])
 | 
						|
            ->content($message)
 | 
						|
            ->attachment(function ($attachment) {
 | 
						|
                $attachment->fields([
 | 
						|
                    'Alias'             => $this->getAliasName(),
 | 
						|
                    'Current Version'   => $this->event->old,
 | 
						|
                    'New Version'       => $this->event->new,
 | 
						|
                    'Step'              => $this->event->step,
 | 
						|
                    'Error Message'     => $this->event->message,
 | 
						|
                ]);
 | 
						|
            });
 | 
						|
    }
 | 
						|
 | 
						|
    protected function getAliasName()
 | 
						|
    {
 | 
						|
        if ($this->event->alias == 'core') {
 | 
						|
            return config('app.name');
 | 
						|
        }
 | 
						|
 | 
						|
        $module = module($this->event->alias);
 | 
						|
 | 
						|
        if (empty($module)) {
 | 
						|
            return ucfirst($this->event->alias);
 | 
						|
        }
 | 
						|
 | 
						|
        return $module->getName();
 | 
						|
    }
 | 
						|
}
 |