'use strict'; module.exports = { async up(queryInterface, Sequelize) { await queryInterface.createTable('email_templates', { email_template_id: { type: Sequelize.BIGINT, primaryKey: true, autoIncrement: true }, type: { type: Sequelize.STRING(100), allowNull: false, unique: true }, label: { type: Sequelize.STRING(150), allowNull: false }, subject: { type: Sequelize.STRING(255), allowNull: false }, html_body: { type: Sequelize.TEXT, allowNull: false }, is_system: { type: Sequelize.BOOLEAN, allowNull: false, defaultValue: false }, createdAt: { type: Sequelize.DATE, allowNull: false }, updatedAt: { type: Sequelize.DATE, allowNull: false }, }); const FONT = 'font-family: Arial, sans-serif; font-size: 14px; color: #000;'; const now = new Date(); // Seed the 8 built-in types that services/email.service.js's sendEmail() // looks up by name — these are marked is_system so they can't be // deleted/renamed from the admin CRUD. Body content only (no / // wrapper) — the header/footer layout stays fixed in code, not admin-editable. await queryInterface.bulkInsert('email_templates', [ { type: 'OTP', label: 'OTP Verification', is_system: true, subject: 'Email OTP Verification - STARR System', html_body: `

Dear User,

Please use the One-Time Password (OTP) below to verify your email address. This code is valid for {{expiryMinutes}} minutes.

{{otp}}

For security reasons, please do not share this code with anyone. If you did not request this, please contact the administrator.

`, createdAt: now, updatedAt: now, }, { type: 'WELCOME', label: 'Welcome Email', is_system: true, subject: 'Welcome to STARR System', html_body: `

Dear {{name}},

We are pleased to welcome you to the STARR System. Your account has been successfully created and is now ready for use.

You may now access your dashboard and begin using the available services.

We look forward to supporting you.

`, createdAt: now, updatedAt: now, }, { type: 'PASSWORD_CHANGED', label: 'Password Changed', is_system: true, subject: 'Password Update Confirmation - STARR System', html_body: `

Dear User,

This is to confirm that your account password has been successfully changed.

If you did not perform this action, please reset your password immediately or contact support.

For your security, we recommend using a strong and unique password.

`, createdAt: now, updatedAt: now, }, { type: 'ADDED_TO_GROUP', label: 'Added to Group', is_system: true, subject: 'Group Assignment Notification - STARR System', html_body: `

Dear User,

You have been assigned to the group {{groupName}} in the STARR System.

This assignment grants you access to shared resources and collaboration tools within the group.

Please log in to your account to view group details.

`, createdAt: now, updatedAt: now, }, { type: 'TASK_ASSIGNED', label: 'Task Assigned', is_system: true, subject: 'New Task Assignment - STARR System', html_body: `

Dear User,

You have been assigned a new task in the STARR System.

Task{{taskTitle}}
Due Date{{dueDate}}

Kindly ensure completion within the specified timeframe.

`, createdAt: now, updatedAt: now, }, { type: 'BAN_LIFTED', label: 'Ban Lifted', is_system: true, subject: 'Account Suspension Lifted - STARR System', html_body: `

Dear {{name}},

We are writing to inform you that the suspension on your account ({{email}}) has been lifted effective {{date}}.

You may now log in and resume access to all services within the STARR System.

If you have any concerns, please do not hesitate to contact your administrator.

`, createdAt: now, updatedAt: now, }, { type: 'BANNED', label: 'Account Banned', is_system: true, subject: 'Account Suspension Notice - STARR System', html_body: `

Dear {{name}},

Your account ({{email}}) has been {{duration_word}} suspended from the STARR System effective {{date}}.

Reason{{reason}}
Duration{{duration_label}}

During this period, access to all system services has been revoked.{{suspension_note}}

If you believe this was made in error, please contact your administrator.

`, createdAt: now, updatedAt: now, }, { type: 'ADD_STAFF', label: 'Staff Account Created', is_system: true, subject: 'Your Staff Account Has Been Created - STARR System', html_body: `

Dear {{name}},

Your staff account has been successfully created in the STARR System. Below are your login credentials:

Email{{email}}
Password{{password}}

This temporary password is valid for {{expiryHours}} hours. You will be required to change it upon first login.

If you did not request this account or believe this was created in error, please contact your administrator immediately to have it deactivated.

For security, please do not share your credentials with anyone. If you need a new password, contact your administrator.

`, createdAt: now, updatedAt: now, }, ]); }, async down(queryInterface) { await queryInterface.dropTable('email_templates'); }, };