invoicePdf === null || $this->invoicePdfFileName === null) { return []; } return [Attachment::fromData(fn () => $this->invoicePdf, $this->invoicePdfFileName)->withMime('application/pdf')]; } protected function scenario(): string { return 'hosting_account_created'; } protected function variables(): array { $data = [...MailGlobals::values(), ...$this->data]; $row = fn (string $label, ?string $value) => $value ? EmailTemplateShell::row($label, e($value)) : ''; $pleskBlock = ''; if (!empty($data['plesk_login'])) { $pleskBlock = EmailTemplateShell::paragraph('TÀI KHOẢN ĐĂNG NHẬP PLESK PANEL') . EmailTemplateShell::infoTable(array_filter([ 'Địa chỉ Panel' => '' . e($data['plesk_panel_url'] ?? '') . '', 'Tên đăng nhập' => e($data['plesk_login']), 'Mật khẩu' => !empty($data['plesk_password']) ? e($data['plesk_password']) : null, ])); } return [ 'app_name' => $data['company_name'] ?? config('app.name', 'The Gioi So'), 'full_name' => $data['customer_name'] ?? 'Quý khách', 'domain_name' => $data['domain_name'] ?? '', 'hosting_plan' => $data['hosting_plan'] ?? '', 'server_name' => $data['server_name'] ?? '', 'recipient_label' => $this->recipientLabel($data), 'server_host_row' => $row('Máy chủ / FTP Host', $data['server_host'] ?? null), 'ftp_username_row' => $row('Tài khoản FTP', $data['ftp_username'] ?? null), 'ftp_password_row' => $row('Mật khẩu FTP', $data['ftp_password'] ?? null), 'ftp_password_notice' => !empty($data['ftp_password']) ? '
Lưu ý: Vì lý do bảo mật, mật khẩu FTP chỉ được gửi một lần duy nhất qua email và không được lưu trữ trên hệ thống. Vui lòng lưu lại ở nơi an toàn.
' : '', 'plesk_block' => $pleskBlock, ]; } private function recipientLabel(array $data): string { foreach (['customer_name', 'customer_company'] as $key) { $value = trim((string) ($data[$key] ?? '')); if ($value !== '') { return $value; } } return 'Công ty'; } }