File: /var/www/ipsremont-demo/app/Mail/ResetPasswordNotification.php
<?php
namespace App\Mail;
use App\Services\Email\EmailsService;
use App\Services\Email\EmailTemplatesService;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
class ResetPasswordNotification extends Mailable
{
use Queueable, SerializesModels;
/**
* @var array token
*/
private $variables;
private $service;
private $email_service;
/**
* Create a new message instance.
*
* @return void
*/
public function __construct($variables)
{
$this->variables = $variables;
$this->service = new EmailTemplatesService();
$this->email_service = new EmailsService();
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
$role = $this->variables['user']->roles()->get()->pluck('type')->first();
$header = EmailTemplatesService::getTemplate('layout', $this->variables['user']->lang, 'header');
$footer = EmailTemplatesService::getTemplate('layout', $this->variables['user']->lang, 'footer');
$body = EmailTemplatesService::getTemplate('password-recovery', $this->variables['user']->lang, $role);
if($body->active) {
$header->body = $this->service->replace($header->body, $this->variables['placeholders']);
$footer->body = $this->service->replace($footer->body, $this->variables['placeholders']);
$body->body = $this->service->replace($body->body, $this->variables['placeholders']);
$body->subject = $this->service->replace($body->subject, $this->variables['placeholders']);
$data = [
'subject' => $body->subject,
'body' => $header->body . $body->body . $footer->body,
'event' => 'password-recovery',
'type' => $role,
'user_id' => $this->variables['user']->id,
'name' => $this->variables['user']->name,
'email' => $this->variables['user']->email,
];
$this->email_service->save($data);
return $this
->subject($body->subject)
->markdown('emails.emailTemplateLayout', ['header' => $header->body, 'footer' => $footer->body, 'body' => $body->body]);
}
}
}