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, ]); } }