call = $call; $this->callable = $callable; $this->callableType = $callableType; $this->mailLocale = $callable->lang_preference ?? config('app.fallback_locale', 'en'); $this->locale($this->mailLocale); // callTitle is resolved in build() after locale is set $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 has expired', [], $this->mailLocale)) ->view('emails.calls.expired') ->with([ 'callable' => $this->callable, 'call' => $this->call, 'callTitle' => $callTitle, 'loginUrl' => $this->loginUrl, ]); } }