use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};
use crate::model::enums::{
asset::LocationFlag,
character::CharacterMedalStatus,
corporation::{
CorporationRole, CorporationRoleType, CorporationSecureContainerAction,
CorporationStarbasePermission, CorporationStarbaseState, CorporationStructureServiceState,
CorporationStructureState, ShareholderType,
},
};
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub struct Corporation {
pub alliance_id: Option<i64>,
pub ceo_id: i64,
pub creator_id: i64,
pub date_founded: Option<DateTime<Utc>>,
pub description: Option<String>,
pub faction_id: Option<i64>,
pub home_station_id: Option<i64>,
pub member_count: i64,
pub name: String,
pub shares: Option<i64>,
pub tax_rate: f64,
pub ticker: String,
pub url: Option<String>,
pub war_eligible: Option<bool>,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub struct CorporationAllianceHistory {
pub alliance_id: Option<i64>,
#[serde(default)]
pub is_deleted: bool,
pub record_id: i64,
pub start_date: DateTime<Utc>,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub struct CorporationSecureContainerLog {
pub action: CorporationSecureContainerAction,
pub character_id: i64,
pub container_id: i64,
pub container_type_id: i64,
pub location_flag: LocationFlag,
pub location_id: i64,
pub logged_at: DateTime<Utc>,
pub new_config_bitmask: i64,
pub old_config_bitmask: i64,
pub quantity: i64,
pub type_id: i64,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub struct CorporationDivisionEntry {
pub division: i64,
pub name: Option<String>,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub struct CorporationDivisions {
pub hangar: Vec<CorporationDivisionEntry>,
pub wallet: Vec<CorporationDivisionEntry>,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub struct CorporationFacilities {
pub facility_id: i64,
pub system_id: i64,
pub type_id: i64,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub struct CorporationIcon {
pub px128x128: String,
pub px256x256: String,
pub px64x64: String,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub struct CorporationMedal {
pub created_at: DateTime<Utc>,
pub creator_id: i64,
pub description: String,
pub medal_id: i64,
pub title: String,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub struct CorporationIssuedMedal {
pub character_id: i64,
pub issued_at: DateTime<Utc>,
pub issuer_id: i64,
pub medal_id: i64,
pub reason: String,
pub status: CharacterMedalStatus,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub struct CorporationMemberTitles {
pub character_id: i64,
pub titles: Vec<i64>,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub struct CorporationMemberTracking {
pub base_id: Option<i64>,
pub character_id: i64,
pub location_id: Option<i64>,
pub logoff_date: Option<DateTime<Utc>>,
pub logon_date: Option<DateTime<Utc>>,
pub ship_type_id: Option<i64>,
pub start_date: Option<DateTime<Utc>>,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub struct CorporationMemberRoles {
pub character_id: i64,
pub grantable_roles: Vec<CorporationRole>,
pub grantable_roles_at_base: Vec<CorporationRole>,
pub grantable_roles_at_hq: Vec<CorporationRole>,
pub grantable_roles_at_other: Vec<CorporationRole>,
pub roles: Vec<CorporationRole>,
pub roles_at_base: Vec<CorporationRole>,
pub roles_at_hq: Vec<CorporationRole>,
pub roles_at_other: Vec<CorporationRole>,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub struct CorporationMemberRolesHistory {
pub changed_at: DateTime<Utc>,
pub character_id: i64,
pub issuer_id: i64,
pub new_roles: Vec<CorporationRole>,
pub old_roles: Vec<CorporationRole>,
pub role_type: CorporationRoleType,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub struct CorporationShareholder {
pub share_count: i64,
pub shareholder_id: i64,
pub shareholder_type: ShareholderType,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub struct CorporationStarbase {
pub moon_id: Option<i64>,
pub onlined_since: Option<DateTime<Utc>>,
pub reinforced_until: Option<DateTime<Utc>>,
pub starbase_id: i64,
pub state: Option<CorporationStarbaseState>,
pub system_id: Option<i64>,
pub type_id: i64,
pub unanchor_at: Option<DateTime<Utc>>,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub struct CorporationStarbaseFuel {
pub quantity: i64,
pub type_id: i64,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub struct CorporationStarbaseDetails {
pub allow_alliance_members: bool,
pub allow_corporation_members: bool,
pub anchor: CorporationStarbasePermission,
pub attack_if_at_war: bool,
pub attack_if_other_security_status_dropping: bool,
pub attack_security_status_threshold: Option<f64>,
pub attack_standing_threshold: Option<f64>,
pub fuel_bay_take: CorporationStarbasePermission,
pub fuel_bay_view: CorporationStarbasePermission,
pub fuels: Vec<CorporationStarbaseFuel>,
pub offline: CorporationStarbasePermission,
pub online: CorporationStarbasePermission,
pub unanchor: CorporationStarbasePermission,
pub use_alliance_standings: bool,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub struct CorporationStructureService {
pub name: String,
pub state: CorporationStructureServiceState,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub struct CorporationStructure {
pub corporation_id: i64,
pub fuel_expires: Option<DateTime<Utc>>,
pub name: Option<String>,
pub next_reinforce_apply: Option<DateTime<Utc>>,
pub next_reinforce_hour: Option<i64>,
pub profile_id: i64,
pub reinforce_hour: Option<i64>,
pub services: Vec<CorporationStructureService>,
pub state: CorporationStructureState,
pub state_timer_end: Option<DateTime<Utc>>,
pub state_timer_start: Option<DateTime<Utc>>,
pub structure_id: i64,
pub system_id: i64,
pub type_id: i64,
pub unanchors_at: Option<DateTime<Utc>>,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub struct CorporationTitle {
pub grantable_roles: Vec<CorporationRole>,
pub grantable_roles_at_base: Vec<CorporationRole>,
pub grantable_roles_at_hq: Vec<CorporationRole>,
pub grantable_roles_at_other: Vec<CorporationRole>,
pub name: String,
pub roles: Vec<CorporationRole>,
pub roles_at_base: Vec<CorporationRole>,
pub roles_at_hq: Vec<CorporationRole>,
pub roles_at_other: Vec<CorporationRole>,
pub title_id: i64,
}