import { baseTemplate, primaryButton, infoBox, heading } from './base.js';

export interface PapeleriaAprobacionRequeridaData {
  contribuyenteRfc: string;
  contribuyenteNombre: string;
  despachoNombre?: string;
  nombreDocumento: string;
  descripcion: string | null;
  periodo: string;
  subidoPor: string;
  link: string;
}

export function papeleriaAprobacionRequeridaEmail(d: PapeleriaAprobacionRequeridaData): string {
  const body = `
    ${heading('Papelería pendiente de aprobación')}
    <p>${d.subidoPor} subió un documento de papelería de trabajo que requiere tu aprobación:</p>
    <ul>
      <li><strong>Documento:</strong> ${d.nombreDocumento}</li>
      <li><strong>Contribuyente:</strong> ${d.contribuyenteNombre} (${d.contribuyenteRfc})</li>
      <li><strong>Periodo:</strong> ${d.periodo}</li>
      ${d.descripcion ? `<li><strong>Descripción:</strong> ${d.descripcion}</li>` : ''}
    </ul>
    ${infoBox('Revisa el documento y márcalo como aprobado o rechazado desde la sección de Documentos del despacho.')}
    <div style="margin-top: 24px;">
      ${primaryButton('Ver documento', d.link)}
    </div>
  `;
  return baseTemplate(body);
}

export interface PapeleriaDecisionData {
  contribuyenteRfc: string;
  contribuyenteNombre: string;
  nombreDocumento: string;
  estado: 'aprobado' | 'rechazado';
  revisor: string;
  comentario: string | null;
  periodo: string;
  link: string;
}

export function papeleriaDecisionEmail(d: PapeleriaDecisionData): string {
  const verbo = d.estado === 'aprobado' ? 'aprobó' : 'rechazó';
  const body = `
    ${heading(`Documento ${d.estado}`)}
    <p>${d.revisor} ${verbo} el documento <strong>${d.nombreDocumento}</strong>
       del contribuyente ${d.contribuyenteNombre} (${d.contribuyenteRfc}), periodo ${d.periodo}.</p>
    ${d.estado === 'rechazado' && d.comentario
      ? infoBox(`<strong>Comentario:</strong> ${d.comentario}`)
      : ''}
    <div style="margin-top: 24px;">
      ${primaryButton('Ver documento', d.link)}
    </div>
  `;
  return baseTemplate(body);
}

export interface PapeleriaAprobacionClienteRequeridaData {
  contribuyenteRfc: string;
  contribuyenteNombre: string;
  despachoNombre?: string;
  nombreDocumento: string;
  descripcion: string | null;
  periodo: string;
  subidoPor: string;
  link: string;
}

export function papeleriaAprobacionClienteRequeridaEmail(d: PapeleriaAprobacionClienteRequeridaData): string {
  const body = `
    ${heading('Documento pendiente de tu aprobación')}
    <p>${d.subidoPor} subió un documento que requiere tu aprobación como cliente:</p>
    <ul>
      <li><strong>Documento:</strong> ${d.nombreDocumento}</li>
      <li><strong>Contribuyente:</strong> ${d.contribuyenteNombre} (${d.contribuyenteRfc})</li>
      <li><strong>Periodo:</strong> ${d.periodo}</li>
      ${d.descripcion ? `<li><strong>Descripción:</strong> ${d.descripcion}</li>` : ''}
    </ul>
    ${infoBox('Revisa el documento y márcalo como aprobado o rechazado desde la sección de Documentos del despacho.')}
    <div style="margin-top: 24px;">
      ${primaryButton('Ver documento', d.link)}
    </div>
  `;
  return baseTemplate(body);
}
