32 lines
945 B
Rust
32 lines
945 B
Rust
use loco_rs::prelude::*;
|
|
use sea_orm::{ActiveModelTrait, ColumnTrait, EntityTrait, IntoActiveModel, QueryFilter, Set};
|
|
|
|
use crate::{
|
|
models::shipping_methods,
|
|
shared::settings,
|
|
};
|
|
|
|
pub fn packeta_ready(ctx: &AppContext) -> bool {
|
|
["packeta_api_key", "packeta_api_password", "packeta_sender_label"]
|
|
.iter()
|
|
.all(|key| settings::get(ctx, key).is_some_and(|value| !value.trim().is_empty()))
|
|
}
|
|
|
|
pub async fn disable_packeta_if_unconfigured(ctx: &AppContext) -> Result<()> {
|
|
if packeta_ready(ctx) {
|
|
return Ok(());
|
|
}
|
|
let Some(method) = shipping_methods::Entity::find()
|
|
.filter(shipping_methods::Column::Carrier.eq("packeta"))
|
|
.filter(shipping_methods::Column::Enabled.eq(true))
|
|
.one(&ctx.db)
|
|
.await?
|
|
else {
|
|
return Ok(());
|
|
};
|
|
let mut active = method.into_active_model();
|
|
active.enabled = Set(false);
|
|
active.update(&ctx.db).await?;
|
|
Ok(())
|
|
}
|