48 lines
1.2 KiB
PHP
48 lines
1.2 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace App\Mail;
|
|
|
|
use App\Models\User;
|
|
use Illuminate\Bus\Queueable;
|
|
use Illuminate\Mail\Mailable;
|
|
use Illuminate\Queue\SerializesModels;
|
|
|
|
final class AcademyAccessIssue extends Mailable
|
|
{
|
|
use Queueable, SerializesModels;
|
|
|
|
public function __construct(
|
|
public readonly User $user,
|
|
public readonly ?string $message = null,
|
|
public readonly ?string $sessionId = null,
|
|
public readonly ?string $issueType = null,
|
|
public readonly ?string $contactEmail = null,
|
|
)
|
|
{
|
|
}
|
|
|
|
public function build(): self
|
|
{
|
|
$subject = 'Academy support request'.($this->issueType ? ' ['.$this->issueType.']' : '').' from '.$this->user->email;
|
|
$replyTo = trim((string) ($this->contactEmail ?: $this->user->email));
|
|
|
|
$mail = $this->subject($subject)
|
|
->view('emails.academy_access_issue')
|
|
->with([
|
|
'user' => $this->user,
|
|
'message' => $this->message,
|
|
'sessionId' => $this->sessionId,
|
|
'issueType' => $this->issueType,
|
|
'contactEmail' => $this->contactEmail,
|
|
]);
|
|
|
|
if ($replyTo !== '') {
|
|
$mail->replyTo($replyTo);
|
|
}
|
|
|
|
return $mail;
|
|
}
|
|
}
|