// src/lib/email/newsletter-templates.ts

/**
 * Newsletter E-Mail-Templates
 *
 * Tenant-spezifische E-Mail-Templates für Double Opt-In
 */

export interface NewsletterTemplateData {
  firstName?: string
  email: string
  confirmationUrl: string
  unsubscribeUrl: string
  tenantName: string
  tenantWebsite?: string
  privacyPolicyUrl?: string
}

/**
 * Double Opt-In Bestätigungs-E-Mail (HTML)
 */
export function getConfirmationEmailHtml(data: NewsletterTemplateData): string {
  const greeting = data.firstName ? `Hallo ${data.firstName}` : 'Hallo'

  return `
<!DOCTYPE html>
<html lang="de">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Newsletter-Anmeldung bestätigen</title>
  <style>
    body {
      font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
      line-height: 1.6;
      color: #333333;
      margin: 0;
      padding: 0;
      background-color: #f5f5f5;
    }
    .container {
      max-width: 600px;
      margin: 0 auto;
      padding: 20px;
    }
    .email-wrapper {
      background-color: #ffffff;
      border-radius: 8px;
      overflow: hidden;
      box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
    }
    .header {
      background-color: #1a1a2e;
      color: #ffffff;
      padding: 30px 40px;
      text-align: center;
    }
    .header h1 {
      margin: 0;
      font-size: 24px;
      font-weight: 600;
    }
    .content {
      padding: 40px;
    }
    .greeting {
      font-size: 18px;
      margin-bottom: 20px;
    }
    .message {
      margin-bottom: 30px;
    }
    .button-container {
      text-align: center;
      margin: 30px 0;
    }
    .confirm-button {
      display: inline-block;
      background-color: #4CAF50;
      color: #ffffff !important;
      text-decoration: none;
      padding: 14px 40px;
      border-radius: 6px;
      font-size: 16px;
      font-weight: 600;
    }
    .confirm-button:hover {
      background-color: #45a049;
    }
    .link-fallback {
      margin-top: 20px;
      padding: 15px;
      background-color: #f9f9f9;
      border-radius: 4px;
      font-size: 12px;
      word-break: break-all;
    }
    .link-fallback a {
      color: #666666;
    }
    .notice {
      margin-top: 30px;
      padding: 15px;
      background-color: #fff3cd;
      border-radius: 4px;
      font-size: 14px;
      color: #856404;
    }
    .footer {
      padding: 30px 40px;
      background-color: #f9f9f9;
      text-align: center;
      font-size: 12px;
      color: #666666;
    }
    .footer a {
      color: #666666;
    }
    .divider {
      height: 1px;
      background-color: #eeeeee;
      margin: 20px 0;
    }
  </style>
</head>
<body>
  <div class="container">
    <div class="email-wrapper">
      <div class="header">
        <h1>${data.tenantName}</h1>
      </div>
      <div class="content">
        <p class="greeting">${greeting},</p>
        <div class="message">
          <p>vielen Dank für Ihr Interesse an unserem Newsletter!</p>
          <p>Um Ihre Anmeldung abzuschließen und die DSGVO-Anforderungen zu erfüllen, bitten wir Sie, Ihre E-Mail-Adresse zu bestätigen.</p>
        </div>

        <div class="button-container">
          <a href="${data.confirmationUrl}" class="confirm-button">Anmeldung bestätigen</a>
        </div>

        <div class="link-fallback">
          Falls der Button nicht funktioniert, kopieren Sie diesen Link in Ihren Browser:<br>
          <a href="${data.confirmationUrl}">${data.confirmationUrl}</a>
        </div>

        <div class="notice">
          <strong>Hinweis:</strong> Dieser Bestätigungs-Link ist 48 Stunden gültig. Falls Sie diese Anmeldung nicht selbst vorgenommen haben, können Sie diese E-Mail ignorieren.
        </div>
      </div>
      <div class="footer">
        <p>&copy; ${new Date().getFullYear()} ${data.tenantName}</p>
        ${data.tenantWebsite ? `<p><a href="${data.tenantWebsite}">${data.tenantWebsite}</a></p>` : ''}
        <div class="divider"></div>
        <p>
          Sie erhalten diese E-Mail, weil sich jemand mit der Adresse ${data.email} für unseren Newsletter angemeldet hat.
        </p>
        ${data.privacyPolicyUrl ? `<p><a href="${data.privacyPolicyUrl}">Datenschutzerklärung</a></p>` : ''}
      </div>
    </div>
  </div>
</body>
</html>
  `.trim()
}

