api for packeta required to enable it
This commit is contained in:
31
src/shared/shipping.rs
Normal file
31
src/shared/shipping.rs
Normal file
@@ -0,0 +1,31 @@
|
||||
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(())
|
||||
}
|
||||
Reference in New Issue
Block a user