// /opt/erp-system/lib/email.ts
import nodemailer from 'nodemailer';
import prisma from './prisma';

interface EmailOptions {
  to: string;
  subject: string;
  text: string;
  html?: string;
}

export async function sendEmail({ to, subject, text, html }: EmailOptions) {
  try {
    // 1. Aktuelle Einstellungen aus der Datenbank laden
    const settings = await prisma.systemSettings.findFirst({ where: { id: 1 } });

    // 2. Prüfen, ob SMTP konfiguriert ist
    if (!settings || !settings.smtpHost || !settings.smtpUser || !settings.smtpPass) {
      console.warn("WARNUNG: SMTP-Einstellungen fehlen in der GUI. E-Mail an", to, "wird abgebrochen.");
      return;
    }

    // 3. Transporter dynamisch mit den DB-Daten erstellen
    const transporter = nodemailer.createTransport({
      host: settings.smtpHost,
      port: settings.smtpPort,
      secure: settings.smtpPort === 465, // true für Port 465, sonst false (STARTTLS)
      auth: {
        user: settings.smtpUser,
        pass: settings.smtpPass,
      },
    });

    // 4. E-Mail senden
    const info = await transporter.sendMail({
      from: settings.smtpFrom || settings.smtpUser,
      to,
      subject,
      text,
      html: html || text.replace(/\n/g, '<br>'),
    });

    console.log("E-Mail erfolgreich gesendet: %s", info.messageId);
  } catch (error) {
    console.error("Fehler beim Senden der E-Mail:", error);
  }
}
