interface Appointment { date: Date; patient: { name: string; phone: string; }; isCrisis: boolean; payment: { status: string; } | null; } export function getDailyAgendaTemplate(appointments: Appointment[]): string { const formatDate = (date: Date) => { return date.toLocaleDateString("es-MX", { weekday: "long", year: "numeric", month: "long", day: "numeric", }); }; const formatTime = (date: Date) => { return date.toLocaleTimeString("es-MX", { hour: "2-digit", minute: "2-digit", }); }; const getPaymentStatus = (payment: { status: string } | null) => { if (!payment) return 'Pendiente'; switch (payment.status) { case "APPROVED": return 'Aprobado'; case "REJECTED": return 'Rechazado'; default: return 'Pendiente'; } }; const getCrisisBadge = (isCrisis: boolean) => { if (isCrisis) { return 'CRISIS'; } return ""; }; const tomorrow = new Date(); tomorrow.setDate(tomorrow.getDate() + 1); const pendingPayments = appointments.filter( (a) => !a.payment || a.payment.status === "PENDING" ).length; return ` Agenda Diaria

📅 Agenda del Día

${formatDate(tomorrow)}
${ appointments.length > 0 ? `

${appointments.length}

Total Citas

${pendingPayments}

Pagos Pendientes

${appointments .map( (apt) => ` ` ) .join("")}
Hora Paciente Teléfono Tipo Pago
${formatTime(apt.date)}
${apt.patient.name}${getCrisisBadge(apt.isCrisis)}
${apt.patient.phone} ${apt.isCrisis ? "Crisis" : "Regular"} ${getPaymentStatus(apt.payment)}
` : `

🎉

No hay citas programadas para mañana

` }
`; }