/**
 * Double Opt-In Bestätigungs-E-Mail (Plain Text)
 */
export function getConfirmationEmailText(data: NewsletterTemplateData): string {
  const greeting = data.firstName ? `Hallo ${data.firstName}` : 'Hallo'

  return `
${data.tenantName} - Newsletter-Anmeldung bestätigen

${greeting},

vielen Dank für Ihr Interesse an unserem Newsletter!

Um Ihre Anmeldung abzuschließen und die DSGVO-Anforderungen zu erfüllen, bitten wir Sie, Ihre E-Mail-Adresse zu bestätigen.

Klicken Sie auf folgenden Link, um Ihre Anmeldung zu bestätigen:
${data.confirmationUrl}

Hinweis: Dieser Bestätigungs-Link ist 48 Stunden gültig. Falls Sie diese Anmeldung nicht selbst vorgenommen haben, können Sie diese E-Mail ignorieren.

---

© ${new Date().getFullYear()} ${data.tenantName}
${data.tenantWebsite || ''}

Sie erhalten diese E-Mail, weil sich jemand mit der Adresse ${data.email} für unseren Newsletter angemeldet hat.
${data.privacyPolicyUrl ? `\nDatenschutzerklärung: ${data.privacyPolicyUrl}` : ''}
  `.trim()
}

/**
 * Willkommens-E-Mail nach erfolgreicher Bestätigung (HTML)
 */
export function getWelcomeEmailHtml(data: NewsletterTemplateData): string {
  const greeting = data.firstName ? `Hallo ${data.firstName}` : 'Hallo'

  return `
<!DOCTYPE html>
<html lang="de">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Willkommen beim Newsletter</title>
  <style>
    body {
      font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
      line-height: 1.6;
      color: #333333;
      margin: 0;
      padding: 0;
      background-color: #f5f5f5;
    }
    .container {
      max-width: 600px;
      margin: 0 auto;
      padding: 20px;
    }
    .email-wrapper {
      background-color: #ffffff;
      border-radius: 8px;
      overflow: hidden;
      box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
    }
    .header {
      background-color: #1a1a2e;
      color: #ffffff;
      padding: 30px 40px;
      text-align: center;
    }
    .header h1 {
      margin: 0;
      font-size: 24px;
      font-weight: 600;
    }
    .content {
      padding: 40px;
    }
    .greeting {
      font-size: 18px;
      margin-bottom: 20px;
    }
    .checkmark {
      text-align: center;
      font-size: 48px;
      margin-bottom: 20px;
    }
    .success-message {
      text-align: center;
      font-size: 20px;
      color: #4CAF50;
      font-weight: 600;
      margin-bottom: 30px;
    }
    .message {
      margin-bottom: 30px;
    }
    .footer {
      padding: 30px 40px;
      background-color: #f9f9f9;
      text-align: center;
      font-size: 12px;
      color: #666666;
    }
    .footer a {
      color: #666666;
    }
    .unsubscribe {
      margin-top: 20px;
    }
  </style>
</head>
<body>
  <div class="container">
    <div class="email-wrapper">
      <div class="header">
        <h1>${data.tenantName}</h1>
      </div>
      <div class="content">
        <div class="checkmark">✓</div>
        <div class="success-message">Anmeldung erfolgreich!</div>

        <p class="greeting">${greeting},</p>
        <div class="message">
          <p>Ihre Newsletter-Anmeldung wurde erfolgreich bestätigt.</p>
          <p>Ab sofort erhalten Sie regelmäßig interessante Neuigkeiten und Updates von uns.</p>
          <p>Wir freuen uns, Sie als Abonnent begrüßen zu dürfen!</p>
        </div>
      </div>
      <div class="footer">
        <p>&copy; ${new Date().getFullYear()} ${data.tenantName}</p>
        ${data.tenantWebsite ? `<p><a href="${data.tenantWebsite}">${data.tenantWebsite}</a></p>` : ''}
        <div class="unsubscribe">
          <p>Sie möchten keine E-Mails mehr erhalten?<br>
          <a href="${data.unsubscribeUrl}">Newsletter abbestellen</a></p>
        </div>
        ${data.privacyPolicyUrl ? `<p><a href="${data.privacyPolicyUrl}">Datenschutzerklärung</a></p>` : ''}
      </div>
    </div>
  </div>
</body>
</html>
  `.trim()
}

