headless_lms_server/controllers/cms/
email_templates.rsuse models::email_templates::{EmailTemplate, EmailTemplateUpdate};
use crate::prelude::*;
#[instrument(skip(pool))]
async fn get_email_template(
email_template_id: web::Path<Uuid>,
pool: web::Data<PgPool>,
user: AuthUser,
) -> ControllerResult<web::Json<EmailTemplate>> {
let mut conn = pool.acquire().await?;
let token = authorize(&mut conn, Act::Teach, Some(user.id), Res::AnyCourse).await?;
let email_templates =
models::email_templates::get_email_template(&mut conn, *email_template_id).await?;
token.authorized_ok(web::Json(email_templates))
}
#[instrument(skip(pool))]
async fn update_email_template(
email_template_id: web::Path<Uuid>,
payload: web::Json<EmailTemplateUpdate>,
pool: web::Data<PgPool>,
user: AuthUser,
) -> ControllerResult<web::Json<EmailTemplate>> {
let mut conn = pool.acquire().await?;
let token = authorize(&mut conn, Act::Teach, Some(user.id), Res::AnyCourse).await?;
let request_update_template = payload.0;
let updated_template = models::email_templates::update_email_template(
&mut conn,
*email_template_id,
request_update_template,
)
.await?;
token.authorized_ok(web::Json(updated_template))
}
pub fn _add_routes(cfg: &mut ServiceConfig) {
cfg.route("/{email_template_id}", web::get().to(get_email_template))
.route("/{email_template_id}", web::put().to(update_email_template));
}