<?php
namespace App\Notifications;
use Illuminate\Auth\Notifications\ResetPassword;
use Illuminate\Bus\Queueable;
use Illuminate\Notifications\Messages\MailMessage;
use Illuminate\Support\Facades\Auth;
use Modules\SystemSetting\Entities\EmailSetting;
use Modules\SystemSetting\Entities\EmailTemplate;
class PasswordResetNotification extends ResetPassword
{
use Queueable;
public $token;
/**
* Create a new notification instance.
*
* @return void
*/
public function __construct($token)
{
$this->token = $token;
}
/**
* Get the notification's delivery channels.
*
* @param mixed $notifiable
* @return array
*/
public function via($notifiable)
{
return ['mail'];
}
/**
* Get the mail representation of the notification.
*
* @param mixed $notifiable
* @return \Illuminate\Notifications\Messages\MailMessage
*/
public function toMail($notifiable)
{
if (static::$toMailCallback) {
return call_user_func(static::$toMailCallback, $notifiable, $this->token);
}
$tamplate = EmailTemplate::where('act', 'Reset_Password')->first();
$subject = $tamplate->subj;
$body = $tamplate->email_body;
$key = ['http://{{reset_link}}', '{{reset_link}}', '{{app_name}}'];
$value = [route('password.reset', $this->token), route('password.reset', $this->token), Settings('site_title')];
$body = str_replace($key, $value, $body);
$config = EmailSetting::where('active_status', 1)->first();
if ($config && $config->email_engine_type == 'sendgrid') {
$email = !empty($notifiable->email)?$notifiable->email:Auth::user()->email;
$emailSendGrid = new \SendGrid\Mail\Mail();
$emailSendGrid->setFrom($config->from_email, $config->from_name);
$emailSendGrid->setSubject($subject);
$emailSendGrid->addTo($email, $email);
$emailSendGrid->addContent(
"text/html", $body
);
$sendgrid = new \SendGrid($config->api_key);
$response = $sendgrid->send($emailSendGrid);
}
return (new MailMessage)
->view('partials.email', ["body" => $body])->subject($subject);
}
/**
* Get the array representation of the notification.
*
* @param mixed $notifiable
* @return array
*/
public function toArray($notifiable)
{
return [
//
];
}
}