?
Current File : /home/sanghavirealty/public_html/appazwer/Models/Mailemit.php
<?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]








}