?
<?php
namespace App\Models;
use Mail;
use App\Mail\DefaultEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use App\Models\Transaction;
use App\Models\WidgetSetting;
class Mailemit extends Model
{
use HasFactory;
public $table="email_message";
public static function GetTheDefaultMessage($email_message_id){
return Mailemit::findOrFail($email_message_id) ;
}
public static function LetUsInjectMessageInTheEmail($injectArray,$raw_message_input){
// Function injects proper message replacing the proper variables
$raw_message = [
$raw_message_input->message,
];
$raw_subject = [
$raw_message_input->subject,
];
foreach ($raw_message as $message) {
foreach ($injectArray as $key => $value) {
$placeholder = "[$key]";
$message = str_replace($placeholder, $value, $message);
}
// echo $message . "\n";
}
foreach ($raw_subject as $subject) {
foreach ($injectArray as $key => $value) {
$placeholder = "[$key]";
$subject = str_replace($placeholder, $value, $subject);
}
// echo $message . "\n";
}
$inject_message = [
'subject' => $subject ?? '',
'message' => $message ?? '',
];
return $inject_message ;
}
public static function LetUsSendEmail($to,$subject,$message_id,$name,$inject){
// Mailemit::LetUsSendEmail($to,$subject,$message_id,$name,$inject)
// dd($inject['invoiceid']) ;
/////////////////////////////////////////////////
$adminEmail = Widget::SingleDataSpecific('AdminEmail');
$fromName = $adminEmail->title ;
$fromEmail = $adminEmail->url ;
$raw_message = Mailemit::GetTheDefaultMessage($message_id);
$subject = $raw_message->subject ;
$final_body = Mailemit::LetUsInjectMessageInTheEmail($inject,$raw_message) ;
if($message_id == 3){
// message id 3 is for lead capture email
$mailData = [
'defaultname' => $name ?? '',
'body' => $final_body,
];
}
if($message_id == 2){
// message id 2 is for order invoice email
$displayInvoiceData = Transaction::GetInvoiceData($inject['invoiceid']) ;
$Currency = WidgetSetting::getSpecific('Currency') ;
// This array replaces data directly in the email
$mailData = [
'defaultname' => $name ?? '',
'displayInvoiceData' => $inject['displayInvoiceData'] ?? '' ,
'Currency'=>$Currency ?? '' ,
'body' => $final_body,
];
}
Mail::to($to)->send(new DefaultEmail($mailData,$subject,$fromEmail,$fromName));
return redirect()->back();
// dd('Email send successfully.');
}
// ['users' => $users]
}