Files
timebank-cc-public/app/Mail/CallExpiringMail.php
Ronald Huynen 2547717edb Initial commit
2026-03-23 21:37:59 +01:00

68 lines
2.4 KiB
PHP

<?php
namespace App\Mail;
use App\Models\Call;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Mcamara\LaravelLocalization\Facades\LaravelLocalization;
class CallExpiringMail extends Mailable implements ShouldQueue
{
use Queueable, SerializesModels;
public $call;
public $callable;
public string $callableType;
public int $daysRemaining;
public string $mailLocale;
public string $loginUrl;
public string $callTitle;
public function __construct(Call $call, $callable, string $callableType, int $daysRemaining)
{
$this->call = $call;
$this->callable = $callable;
$this->callableType = $callableType;
$this->daysRemaining = $daysRemaining;
$this->mailLocale = $callable->lang_preference ?? config('app.fallback_locale', 'en');
$this->locale($this->mailLocale);
$this->callTitle = $call->tag?->name ?? '';
$callsRoute = LaravelLocalization::getURLFromRouteNameTranslated($this->mailLocale, 'routes.calls.manage');
$base = match ($callableType) {
'Organization' => route('organization.direct-login', ['organizationId' => $callable->id, 'intended' => $callsRoute]),
'Bank' => route('bank.direct-login', ['bankId' => $callable->id, 'intended' => $callsRoute]),
default => route('user.direct-login', ['userId' => $callable->id, 'intended' => $callsRoute]),
};
$this->loginUrl = LaravelLocalization::localizeURL($base, $this->mailLocale);
}
public function build()
{
app()->setLocale($this->mailLocale);
$callTitle = $this->call->tag?->translation?->name ?? $this->call->tag?->name ?? '';
return $this
->from(
timebank_config('mail.system_admin.email'),
timebank_config('mail.system_admin.name')
)
->subject(trans('Your call expires in :days days', ['days' => $this->daysRemaining], $this->mailLocale))
->view('emails.calls.expiring')
->with([
'callable' => $this->callable,
'call' => $this->call,
'callTitle' => $callTitle,
'daysRemaining' => $this->daysRemaining,
'loginUrl' => $this->loginUrl,
]);
}
}