SendMail.php 1.98 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
<?php

namespace App\Jobs;

use App\Mailer\DynamicMailConfig;
use Carbon\Carbon;
use Exception;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldBeUnique;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\Mail;
use Illuminate\Support\Facades\Log;

class SendMail implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
    private $data;
    private $email;
    private $view;
    private $table;
    private $field;
25
    private $subject;
26 27 28 29 30
    /**
     * Create a new job instance.
     *
     * @return void
     */
31
    public function __construct($data, $view, $email, $table = null, $field = null, $subject = 'Pendaftaran KONASPI UNESA 2024')
32 33 34 35 36 37
    {
        $this->data = $data;
        $this->view = $view;
        $this->email = $email;
        $this->table = $table;
        $this->field = $field;
38
        $this->subject = $subject;
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        try{
            DynamicMailConfig::setConfig();
            $email = $this->email;
            // $email = 'iskandarjava@gmail.com';
            Mail::send($this->view, $this->data, function ($message) use ($email){
                    $message->from('konaspi2024@unesa.ac.id', 'Universitas Negeri Surabaya');
                    $message->sender('konaspi2024@unesa.ac.id', 'Universitas Negeri Surabaya');
55
                    $message->subject($this->subject);
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
                    $message->to($email, $email);
                }
            );

            if($this->table && isset($this->data[$this->table])){
                $field = $this->field;
                $this->data[$this->table]->$field = Carbon::now();
                $this->data[$this->table]->save();
            }
        }
        catch(Exception $ex){
            Log::debug($ex);
        }
    }
}