import nodemailer from "nodemailer";
import { db } from "@/db";
import { emailSettings } from "@/db/schema";
import { decryptSensitiveValue } from "@/lib/card-security";

export async function getEmailConfiguration() {
  const [stored] = await db.select().from(emailSettings).limit(1);
  if (stored?.enabled) return { host: stored.smtpHost, port: stored.smtpPort, user: stored.smtpUser, password: decryptSensitiveValue(stored.smtpPasswordEncrypted), from: stored.smtpFrom, adminEmail: stored.adminEmail, secure: stored.secure, source: "portal" as const };
  const { SMTP_HOST, SMTP_PORT, SMTP_USER, SMTP_PASSWORD, SMTP_FROM, ADMIN_EMAIL } = process.env;
  if (SMTP_HOST && SMTP_PORT && SMTP_USER && SMTP_PASSWORD) return { host: SMTP_HOST, port: Number(SMTP_PORT), user: SMTP_USER, password: SMTP_PASSWORD, from: SMTP_FROM ?? SMTP_USER, adminEmail: ADMIN_EMAIL, secure: Number(SMTP_PORT) === 465, source: "environment" as const };
  return null;
}
export async function getEmailTransport() { const config=await getEmailConfiguration(); if(!config)return null; return { config, transport:nodemailer.createTransport({host:config.host,port:config.port,secure:config.secure,auth:{user:config.user,pass:config.password}}) }; }
