224 lines
14 KiB
PHP
224 lines
14 KiB
PHP
<?php
|
|
|
|
namespace Database\Seeders\EmailTemplates;
|
|
|
|
use App\Support\EmailTemplateShell as T;
|
|
|
|
final class ServiceTemplates
|
|
{
|
|
private const ACTIVE = '<span style="color: #16a34a;">Đang hoạt động</span>';
|
|
|
|
/**
|
|
* @return array<int, array{scenario: string, name: string, subject: string, body: string}>
|
|
*/
|
|
public static function all(): array
|
|
{
|
|
return [
|
|
[
|
|
'scenario' => 'vm_credentials',
|
|
'name' => 'Khởi tạo VPS (thông tin truy cập)',
|
|
'subject' => 'VPS của bạn đã sẵn sàng — {{product_name}}',
|
|
'body' => T::title('Cloud VPS đã sẵn sàng')
|
|
. T::greeting('{{full_name}}')
|
|
. T::paragraph('Cảm ơn Quý khách đã tin tưởng sử dụng dịch vụ của <strong>{{app_name}}</strong>. Cloud VPS <strong>{{product_name}}</strong> đã được khởi tạo thành công.')
|
|
. T::heading('Thông tin dịch vụ')
|
|
. T::infoTable(['Dịch vụ' => '{{product_name}}'], '{{product_billing_row}}{{product_price_row}}{{os_name_row}}{{service_due_exp_row}}')
|
|
. T::heading('Thông tin truy cập')
|
|
. T::infoTable([
|
|
'IP / Host' => '{{service_host}}',
|
|
'Tài khoản' => '{{service_username}}',
|
|
'Mật khẩu' => '{{service_password}}',
|
|
], '{{service_port_row}}')
|
|
. T::button('{{login_url}}', 'QUẢN LÝ DỊCH VỤ')
|
|
. T::note('Vui lòng đổi mật khẩu ngay sau lần đăng nhập đầu tiên và không chia sẻ thông tin truy cập cho người khác.')
|
|
. T::supportLine(),
|
|
],
|
|
[
|
|
'scenario' => 'hosting_information',
|
|
'name' => 'Thông tin truy cập Hosting',
|
|
'subject' => 'Thông tin truy cập {{product_name}}',
|
|
'body' => T::title('Thông tin truy cập Hosting')
|
|
. T::greeting('{{client_name}}')
|
|
. T::paragraph('Cảm ơn Quý khách đã tin tưởng sử dụng dịch vụ của <strong>{{company_name}}</strong>. Hosting của Quý khách đã được khởi tạo thành công.')
|
|
. T::heading('Thông tin gói dịch vụ')
|
|
. T::infoTable([
|
|
'Gói dịch vụ' => '{{product_name}}',
|
|
'Chu kỳ thanh toán' => '{{product_billing}}',
|
|
'Giá' => '{{product_price}} VNĐ',
|
|
'Ngày hết hạn' => '{{service_due_exp}}',
|
|
])
|
|
. T::heading('Thông tin truy cập Hosting')
|
|
. T::infoTable([
|
|
'IP / Host' => '{{service_host}}',
|
|
'Tài khoản' => '{{service_username}}',
|
|
'Mật khẩu' => '{{service_password}}',
|
|
])
|
|
. T::heading('Thông tin truy cập FTP')
|
|
. T::infoTable([
|
|
'FTP Host' => '{{service_host}}',
|
|
'Tài khoản FTP' => '{{ftp_account}}',
|
|
'Mật khẩu FTP' => '{{ftp_password}}',
|
|
])
|
|
. T::button('{{login_url}}', 'QUẢN LÝ DỊCH VỤ')
|
|
. T::note('Vui lòng lưu thông tin truy cập ở nơi an toàn và không chia sẻ cho người khác.')
|
|
. T::supportLine(),
|
|
],
|
|
[
|
|
'scenario' => 'hosting_account_created',
|
|
'name' => 'Hosting đã khởi tạo',
|
|
'subject' => 'V/v: {{app_name}} gửi thông tin truy cập - {{server_name}} - {{recipient_label}}',
|
|
'body' => T::title('Hosting đã sẵn sàng')
|
|
. T::greeting('{{full_name}}')
|
|
. T::paragraph('Gói hosting cho tên miền <strong>{{domain_name}}</strong> tại <strong>{{app_name}}</strong> đã được khởi tạo thành công. Dưới đây là thông tin truy cập:')
|
|
. T::infoTable([
|
|
'Tên miền' => '{{domain_name}}',
|
|
'Gói hosting' => '{{hosting_plan}}',
|
|
], '{{server_host_row}}{{ftp_username_row}}{{ftp_password_row}}' . T::row('Trạng thái', self::ACTIVE))
|
|
. '{{ftp_password_notice}}'
|
|
. '{{plesk_block}}'
|
|
. T::button('{{login_url}}', 'ĐĂNG NHẬP NGAY')
|
|
. T::supportLine(),
|
|
],
|
|
[
|
|
'scenario' => 'vm_suspended',
|
|
'name' => 'VPS bị tạm ngưng',
|
|
'subject' => '[Thế Giới Số] Dịch vụ Cloud VPS của bạn đã bị tạm ngưng',
|
|
'body' => T::title('Dịch vụ Cloud VPS đã bị tạm ngưng')
|
|
. T::greeting('{{customer_name}}')
|
|
. T::paragraph('Dịch vụ Cloud VPS của Quý khách hiện đã bị <strong>tạm ngưng (Suspend)</strong> do chưa thanh toán gia hạn. Vui lòng thanh toán sớm để dịch vụ được kích hoạt lại.')
|
|
. T::infoTable([
|
|
'Tên dịch vụ' => '{{vm_name}}',
|
|
'VM ID' => '{{vmware_id}}',
|
|
'Thời gian tạm ngưng' => '{{suspended_at}}',
|
|
])
|
|
. T::note('Sau <strong>30 ngày</strong> kể từ ngày tạm ngưng, nếu không thanh toán, dịch vụ sẽ bị <strong>xoá vĩnh viễn</strong> và dữ liệu không thể khôi phục.', 'Quan trọng:')
|
|
. T::button('{{login_url}}', 'THANH TOÁN NGAY')
|
|
. T::supportLine(),
|
|
],
|
|
[
|
|
'scenario' => 'service_expiry',
|
|
'name' => 'Dịch vụ sắp hết hạn',
|
|
'subject' => 'Thông báo dịch vụ {{product_name}} sắp hết hạn',
|
|
'body' => T::title('Dịch vụ sắp hết hạn')
|
|
. T::greeting('Quý khách')
|
|
. T::paragraph('<strong>{{company_name}}</strong> xin thông báo dịch vụ của Quý khách sắp hết hạn sử dụng:')
|
|
. T::infoTable([
|
|
'Dịch vụ' => '{{product_name}}',
|
|
'Ngày hết hạn' => '<span style="color: #dc2626;">{{service_due_exp}}</span>',
|
|
'Thời hạn' => 'Còn {{service_remaining}} ngày',
|
|
])
|
|
. T::paragraph('Vui lòng gia hạn trước ngày hết hạn để dịch vụ không bị gián đoạn.')
|
|
. T::button('{{login_url}}', 'GIA HẠN NGAY')
|
|
. T::supportLine(),
|
|
],
|
|
[
|
|
'scenario' => 'service_renewal_reminder',
|
|
'name' => 'Nhắc gia hạn dịch vụ',
|
|
'subject' => 'Nhắc gia hạn dịch vụ {{product_name}}',
|
|
'body' => T::title('Nhắc gia hạn dịch vụ')
|
|
. T::greeting('{{client_name}}')
|
|
. T::paragraph('Dịch vụ <strong>{{product_name}}</strong>{{server_name_suffix}} của Quý khách sắp đến hạn thanh toán. Vui lòng gia hạn sớm để tránh gián đoạn dịch vụ.')
|
|
. T::infoTable([
|
|
'Dịch vụ' => '{{product_name}}',
|
|
'Ngày hết hạn' => '<span style="color: #dc2626;">{{expires_at}}</span>',
|
|
], '{{price_row}}')
|
|
. T::button('{{login_url}}', 'GIA HẠN NGAY')
|
|
. T::supportLine(),
|
|
],
|
|
[
|
|
'scenario' => 'service_renewed',
|
|
'name' => 'Dịch vụ đã được gia hạn',
|
|
'subject' => 'Dịch vụ {{product_name}} đã được gia hạn',
|
|
'body' => T::title('Gia hạn dịch vụ thành công')
|
|
. T::greeting('{{client_name}}')
|
|
. T::paragraph('Dịch vụ <strong>{{product_name}}</strong>{{server_name_suffix}} của Quý khách vừa được gia hạn thêm <strong>{{months_label}}</strong>.')
|
|
. T::infoTable([
|
|
'Dịch vụ' => '{{product_name}}',
|
|
'Hạn sử dụng trước' => '{{old_expires_at}}',
|
|
'Hạn sử dụng mới' => '<span style="color: #16a34a;">{{expires_at}}</span>',
|
|
'Hoá đơn' => '{{invoice_number}}',
|
|
], '{{price_row}}')
|
|
. T::button('{{login_url}}', 'XEM DỊCH VỤ')
|
|
. T::supportLine(),
|
|
],
|
|
[
|
|
'scenario' => 'auto_renew_failed',
|
|
'name' => 'Tự động gia hạn thất bại (thiếu số dư)',
|
|
'subject' => 'Chưa thể tự động gia hạn dịch vụ {{product_name}}',
|
|
'body' => T::title('Tự động gia hạn chưa thành công')
|
|
. T::greeting('{{client_name}}')
|
|
. T::paragraph('Dịch vụ <strong>{{product_name}}</strong>{{server_name_suffix}} đã bật tự động gia hạn nhưng số dư tài khoản hiện chưa đủ để thanh toán hoá đơn gia hạn.')
|
|
. T::infoTable([
|
|
'Hoá đơn' => '{{invoice_number}}',
|
|
'Ngày hết hạn' => '<span style="color: #dc2626;">{{expires_at}}</span>',
|
|
'Cần thanh toán' => '{{outstanding}} VNĐ',
|
|
'Số dư hiện có' => '{{balance_formatted}} VNĐ',
|
|
])
|
|
. T::paragraph('Quý khách vui lòng nạp thêm tiền, hệ thống sẽ tự trừ ở lần kiểm tra kế tiếp. Nếu không, dịch vụ có thể bị tạm ngưng khi quá hạn.')
|
|
. T::button('{{topup_url}}', 'NẠP TIỀN NGAY')
|
|
. T::supportLine(),
|
|
],
|
|
[
|
|
'scenario' => 'vm_creation_failed',
|
|
'name' => 'Khởi tạo VPS thất bại',
|
|
'subject' => 'Thông báo: Không thể khởi tạo máy chủ ảo - Đơn hàng #{{order_num}}',
|
|
'body' => T::title('Thông báo về đơn hàng #{{order_num}}')
|
|
. T::subtitle('Đội ngũ kỹ thuật đang xử lý yêu cầu của Quý khách')
|
|
. T::greeting('{{full_name}}')
|
|
. T::paragraph('Hệ thống chưa khởi tạo được dịch vụ cho đơn hàng của Quý khách. Đội ngũ kỹ thuật của <strong>{{app_name}}</strong> đã được thông báo và đang hỗ trợ nhanh nhất có thể.')
|
|
. T::infoTable([
|
|
'Mã đơn hàng' => '#{{order_num}}',
|
|
'Sản phẩm' => '{{product_name}}',
|
|
])
|
|
. T::paragraph('Quý khách không cần thực hiện thêm thao tác nào. Chúng tôi sẽ liên hệ lại khi dịch vụ được kích hoạt thành công.')
|
|
. T::button('{{invoice_url}}', 'XEM ĐƠN HÀNG')
|
|
. T::supportLine(),
|
|
],
|
|
[
|
|
'scenario' => 'vm_rebuild_failed',
|
|
'name' => 'Rebuild VPS thất bại',
|
|
'subject' => 'Thông báo: Cài lại hệ điều hành thất bại - {{vm_name}}',
|
|
'body' => T::title('Cài lại hệ điều hành chưa thành công')
|
|
. T::subtitle('Đội ngũ kỹ thuật đang xử lý yêu cầu của Quý khách')
|
|
. T::greeting('{{full_name}}')
|
|
. T::paragraph('Rất tiếc, yêu cầu cài lại hệ điều hành (rebuild) cho VPS của Quý khách chưa thực hiện thành công. Đội ngũ kỹ thuật của <strong>{{app_name}}</strong> đã được thông báo để kiểm tra và xử lý.')
|
|
. T::infoTable([
|
|
'Tên VPS' => '{{vm_name}}',
|
|
'IP' => '{{ip}}',
|
|
])
|
|
. T::paragraph('VPS của Quý khách <strong>vẫn hoạt động bình thường</strong> trên cấu hình cũ, không có dữ liệu nào bị ảnh hưởng.')
|
|
. T::button('{{service_url}}', 'XEM DỊCH VỤ')
|
|
. T::supportLine(),
|
|
],
|
|
[
|
|
'scenario' => 'vm_password_changed',
|
|
'name' => 'Đổi mật khẩu VPS',
|
|
'subject' => 'Mật khẩu VPS của bạn đã được thay đổi — {{app_name}}',
|
|
'body' => T::title('Mật khẩu VPS đã được thay đổi')
|
|
. T::greeting('{{full_name}}')
|
|
. T::paragraph('Mật khẩu đăng nhập máy chủ ảo của Quý khách tại <strong>{{app_name}}</strong> đã được thay đổi thành công.')
|
|
. T::infoTable(['Máy chủ' => '{{vm_name}}'], '{{new_password_row}}' . T::row('Trạng thái', '<span style="color: #16a34a;">Đổi mật khẩu thành công</span>'))
|
|
. T::button('{{login_url}}', 'QUẢN LÝ DỊCH VỤ')
|
|
. T::note('Nếu Quý khách không thực hiện thao tác này, vui lòng liên hệ ngay <strong>support@tgs.com.vn</strong> hoặc <strong>(028) 7309. 7379</strong>.'),
|
|
],
|
|
[
|
|
'scenario' => 'snapshot_action',
|
|
'name' => 'Thao tác Snapshot VPS',
|
|
'subject' => '{{action_title}} — {{app_name}}',
|
|
'body' => T::title('{{action_icon}} {{action_title}}')
|
|
. T::subtitle('{{action_desc}}')
|
|
. T::greeting('{{full_name}}')
|
|
. T::paragraph('Thao tác snapshot máy chủ ảo của Quý khách tại <strong>{{app_name}}</strong> đã hoàn tất.')
|
|
. T::infoTable([
|
|
'Máy chủ' => '{{vm_name}}',
|
|
'Snapshot' => '{{snapshot_name}}',
|
|
'Thời gian' => '{{action_at}}',
|
|
'Trạng thái' => '<span style="color: #16a34a;">{{action_status}}</span>',
|
|
])
|
|
. T::button('{{login_url}}', 'QUẢN LÝ DỊCH VỤ')
|
|
. T::supportLine(),
|
|
],
|
|
];
|
|
}
|
|
}
|