add job to send mail to new user

This commit is contained in:
2020-08-14 23:32:44 +02:00
parent 3c35d688b7
commit 551cdc5dfc
5 changed files with 77 additions and 4 deletions

View File

@@ -2,12 +2,10 @@
namespace App\Http\Controllers; namespace App\Http\Controllers;
use App\Mail\NewUserInvitation; use App\Jobs\SendMailNewUserJob;
use App\User; use App\User;
use App\Http\Resources\User as UserResource; use App\Http\Resources\User as UserResource;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Mail;
use Illuminate\Support\Str; use Illuminate\Support\Str;
use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Response;
@@ -27,7 +25,7 @@ class UserController extends Controller
request()['password'] = Hash::make(Str::random(30)); request()['password'] = Hash::make(Str::random(30));
$user = User::create($this->validateData()); $user = User::create($this->validateData());
Mail::to($user->email)->send(new NewUserInvitation($user)); SendMailNewUserJob::dispatch($user);
return (new UserResource($user)) return (new UserResource($user))
->response() ->response()

View File

@@ -0,0 +1,39 @@
<?php
namespace App\Jobs;
use App\Mail\NewUserInvitation;
use App\User;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\Mail;
class SendMailNewUserJob implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
private $user;
/**
* Create a new job instance.
*
* @return void
*/
public function __construct(User $user)
{
$this->user = $user;
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
Mail::to($this->user->email)->send(new NewUserInvitation($this->user));
}
}

View File

@@ -0,0 +1,36 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateJobsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('jobs', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('queue')->index();
$table->longText('payload');
$table->unsignedTinyInteger('attempts');
$table->unsignedInteger('reserved_at')->nullable();
$table->unsignedInteger('available_at');
$table->unsignedInteger('created_at');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('jobs');
}
}