Files
baodev0andClaude Opus 5.5 30898ea46f feat: email gửi tay/nhắc gia hạn, gói hosting, sửa dữ liệu sản phẩm
- 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>
2026-10-09 11:32:05 +07:00

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