- Gửi email theo template cho 1 khách, tab lịch sử email, nhắc gia hạn dịch vụ hàng loạt - Mail lưu from/bcc/sent_by; mẫu MARKETING và mẫu cũ trong TemplateSeeder - Gói hosting: giới hạn, trạng thái, lấy plan Plesk qua CLI gateway - Backfill payment_method và ngày đơn hàng còn thiếu - Bổ sung field CPU/RAM/Disk/Băng thông cho loại sản phẩm vps và cloud Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
75 lines
3.9 KiB
PHP
75 lines
3.9 KiB
PHP
<?php
|
|
|
|
namespace Database\Seeders\EmailTemplates;
|
|
|
|
use App\Support\EmailTemplateShell as T;
|
|
|
|
final class LegacyTemplates
|
|
{
|
|
/**
|
|
* @return array<int, array{scenario: string, name: string, subject: string, body: string}>
|
|
*/
|
|
public static function all(): array
|
|
{
|
|
return [
|
|
[
|
|
'scenario' => 'customer_signup_verify',
|
|
'name' => '[Admin] Đơn hàng mới đã thanh toán',
|
|
'subject' => '[ADMIN] Đơn hàng mới #{{order_num}} — {{customer_email}}',
|
|
'body' => T::title('📦 Đơn hàng mới đã thanh toán')
|
|
. T::subtitle('Đơn #{{order_num}} — {{created_at}}')
|
|
. T::heading('Thông tin khách hàng')
|
|
. T::infoTable([
|
|
'Tên khách hàng' => '{{customer_name}}',
|
|
'Email' => '{{customer_email}}',
|
|
], '{{client_ip_row}}')
|
|
. T::heading('Thông tin đơn hàng')
|
|
. T::infoTable([
|
|
'Mã đơn hàng' => '#{{order_num}}',
|
|
'Sản phẩm' => '{{product_name}}',
|
|
'Loại dịch vụ' => '{{product_type}}',
|
|
'Chu kỳ thanh toán' => '{{billing_cycle}}',
|
|
'Tổng tiền' => '{{total_formatted}}',
|
|
'Trạng thái' => '<span style="color: #16a34a;">✅ Đã thanh toán</span>',
|
|
])
|
|
. '{{vm_block}}'
|
|
. T::autoNotice(),
|
|
],
|
|
[
|
|
'scenario' => 'customer_password_reset',
|
|
'name' => '[Admin] Yêu cầu nạp tiền chờ duyệt (kèm chứng từ)',
|
|
'subject' => '[ADMIN] Yêu cầu nạp tiền chờ duyệt - {{transaction_code}}',
|
|
'body' => T::title('🔔 Yêu cầu nạp tiền chờ duyệt')
|
|
. T::subtitle('{{transaction_code}} — {{created_at}}')
|
|
. T::heading('Thông tin khách hàng')
|
|
. T::infoTable([
|
|
'Tên khách hàng' => '{{customer_name}}',
|
|
'Email' => '{{customer_email}}',
|
|
], '{{customer_phone_row}}{{client_ip_row}}')
|
|
. T::heading('Thông tin giao dịch')
|
|
. T::infoTable([
|
|
'Mã giao dịch' => '{{transaction_code}}',
|
|
'Số tiền' => '{{amount_formatted}}',
|
|
'Trạng thái' => '<span style="color: #d97706;">Đang chờ duyệt</span>',
|
|
], '{{proof_row}}')
|
|
. T::note('Vui lòng vào trang quản trị để kiểm tra chứng từ và duyệt hoặc từ chối giao dịch.'),
|
|
],
|
|
[
|
|
'scenario' => 'vm_password_reset_success',
|
|
'name' => 'Mật khẩu VPS đã được đặt lại',
|
|
'subject' => 'Mật khẩu VPS của bạn đã được đặt lại',
|
|
'body' => T::title('🔑 Mật khẩu VPS đã được đặt lại')
|
|
. T::subtitle('Máy chủ: {{vm_name}}')
|
|
. T::paragraph('Xin chào Quý khách,')
|
|
. T::paragraph('Mật khẩu đăng nhập máy chủ ảo <strong>{{vm_name}}</strong> đã được đặt lại thành công. Vui lòng sử dụng mật khẩu mới bên dưới để đăng nhập:')
|
|
. T::infoTable([
|
|
'Máy chủ' => '{{vm_name}}',
|
|
'Mật khẩu mới' => '{{new_password}}',
|
|
])
|
|
. T::note('Vì lý do bảo mật, vui lòng đổi lại mật khẩu ngay sau khi đăng nhập thành công.')
|
|
. T::autoNotice(),
|
|
],
|
|
];
|
|
}
|
|
}
|