/**
 * Willkommens-E-Mail nach erfolgreicher Bestätigung (Plain Text)
 */
export function getWelcomeEmailText(data: NewsletterTemplateData): string {
  const greeting = data.firstName ? `Hallo ${data.firstName}` : 'Hallo'

  return `
${data.tenantName} - Willkommen beim Newsletter!

✓ Anmeldung erfolgreich!

${greeting},

Ihre Newsletter-Anmeldung wurde erfolgreich bestätigt.

Ab sofort erhalten Sie regelmäßig interessante Neuigkeiten und Updates von uns.

Wir freuen uns, Sie als Abonnent begrüßen zu dürfen!

---

© ${new Date().getFullYear()} ${data.tenantName}
${data.tenantWebsite || ''}

Sie möchten keine E-Mails mehr erhalten?
Newsletter abbestellen: ${data.unsubscribeUrl}
${data.privacyPolicyUrl ? `\nDatenschutzerklärung: ${data.privacyPolicyUrl}` : ''}
  `.trim()
}

/**
 * Abmelde-Bestätigungs-E-Mail (HTML)
 */
export function getUnsubscribeEmailHtml(data: Omit<NewsletterTemplateData, 'confirmationUrl'>): string {
  const greeting = data.firstName ? `Hallo ${data.firstName}` : 'Hallo'

  return `
<!DOCTYPE html>
<html lang="de">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Newsletter-Abmeldung bestätigt</title>
  <style>
    body {
      font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
      line-height: 1.6;
      color: #333333;
      margin: 0;
      padding: 0;
      background-color: #f5f5f5;
    }
    .container {
      max-width: 600px;
      margin: 0 auto;
      padding: 20px;
    }
    .email-wrapper {
      background-color: #ffffff;
      border-radius: 8px;
      overflow: hidden;
      box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
    }
    .header {
      background-color: #1a1a2e;
      color: #ffffff;
      padding: 30px 40px;
      text-align: center;
    }
    .header h1 {
      margin: 0;
      font-size: 24px;
      font-weight: 600;
    }
    .content {
      padding: 40px;
    }
    .message {
      margin-bottom: 30px;
    }
    .footer {
      padding: 30px 40px;
      background-color: #f9f9f9;
      text-align: center;
      font-size: 12px;
      color: #666666;
    }
    .footer a {
      color: #666666;
    }
  </style>
</head>
<body>
  <div class="container">
    <div class="email-wrapper">
      <div class="header">
        <h1>${data.tenantName}</h1>
      </div>
      <div class="content">
        <p class="greeting">${greeting},</p>
        <div class="message">
          <p>Sie wurden erfolgreich von unserem Newsletter abgemeldet.</p>
          <p>Sie werden in Zukunft keine weiteren Newsletter-E-Mails von uns erhalten.</p>
          <p>Falls Sie sich erneut anmelden möchten, können Sie dies jederzeit über unsere Website tun.</p>
          <p>Wir bedanken uns für Ihr bisheriges Interesse!</p>
        </div>
      </div>
      <div class="footer">
        <p>&copy; ${new Date().getFullYear()} ${data.tenantName}</p>
        ${data.tenantWebsite ? `<p><a href="${data.tenantWebsite}">${data.tenantWebsite}</a></p>` : ''}
        ${data.privacyPolicyUrl ? `<p><a href="${data.privacyPolicyUrl}">Datenschutzerklärung</a></p>` : ''}
      </div>
    </div>
  </div>
</body>
</html>
  `.trim()
}

/**
 * Abmelde-Bestätigungs-E-Mail (Plain Text)
 */
export function getUnsubscribeEmailText(data: Omit<NewsletterTemplateData, 'confirmationUrl'>): string {
  const greeting = data.firstName ? `Hallo ${data.firstName}` : 'Hallo'

  return `
${data.tenantName} - Newsletter-Abmeldung bestätigt

${greeting},

Sie wurden erfolgreich von unserem Newsletter abgemeldet.

Sie werden in Zukunft keine weiteren Newsletter-E-Mails von uns erhalten.

Falls Sie sich erneut anmelden möchten, können Sie dies jederzeit über unsere Website tun.

Wir bedanken uns für Ihr bisheriges Interesse!

---

© ${new Date().getFullYear()} ${data.tenantName}
${data.tenantWebsite || ''}
${data.privacyPolicyUrl ? `\nDatenschutzerklärung: ${data.privacyPolicyUrl}` : ''}
  `.trim()
}
