use chrono::{DateTime, NaiveDate, Utc};
use serde::{Deserialize, Serialize};
use crate::model::enums::market::{HistoricalMarketOrderState, MarketOrderRange};
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub struct CharacterMarketOrder {
pub duration: i64,
pub escrow: Option<f64>,
#[serde(default)]
pub is_buy_order: bool,
pub is_corporation: bool,
pub issued: DateTime<Utc>,
pub location_id: i64,
pub min_volume: Option<i64>,
pub order_id: i64,
pub price: f64,
pub range: MarketOrderRange,
pub region_id: i64,
pub state: Option<HistoricalMarketOrderState>,
pub type_id: i64,
pub volume_remain: i64,
pub volume_total: i64,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub struct CorporationMarketOrder {
pub duration: i64,
pub escrow: Option<f64>,
#[serde(default)]
pub is_buy_order: bool,
pub issued: DateTime<Utc>,
pub issued_by: i64,
pub location_id: i64,
pub min_volume: Option<i64>,
pub order_id: i64,
pub price: f64,
pub range: MarketOrderRange,
pub region_id: i64,
pub state: Option<HistoricalMarketOrderState>,
pub type_id: i64,
pub volume_remain: i64,
pub volume_total: i64,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub struct MarketItemGroupInformation {
pub description: String,
pub name: String,
pub market_group_id: i64,
pub parent_group_id: Option<i64>,
pub types: Vec<i64>,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub struct MarketItemPrices {
pub adjusted_price: Option<f64>,
pub average_price: Option<f64>,
pub type_id: i64,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub struct StructureMarketOrder {
pub duration: i64,
#[serde(default)]
pub is_buy_order: bool,
pub issued: DateTime<Utc>,
pub location_id: i64,
pub min_volume: Option<i64>,
pub order_id: i64,
pub price: f64,
pub range: MarketOrderRange,
pub type_id: i64,
pub volume_remain: i64,
pub volume_total: i64,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub struct MarketItemRegionStatistics {
pub average: f64,
pub date: NaiveDate,
pub highest: f64,
pub lowest: f64,
pub order_count: i64,
pub volume: i64,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub struct MarketRegionOrder {
pub duration: i64,
#[serde(default)]
pub is_buy_order: bool,
pub issued: DateTime<Utc>,
pub location_id: i64,
pub min_volume: i64,
pub order_id: i64,
pub price: f64,
pub range: MarketOrderRange,
pub system_id: i64,
pub type_id: i64,
pub volume_remain: i64,
pub volume_total: i64,
}