Plantillas
Visión general
Crono genera contenido dinámico (cuerpos de correo, mensajes de WhatsApp y otros fragmentos de texto) con un motor de plantillas basado en la sintaxis Liquid. Las plantillas trabajan con modelos arbitrarios e incluyen soporte de localización, y pueden extenderse con filtros o etiquetas personalizadas.
El motor se expone mediante IPlantillaMotor (Crono.Plantillas), con su implementación Liquid LiquidPlantillaMotor (Crono.Nucleo.Plataforma.Plantillas.Liquid).
Renderizar plantillas
Inyecta IPlantillaMotor para renderizar una plantilla a partir de su fuente y un modelo:
public class ConstructorCorreoPrestamo
{
private readonly IPlantillaMotor _plantillas;
public ConstructorCorreoPrestamo(IPlantillaMotor plantillas)
{
_plantillas = plantillas;
}
public Task<string> ConstruirAsync(Prestamo prestamo)
{
var fuente = "Hola {{ Cliente.Nombre }}, tu préstamo {{ Prestamo.Codigo }} tiene un saldo de {{ Prestamo.Saldo }}.";
var modelo = new { Prestamo = prestamo, Cliente = prestamo.Cliente };
return _plantillas.RenderizarAsync(fuente, modelo);
}
}
El motor también ofrece:
Compilar(fuente)— compila una plantilla a unIPlantillareutilizable.CrearModeloPruebaPara(entidad, prefijo)— genera un modelo con valores de ejemplo para previsualizar una plantilla sin datos reales de producción.
Plantillas de comunicación
Sobre este motor, el módulo de Comunicaciones administra las plantillas de mensajes (por ejemplo, los mensajes de WhatsApp). El ComunicacionRenderizador renderiza cada plantilla con los tokens de la entidad correspondiente y valida que no haya tokens desconocidos, ofreciendo además una previsualización en vivo con datos de prueba.
Plantillas de documentos
De forma análoga, los documentos de préstamo (contratos, cronogramas, constancias, etc.) se generan a partir de plantillas con variables que se resuelven contra los datos del préstamo, y luego se exportan a PDF o imagen.