userAbo->is_for === 'me'; $salutation = __('email.hello'); $firstname = $this->userAbo->shopping_user?->billing_firstname; if ($firstname) { $salutation = __('email.hello').' '.$firstname; } $days = $this->daysUntilExecution(); return $this->subject(__('email.abo_reminder_subject')) ->view('emails.abo_execution_reminder') ->with([ 'salutation' => $salutation, 'isConsultant' => $isConsultant, 'days' => $days, 'nextDate' => $this->userAbo->next_date ? Carbon::parse($this->userAbo->next_date)->format(\Util::formatDateDB()) : '', 'link' => $this->buildLink($isConsultant), 'greetings' => __('email.greetings'), 'sender' => __('email.sender'), ]); } /** * Berater erhalten den Link ins Sales Center (my.mivita.care), Endkunden ins * Kundenportal (in.mivita.care) – jeweils zur Abo-Detail-/Übersichtsseite. */ private function buildLink(bool $isConsultant): string { if ($isConsultant) { return rtrim(Util::getMyMivitaUrl(), '/').'/user/abos/detail/me/'.$this->userAbo->id; } return rtrim(Util::getMyMivitaPortalUrl(), '/').'/portal/my-subscriptions'; } private function daysUntilExecution(): int { if (! $this->userAbo->next_date) { return AboHelper::getOneTimeWindowDays(); } $days = Carbon::today()->diffInDays(Carbon::parse($this->userAbo->next_date)->startOfDay(), false); return (int) max(0, $days); } }