Guest User

Laravel 5.5 Queue Issue

a guest
Feb 18th, 2018
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.97 KB | None | 0 0
  1. Code Executed in UserController.php:
  2. public function sendEmail(Request $request)
  3. {
  4.     $users = User::all();
  5.     SendEmailUpdates::dispatch($users,request('subject'),request('message'));
  6.  
  7.     request()->session()->flash('status_success',"E-mail updates has been queued!");
  8.     return back();
  9. }
  10.  
  11. ** App\Jobs\SendEmailUpdates.php **
  12. <?php
  13.  
  14. namespace App\Jobs;
  15.  
  16. Use Mail;
  17. use App\Mail\EmailUpdate;
  18. use Illuminate\Bus\Queueable;
  19. use Illuminate\Queue\SerializesModels;
  20. use Illuminate\Queue\InteractsWithQueue;
  21. use Illuminate\Contracts\Queue\ShouldQueue;
  22. use Illuminate\Foundation\Bus\Dispatchable;
  23.  
  24. class SendEmailUpdates implements ShouldQueue
  25. {
  26.     use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
  27.  
  28.     protected $users;
  29.     protected $subject;
  30.     protected $message;
  31.     /**
  32.      * Create a new job instance.
  33.      *
  34.      * @return void
  35.      */
  36.     public function __construct($users,$subject,$message)
  37.     {
  38.         $this->users = $users;
  39.         $this->subject = $subject;
  40.         $this->message = $message;
  41.     }
  42.  
  43.     /**
  44.      * Execute the job.
  45.      *
  46.      * @return void
  47.      */
  48.     public function handle()
  49.     {
  50.         try{
  51.             foreach($this->users as $user){
  52.                 Mail::to($user)->send(New EmailUpdate($user,$this->subject,$this->message));
  53.             }
  54.  
  55.             $user = \App\User::where('email','[email protected]')->first();
  56.             $user->notifications()->create([
  57.                 'type'=>'success',
  58.                 'heading'=>'Success!',
  59.                 'content'=>'E-mail update has been successfully sent to the group of users!',
  60.                 'action_link'=>'javascript:void(0)'
  61.             ]);
  62.  
  63.         } catch (\Exception $e){
  64.             report($e);
  65.  
  66.             $user = \App\User::where('email','[email protected]')->first();
  67.             Auth::user()->notifications()->create([
  68.                 'type'=>'error',
  69.                 'heading'=>'Error!',
  70.                 'content'=>"Error sending e-mail updates to users! Please check log file for more information.",
  71.                 'action_link'=>'javascript:void(0)'
  72.             ]);
  73.         }
  74.     }
  75. }
  76.  
  77. ** App\Mail\EmailUpdate.php **
  78. <?php
  79.  
  80. namespace App\Mail;
  81.  
  82. use App\User;
  83. use Illuminate\Bus\Queueable;
  84. use Illuminate\Mail\Mailable;
  85. use Illuminate\Queue\SerializesModels;
  86. use Illuminate\Contracts\Queue\ShouldQueue;
  87.  
  88. class EmailUpdate extends Mailable
  89. {
  90.     use Queueable, SerializesModels;
  91.  
  92.     public $user;
  93.     public $subject;
  94.     public $update;
  95.  
  96.     /**
  97.      * Create a new message instance.
  98.      *
  99.      * @return void
  100.      */
  101.     public function __construct(User $user,$subject,$update)
  102.     {
  103.         $this->user = $user;
  104.         $this->subject = $subject;
  105.         $this->update = $update;
  106.     }
  107.  
  108.     /**
  109.      * Build the message.
  110.      *
  111.      * @return $this
  112.      */
  113.     public function build()
  114.     {
  115.         return $this->view('emails.emailUpdate')
  116.                     ->subject($this->subject);
  117.     }
  118. }
Add Comment
Please, Sign In to add comment