function baseLayout(title, body) {
  return `<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><title>${title}</title></head>
<body style="font-family:system-ui,sans-serif;max-width:600px;margin:0 auto;padding:20px;color:#1a1a1a;">
  <div style="background:#f8f9fa;padding:16px;border-radius:8px;margin-bottom:16px;">
    <h2 style="margin:0;">${title}</h2>
  </div>
  ${body}
  <div style="margin-top:24px;padding-top:16px;border-top:1px solid #e0e0e0;color:#666;font-size:14px;">
    <p>Любимый Креатив — магазин handmade изделий</p>
  </div>
</body>
</html>`
}

export function renderOrderCreatedEmail({ orderId, totalCents, itemsCount, deliveryType }) {
  const total = (totalCents / 100).toLocaleString('ru-RU')
  const nextAction =
    deliveryType === 'delivery' ? 'Оплата будет доступна после уточнения стоимости доставки.' : 'Ожидает оплаты.'
  const body = `
    <p>Ваш заказ <b>#${orderId.slice(0, 8)}</b> успешно создан.</p>
    <p>Товаров: ${itemsCount} | Сумма: <b>${total} ₽</b></p>
    <p>${nextAction}</p>
  `
  return { subject: 'Заказ создан', html: baseLayout('Заказ создан', body) }
}

export function renderOrderStatusChangedEmail({ orderId, oldStatus, newStatus }) {
  const statusLabels = {
    DRAFT: 'Черновик',
    PENDING_PAYMENT: 'Ожидает оплаты',
    PAID: 'Оплачен',
    IN_PROGRESS: 'Подготовка к отправке',
    READY_FOR_PICKUP: 'Готов к выдаче',
    SHIPPED: 'Отправлен',
    DONE: 'Завершён',
    CANCELLED: 'Отменён',
  }
  const oldLabel = statusLabels[oldStatus] || oldStatus
  const newLabel = statusLabels[newStatus] || newStatus
  const body = `
    <p>Статус заказа <b>#${orderId.slice(0, 8)}</b> изменён.</p>
    <p><b>${oldLabel}</b> → <b>${newLabel}</b></p>
  `
  return {
    subject: `Статус заказа изменён — ${newLabel}`,
    html: baseLayout('Статус заказа изменён', body),
  }
}

export function renderOrderMessageEmail({ orderId, preview }) {
  const truncated = preview.length > 200 ? preview.slice(0, 197) + '...' : preview
  const body = `
    <p>Новое сообщение к заказу <b>#${orderId.slice(0, 8)}</b>:</p>
    <div style="background:#f0f0f0;padding:12px;border-radius:6px;margin:12px 0;">
      ${truncated}
    </div>
    <p>Ответьте в личном кабинете.</p>
  `
  return {
    subject: 'Новое сообщение к заказу',
    html: baseLayout('Новое сообщение', body),
  }
}

export function renderPaymentStatusChangedEmail({ orderId, paymentStatus }) {
  const statusLabels = {
    pending: 'Ожидает',
    confirmed: 'Подтверждён',
    rejected: 'Отклонён',
  }
  const label = statusLabels[paymentStatus] || paymentStatus
  const body = `
    <p>Статус оплаты заказа <b>#${orderId.slice(0, 8)}</b>: <b>${label}</b>.</p>
  `
  return {
    subject: `Оплата заказа — ${label}`,
    html: baseLayout('Оплата заказа', body),
  }
}

export function renderAdminOrderCreatedEmail({ orderId, userEmail, totalCents, itemsCount, deliveryType }) {
  const total = (totalCents / 100).toLocaleString('ru-RU')
  const note = deliveryType === 'delivery' ? '<p>⚠️ <b>Скорректируйте стоимость доставки</b> в админ-панели.</p>' : ''
  const body = `
    <p>Новый заказ <b>#${orderId.slice(0, 8)}</b> от <b>${userEmail}</b>.</p>
    <p>Товаров: ${itemsCount} | Сумма: <b>${total} ₽</b></p>
    ${note}
  `
  return { subject: 'Новый заказ', html: baseLayout('Новый заказ', body) }
}

export function renderAdminNewReviewEmail({ rating, text, productTitle, userName }) {
  const stars = '★'.repeat(rating) + '☆'.repeat(5 - rating)
  const body = `
    <p>Новый отзыв ${stars} на товар <b>${productTitle}</b> от <b>${userName}</b>.</p>
    ${text ? `<div style="background:#f0f0f0;padding:12px;border-radius:6px;margin:12px 0;">${text}</div>` : ''}
    <p>Проверьте отзыв в админ-панели.</p>
  `
  return { subject: 'Новый отзыв', html: baseLayout('Новый отзыв', body) }
}

export function renderAuthCodeEmail({ code }) {
  const body = `
    <p>Ваш код входа: <b style="font-size:24px;letter-spacing:4px;">${code}</b></p>
    <p>Если это были не вы — просто проигнорируйте письмо.</p>
  `
  return { subject: 'Код входа', html: baseLayout('Код входа', body) }
}

export function renderDeliveryFeeAdjustedEmail({ orderId, totalCents }) {
  const total = (totalCents / 100).toLocaleString('ru-RU')
  const body = `
    <p>Стоимость доставки заказа <b>#${orderId.slice(0, 8)}</b> скорректирована.</p>
    <p>Новая сумма: <b>${total} ₽</b></p>
    <p>Ожидает оплаты. Проверьте статус заказа в личном кабинете.</p>
  `
  return {
    subject: 'Стоимость доставки скорректирована',
    html: baseLayout('Стоимость доставки скорректирована', body),
  }
}
