use tera::{Error, Tera};
use crate::mailer::OptionalFields;
pub fn message_template(
form_name: &str,
form_subject: &str,
form_message: &str,
mail_subject: &str,
form_optional: &OptionalFields,
template_name: &str,
) -> Result<String, Error> {
let mut tera = Tera::default();
tera.add_raw_templates(vec![
("default.html", include_str!("templates/default.html")),
("welcome.html", include_str!("templates/welcome.html")),
("welcome.txt", include_str!("templates/welcome.txt")),
])?;
let mut ctx = tera::Context::new();
if let Some(last_name) = form_optional.last_name {
ctx.insert("name", &format!("{form_name} {last_name}"));
} else {
ctx.insert("name", form_name);
}
ctx.insert("subject", form_subject);
ctx.insert("message", form_message);
ctx.insert("message_subject", mail_subject);
if let Some(cta_link) = form_optional.cta_link {
ctx.insert("cta_link", cta_link);
}
if let Some(logo_img) = form_optional.logo_img {
ctx.insert("logo_img", logo_img);
}
if let Some(message_summary) = form_optional.message_summary {
ctx.insert("message_summary", message_summary);
}
if let Some(company_name) = form_optional.company_name {
ctx.insert("company_name", company_name);
}
if let Some(phone_number) = form_optional.phone_number {
ctx.insert("phone_number", phone_number);
}
if let Some(ordered_items) = form_optional.ordered_items {
ctx.insert("ordered_items", ordered_items.get_line_items().as_slice());
}
tera.render(template_name, &ctx)
}