const nodemailer = require('nodemailer');
const fs = require('fs');

/* =========================
   SMTP Transport
   ========================= */
const transporter = nodemailer.createTransport({
    host: process.env.MAIL_HOST,     // smtp.ionos.de
    port: Number(process.env.MAIL_PORT), // 587
    secure: false,                   // ❗ MUSS false sein bei 587
    requireTLS: true,                // ✅ IONOS braucht das
    auth: {
        user: process.env.MAIL_USER,
        pass: process.env.MAIL_PASS
    },
    tls: {
        rejectUnauthorized: false    // ✅ verhindert TLS-Abbruch
    }
});

console.log('MAIL_HOST:', process.env.MAIL_HOST);
console.log('MAIL_PORT:', process.env.MAIL_PORT);

/* =========================
   Mail senden
   ========================= */
module.exports = async function sendContractMail(data) {
    try {
        if (!data || !data.email) {
            console.warn('⚠️ Vertragsmail nicht gesendet – keine E-Mail-Adresse');
            return false;
        }

        if (!data.vertragsnummer) {
            console.warn('⚠️ Vertragsmail nicht gesendet – keine Vertragsnummer');
            return false;
        }

        const pdfPath = data.pdfPath || null;
        const hasPdf = pdfPath && fs.existsSync(pdfPath);

        const datum = data.datum
            ? new Date(data.datum).toLocaleDateString('de-DE')
            : new Date().toLocaleDateString('de-DE');

        const vertragName = data.vertragName || 'Mitgliedsvertrag';
        const betragText =
            typeof data.betrag === 'number'
                ? `${data.betrag.toFixed(2)} € / Monat`
                : '—';

        await transporter.sendMail({
            from: `"Plusfit Verträge" <${process.env.MAIL_USER}>`,
            to: data.email,
            subject: 'Dein Mitgliedsvertrag bei Plusfit',
            text: `
Hallo ${data.vorname || ''},

vielen Dank für deine Anmeldung bei Plusfit.

Dein Vertrag wurde am ${datum} online abgeschlossen.
Gemäß § 126a BGB ist keine handschriftliche Unterschrift erforderlich.

----------------------------------
Vertragsdetails
----------------------------------
Vertragsnummer: ${data.vertragsnummer}
Vertragsart: ${vertragName}
Beitrag: ${betragText}

${hasPdf ? 'Im Anhang findest du deinen Vertrag als PDF.' : 'Der Vertrag ist in deinem Kundenbereich einsehbar.'}

----------------------------------
Widerrufsbelehrung
----------------------------------
Du hast das Recht, diesen Vertrag binnen 14 Tagen ohne Angabe von Gründen zu widerrufen.
Die Frist beginnt mit dem Tag des Vertragsabschlusses.

Der Widerruf kann schriftlich oder per E-Mail erfolgen.

Mit freundlichen Grüßen
Dein Plusfit-Team
            `.trim(),

            attachments: hasPdf
                ? [
                      {
                          filename: `Vertrag_${data.vertragsnummer}.pdf`,
                          path: pdfPath
                      }
                  ]
                : []
        });

        console.log(`📧 Vertragsmail gesendet an ${data.email}`);
        return true;

    } catch (err) {
        console.error('❌ Fehler beim Versand der Vertragsmail:', err);
        return false;
    }
};
