Files
travel/app/Jobs/SendApprovalRequestEmail.php
Tim Basten 564f78dcda
All checks were successful
linter / quality (push) Successful in 1m37s
tests / ci (8.4) (push) Successful in 2m13s
tests / ci (8.5) (push) Successful in 1m25s
initial
2026-03-05 11:41:39 +08:00

35 lines
1.0 KiB
PHP

<?php
namespace App\Jobs;
use App\Mail\ApprovalRequestMail;
use App\Models\TravelRequest;
use App\Models\User;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Foundation\Queue\Queueable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\Mail;
use Illuminate\Support\Facades\URL;
class SendApprovalRequestEmail implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
public function __construct(
public readonly TravelRequest $travelRequest,
public readonly string $role,
) {}
public function handle(): void
{
$approvers = User::role($this->role)->get();
foreach ($approvers as $approver) {
$signedUrl = URL::signedRoute('travel-requests.approve', ['id' => $this->travelRequest->id]);
Mail::to($approver->email)->queue(new ApprovalRequestMail($this->travelRequest, $approver, $signedUrl));
}
}
}