import 'dotenv/config';
import { connect, connection } from 'mongoose';
import { EmailTemplateSchema } from '../../email-templates/email-template.schema';
import { EmailTemplateKey } from '../../email/email.constants';

const EmailTemplateModel = connection.model(
  'EmailTemplate',
  EmailTemplateSchema,
);

// const templates = [
//   {
//     key: EmailTemplateKey.WELCOME,
//     provider: 'MSG91',
//     templateId: 'welcome_email_81',
//   },
//   {
//     key: EmailTemplateKey.ESTIMATE,
//     provider: 'MSG91',
//     templateId: 'estimate',
//   },
//   {
//     key: EmailTemplateKey.INVOICE,
//     provider: 'MSG91',
//     templateId: 'new_invoice',
//   },
//   {
//     key: EmailTemplateKey.EXPENSE,
//     provider: 'MSG91',
//     templateId: 'expense',
//   },
//   {
//     key: EmailTemplateKey.ESTIMATE_ACCEPTED,
//     provider: 'MSG91',
//     templateId: 'estimate_rejected',
//   },
//    {
//     key: EmailTemplateKey.ESTIMATE_ACCEPTED,
//     provider: 'MSG91',
//     templateId: 'invocie_paid_email_to_customer',
//   },

//   {
//     key: EmailTemplateKey.ESTIMATE_REJECTED,
//     provider: 'MSG91',
//     templateId: 'global_otp',
//   },
//   {
//     key: EmailTemplateKey.INVOICE_PAID,
//     provider: 'MSG91',
//     templateId: 'invoice_paid',
//   },
//   {
//     key: EmailTemplateKey.OTP,
//     provider: 'MSG91',
//     templateId: 'global_otp',
//   },
// ];


export const templates = [
  // ================= EXISTING =================
  {
    key: EmailTemplateKey.WELCOME,
    provider: 'MSG91',
    templateId: 'welcome_email_81',
  },
  {
    key: EmailTemplateKey.ESTIMATE,
    provider: 'MSG91',
    templateId: 'estimate',
  },
  {
    key: EmailTemplateKey.INVOICE,
    provider: 'MSG91',
    templateId: 'new_invoice',
  },
  {
    key: EmailTemplateKey.ESTIMATE_ACCEPTED,
    provider: 'MSG91',
    templateId: 'estimate_accepted',
  },
  {
    key: EmailTemplateKey.ESTIMATE_REJECTED,
    provider: 'MSG91',
    templateId: 'estimate_rejected',
  },
  {
    key: EmailTemplateKey.OTP,
    provider: 'MSG91',
    templateId: 'global_otp',
  },

  // ================= NEW ADDED =================
  {
    key: EmailTemplateKey.INVOICE_SENT,
    provider: 'MSG91',
    templateId: 'invoice_sent_3',
  },
  {
    key: EmailTemplateKey.INVOICE_DUE_TODAY,
    provider: 'MSG91',
    templateId: 'due_invoice',
  },
  {
    key: EmailTemplateKey.INVOICE_REMINDER,
    provider: 'MSG91',
    templateId: 'invoice_reminder_3',
  },
  {
    key: EmailTemplateKey.INVOICE_PAID_CUSTOMER,
    provider: 'MSG91',
    templateId: 'invocie_paid_email_to_customer',
  },
  {
    key: EmailTemplateKey.INVOICE_PAID_SENDER,
    provider: 'MSG91',
    templateId: 'invoice_paid_email_to_sender',
  },
  {
    key: EmailTemplateKey.SUBSCRIPTION_PURCHASED,
    provider: 'MSG91',
    templateId: 'subscription_purchased_confirmation_email',
  },
  {
    key: EmailTemplateKey.SUBSCRIPTION_CANCELLED,
    provider: 'MSG91',
    templateId: 'subscription_cancelled_2',
  },
];


async function seedEmailTemplates() {
  try {
    console.log('🌱 Seeding email templates...');

    await connect(process.env.MONGO_URI as string);

    for (const tpl of templates) {
      await EmailTemplateModel.updateOne(
        { key: tpl.key },
        {
          $set: {
            provider: tpl.provider,
            templateId: tpl.templateId,
            isActive: true,
          },
        },
        { upsert: true },
      );

      console.log(`✅ Seeded: ${tpl.key}`);
    }

    console.log('🎉 Email templates seeded successfully');
    process.exit(0);
  } catch (err) {
    console.error('❌ Email template seeding failed', err);
    process.exit(1);
  } finally {
    await connection.close();
  }
}

seedEmailTemplates();
