import 'dotenv/config';
import { connect, connection } from 'mongoose';
import { SubscriptionPlanSchema } from '../../schema/subscription.schema';

const SubscriptionPlanModel = connection.model(
  'SubscriptionPlan',
  SubscriptionPlanSchema,
);

export const plans = [
  {
    name: 'Weekly',
    duration: 7,
    price: 11.99,
    productId: 'invoice.g2g.weekly',
    cashbackPercent: 60,
    invoiceRewardLimit: 25,
    minInvoiceAmount: 30,
    withdrawThreshold: 20,
  },
  {
    name: 'Monthly',
    duration: 30,
    price: 29.99,
    productId: 'invoice.g2g.month',
    cashbackPercent: 60,
    invoiceRewardLimit: 60,
    minInvoiceAmount: 30,
    withdrawThreshold: 20,
  },
  {
    name: 'Yearly',
    duration: 365,
    price: 249.99,
    productId: 'invoice.g2g.yearly',
    cashbackPercent: 60,
    invoiceRewardLimit: 400,
    minInvoiceAmount: 30,
    withdrawThreshold: 20,
  },
];

async function seedSubscriptions() {
  try {
    console.log('🌱 Seeding subscription plans...');
    await connect(process.env.MONGO_URI as string);

    for (const plan of plans) {
      await SubscriptionPlanModel.updateOne(
        { productId: plan.productId },
        {
          $set: {
            name: plan.name,
            duration: plan.duration,
            price: plan.price,
            productId: plan.productId,

            //  reward fields
            cashbackPercent: plan.cashbackPercent,
            invoiceRewardLimit: plan.invoiceRewardLimit,
            minInvoiceAmount: plan.minInvoiceAmount,
            withdrawThreshold: plan.withdrawThreshold,

            isActive: true,
          },
        },
        { upsert: true },
      );

      console.log(`✅ Seeded: ${plan.name}`);
    }

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

seedSubscriptions();