68 lines
2.4 KiB
PHP
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,
|
|
]);
|
|
}
|
|
}
|