78 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			78 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| use App\Models\Team;
 | |
| use App\Notifications\Internal\GeneralNotification;
 | |
| use Illuminate\Mail\Message;
 | |
| use Illuminate\Notifications\Messages\MailMessage;
 | |
| use Illuminate\Support\Facades\Mail;
 | |
| 
 | |
| function is_transactional_emails_enabled(): bool
 | |
| {
 | |
|     $settings = instanceSettings();
 | |
| 
 | |
|     return $settings->smtp_enabled || $settings->resend_enabled;
 | |
| }
 | |
| 
 | |
| function send_internal_notification(string $message): void
 | |
| {
 | |
|     try {
 | |
|         $team = Team::find(0);
 | |
|         $team?->notify(new GeneralNotification($message));
 | |
|     } catch (\Throwable $e) {
 | |
|         ray($e->getMessage());
 | |
|     }
 | |
| }
 | |
| 
 | |
| function send_user_an_email(MailMessage $mail, string $email, ?string $cc = null): void
 | |
| {
 | |
|     $settings = instanceSettings();
 | |
|     $type = set_transanctional_email_settings($settings);
 | |
|     if (blank($type)) {
 | |
|         throw new Exception('No email settings found.');
 | |
|     }
 | |
|     if ($cc) {
 | |
|         Mail::send(
 | |
|             [],
 | |
|             [],
 | |
|             fn (Message $message) => $message
 | |
|                 ->to($email)
 | |
|                 ->replyTo($email)
 | |
|                 ->cc($cc)
 | |
|                 ->subject($mail->subject)
 | |
|                 ->html((string) $mail->render())
 | |
|         );
 | |
|     } else {
 | |
|         Mail::send(
 | |
|             [],
 | |
|             [],
 | |
|             fn (Message $message) => $message
 | |
|                 ->to($email)
 | |
|                 ->subject($mail->subject)
 | |
|                 ->html((string) $mail->render())
 | |
|         );
 | |
|     }
 | |
| }
 | |
| 
 | |
| function set_transanctional_email_settings($settings = null)
 | |
| {
 | |
|     if (! $settings) {
 | |
|         $settings = instanceSettings();
 | |
|     }
 | |
|     if (! data_get($settings, 'smtp_enabled') && ! data_get($settings, 'resend_enabled')) {
 | |
|         return null;
 | |
|     }
 | |
| 
 | |
|     $configRepository = app('App\Services\ConfigurationRepository'::class);
 | |
|     $configRepository->updateMailConfig($settings);
 | |
| 
 | |
|     if (data_get($settings, 'resend_enabled')) {
 | |
|         return 'resend';
 | |
|     }
 | |
| 
 | |
|     if (data_get($settings, 'smtp_enabled')) {
 | |
|         return 'smtp';
 | |
|     }
 | |
| 
 | |
|     return null;
 | |
| }
 | 
