// Türkçe işlemsel e-posta şablonları. Sade, tablo tabanlı HTML (e-posta istemcileri uyumu).
const esc = (s: string) => s.replace(/[&<>"]/g, (c) => ({ '&': '&amp;', '<': '&lt;', '>': '&gt;', '"': '&quot;' }[c]!));

// Başlık logosu: e-posta programları SVG göstermez, PNG kullanılır; görseller kapalıysa alt metin okunur
const brand = () => process.env.APP_URL
  ? `<img src="${process.env.APP_URL}/brand/logo-email.png" width="193" height="38" alt="parselstüdyo" style="display:block;border:0;height:38px;width:193px">`
  : '<span style="font-family:Helvetica,Arial,sans-serif;font-size:22px;letter-spacing:-.5px;color:#111311"><b>parsel</b><span style="color:#8a8d8a">stüdyo</span></span>';

function layout(title: string, body: string, cta?: { href: string; label: string }, foot?: string) {
  return `<!doctype html><html lang="tr"><body style="margin:0;background:#F3EFE6;font-family:Helvetica,Arial,sans-serif;color:#151412">
<table role="presentation" width="100%" cellpadding="0" cellspacing="0" style="background:#F3EFE6;padding:32px 12px"><tr><td align="center">
<table role="presentation" width="560" cellpadding="0" cellspacing="0" style="max-width:560px;background:#ffffff;border:1px solid #e3ddcf">
<tr><td style="padding:20px 32px;border-bottom:1px solid #eee7d9">${brand()}</td></tr>
<tr><td style="padding:32px 32px 8px"><h1 style="margin:0 0 16px;font-family:Georgia,serif;font-weight:normal;font-size:28px;line-height:1.15">${title}</h1>
<div style="font-size:15px;line-height:1.6;color:#3d3a34">${body}</div></td></tr>
${cta ? `<tr><td style="padding:16px 32px 8px"><a href="${cta.href}" style="display:inline-block;background:#D2401E;color:#ffffff;text-decoration:none;font-weight:bold;font-size:15px;padding:13px 22px">${cta.label}</a>
<p style="font-size:12px;color:#7a756b;line-height:1.5;margin:14px 0 0">Düğme çalışmazsa bu adresi tarayıcınıza yapıştırın:<br><span style="word-break:break-all;color:#151412">${cta.href}</span></p></td></tr>` : ''}
<tr><td style="padding:24px 32px 28px;font-size:12px;color:#7a756b;line-height:1.5;border-top:1px solid #eee7d9">${foot || 'Bu e-postayı ParselStüdyo hesabınızla ilgili bir işlem yapıldığı için aldınız.'}</td></tr>
</table></td></tr></table></body></html>`;
}

export function verifyEmail(name: string, url: string) {
  return {
    subject: 'E-posta adresinizi doğrulayın',
    html: layout(`Merhaba ${esc(name.split(' ')[0])},`,
      `<p style="margin:0 0 12px">ParselStüdyo hesabınız açıldı. Sipariş verebilmek ve teslim bildirimlerini alabilmek için e-posta adresinizi doğrulamanız gerekiyor.</p><p style="margin:0">Bağlantı 48 saat geçerlidir.</p>`,
      { href: url, label: 'Adresimi doğrula' }, 'Bu hesabı siz açmadıysanız e-postayı yok sayabilirsiniz; adresiniz doğrulanmadan hesap kullanılamaz.'),
    text: `Merhaba ${name},\n\nE-posta adresinizi doğrulamak için: ${url}\nBağlantı 48 saat geçerlidir.\n\nParselStüdyo`,
  };
}

export function resetEmail(name: string, url: string) {
  return {
    subject: 'Şifre sıfırlama bağlantınız',
    html: layout('Yeni şifre belirleyin',
      `<p style="margin:0 0 12px">${esc(name.split(' ')[0])}, hesabınız için şifre sıfırlama talebi aldık. Aşağıdaki bağlantıyla yeni şifrenizi belirleyebilirsiniz.</p><p style="margin:0">Bağlantı <b>1 saat</b> geçerlidir ve yalnızca bir kez kullanılabilir. Şifreniz değiştiğinde açık oturumlarınız kapatılır.</p>`,
      { href: url, label: 'Şifremi sıfırla' }, 'Bu talebi siz yapmadıysanız bir şey yapmanız gerekmiyor; mevcut şifreniz geçerli kalır.'),
    text: `Şifrenizi sıfırlamak için: ${url}\nBağlantı 1 saat geçerlidir.\n\nBu talebi siz yapmadıysanız e-postayı yok sayın.`,
  };
}

export function passwordChangedEmail(name: string) {
  return {
    subject: 'Şifreniz değiştirildi',
    html: layout('Şifreniz değiştirildi', `<p style="margin:0">${esc(name.split(' ')[0])}, ParselStüdyo hesabınızın şifresi az önce değiştirildi ve diğer cihazlardaki oturumlar kapatıldı. Bu işlemi siz yapmadıysanız hemen “Şifremi unuttum” ile yeni şifre belirleyin.</p>`),
    text: 'ParselStüdyo hesabınızın şifresi değiştirildi.',
  };
}
