46 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace App\Jobs\Document;
 | |
| 
 | |
| use App\Abstracts\Job;
 | |
| use App\Events\Document\DocumentSending;
 | |
| use App\Events\Document\DocumentSent;
 | |
| use App\Http\Requests\Common\CustomMail as Request;
 | |
| use App\Models\Document\Document;
 | |
| 
 | |
| class SendDocumentAsCustomMail extends Job
 | |
| {
 | |
|     public string $template_alias;
 | |
| 
 | |
|     public function __construct(Request $request, string $template_alias)
 | |
|     {
 | |
|         $this->request = $request;
 | |
|         $this->template_alias = $template_alias;
 | |
|     }
 | |
| 
 | |
|     public function handle(): void
 | |
|     {
 | |
|         $document = Document::find($this->request->get('document_id'));
 | |
| 
 | |
|         event(new DocumentSending($document));
 | |
| 
 | |
|         $custom_mail = $this->request->only(['to', 'subject', 'body']);
 | |
| 
 | |
|         if ($this->request->get('user_email', false)) {
 | |
|             $custom_mail['cc'] = user()->email;
 | |
|         }
 | |
| 
 | |
|         $attachments = collect($this->request->get('attachments', []))
 | |
|             ->filter(fn($value) => $value == true)
 | |
|             ->keys()
 | |
|             ->all();
 | |
| 
 | |
|         $notification = config('type.document.' . $document->type . '.notification.class');
 | |
| 
 | |
|         // Notify the contact
 | |
|         $document->contact->notify(new $notification($document, $this->template_alias, true, $custom_mail, $attachments));
 | |
| 
 | |
|         event(new DocumentSent($document));
 | |
|     }
 | |
| }
 |