correlate 0.3.0

correlate is a standalone server that listens for Stripe webhook events and sends notification emails about successful orders.
use tera::{Error, Tera};

use super::generate_email::AdditionalFields;

pub fn mail_template(
    form_name: &str,
    form_subject: &str,
    form_message: &str,
    mail_subject: &str,
    form_extra: &AdditionalFields,
    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();
    ctx.insert("name", form_name);
    ctx.insert("subject", mail_subject);
    ctx.insert("message", form_message);
    ctx.insert("message_subject", form_subject);
    ctx.insert("message_summary", form_extra.message_summary);
    if let Some(cta_link) = form_extra.cta_link {
        ctx.insert("cta_link", cta_link);
    }
    if let Some(logo_img) = form_extra.logo_img {
        ctx.insert("logo_img", logo_img);
    }
    if let Some(ordered_items) = form_extra.ordered_items {
        ctx.insert("ordered_items", ordered_items.get_line_items().as_slice());
    }

    tera.render(template_name, &ctx)
}