use crate::controllers::Entity;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ShippingZoneMethod {
pub id: i64,
pub instance_id: i32,
pub title: String,
pub order: i32,
pub enabled: bool,
pub method_id: String,
pub method_title: String,
pub method_description: String,
pub settings: ShippingSettings,
}
impl Entity for ShippingZoneMethod {
fn endpoint() -> String {
String::new()
}
fn child_endpoint(parent_id: i32) -> String {
format!("shipping/zones/{parent_id}/methods/")
}
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ShippingSettings {
pub title: ShippingMethodSettings,
pub requires: Option<ShippingMethodSettings>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ShippingMethodSettings {
pub id: String,
pub label: String,
pub description: String,
#[serde(rename = "type")]
pub settings_type: SettingsType,
pub value: String,
#[serde(rename = "default")]
pub default_value: String,
pub tip: String,
pub placeholder: String,
pub options: Option<serde_json::Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum SettingsType {
Text,
Email,
Number,
Color,
Password,
Textarea,
Select,
Multiselect,
Radio,
ImageWidth,
Checkbox,
}