<?php namespace App\Mail; use App\Helpers\Helper; use App\Models\EmailTemplates; use Illuminate\Bus\Queueable; use Illuminate\Mail\Mailable; use Illuminate\Queue\SerializesModels; class ApproveSenderID extends Mailable { use Queueable, SerializesModels; protected $sender_id; protected $sender_id_url; /** * render sms with tag * * @param $msg * @param $data * * @return string|string[] */ public function renderTemplate($msg, $data) { preg_match_all('~{(.*?)}~s', $msg, $datas); foreach ($datas[1] as $value) { if (array_key_exists($value, $data)) { $msg = preg_replace("/\b$value\b/u", $data[$value], $msg); } else { $msg = str_ireplace($value, '', $msg); } } return str_ireplace(["{", "}"], '', $msg); } /** * Create a new notification instance. * * @return void */ public function __construct($sender_id, $sender_id_url) { $this->sender_id = $sender_id; $this->sender_id_url = $sender_id_url; } /** * Build the message. * * @return $this */ public function build(): ApproveSenderID { $template = EmailTemplates::where('slug', 'sender_id_notification')->first(); $subject = $this->renderTemplate($template->subject, [ 'app_name' => config('app.name'), ]); $content = $this->renderTemplate($template->content, [ 'sender_id' => $this->sender_id, 'sender_id_url' => "<a href='$this->sender_id_url' target='_blank'>Sender ID</a>", ]); return $this->from(Helper::app_config('notification_email'), Helper::app_config('notification_from_name')) ->subject($subject) ->markdown('emails.senderid.approve', [ 'content' => $content, 'url' => $this->sender_id_url, ]); } }