use super::{BackstockDelivery, User};
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Job {
#[serde(skip_serializing_if = "Option::is_none")]
pub backstock_delivery: Option<BackstockDelivery>,
#[serde(skip_serializing_if = "Option::is_none")]
pub banner_id: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub banner_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub brand_fee: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub brand_id: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub brand_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub brand_public_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub case_breakdown: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cases: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub claim_method: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub claimable_at: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub claimed_jyve_along_count: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub client_id: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub completed_location: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub completed_location_accuracy: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub completed_location_acquired_at: Option<chrono::DateTime<chrono::Utc>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub completed_location_service_enabled: Option<bool>,
pub created_at: chrono::DateTime<chrono::Utc>,
#[serde(skip_serializing_if = "Option::is_none")]
pub credential_granted_id: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub credential_granted_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub credential_requirements: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub customer_support_issue: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub data: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none")]
pub date_becomes_urgent: Option<String>,
pub date_completed: chrono::DateTime<chrono::Utc>,
pub date_reserved: chrono::DateTime<chrono::Utc>,
pub date_started: chrono::DateTime<chrono::Utc>,
pub description: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub estimated_time: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub feedback: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub id: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub initial_demand_source: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub is_jyve_along_eligible: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub is_manual: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub is_recurring: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub is_shared: Option<bool>,
pub is_upgraded_to_jyve_along: bool,
#[serde(skip_serializing_if = "Option::is_none")]
pub is_virtual: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub job_finish_before: Option<chrono::DateTime<chrono::Utc>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub job_start_after: Option<chrono::DateTime<chrono::Utc>>,
pub jyver_job_id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub jyver_payout: Option<String>,
#[serde(rename = "match")]
#[serde(skip_serializing_if = "Option::is_none")]
pub match_: Option<String>,
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub new_jyver_confirmed_eta: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub num_jobs_completed_of_brand_by_user: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub original_payout: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub payout: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub payout_increase_amount: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub planned_start_after: Option<chrono::DateTime<chrono::Utc>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub planned_start_before: Option<chrono::DateTime<chrono::Utc>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub planned_start_time_is_required: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ratings: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub reviews: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub should_request_start_time: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub skills_demo_planned_start_time: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub start_after_with_grace_period: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub started_location: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub started_location_accuracy: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub started_location_acquired_at: Option<chrono::DateTime<chrono::Utc>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub started_location_service_enabled: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub stats_rollup: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub status: Option<String>,
pub status_new: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub store_location_address: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub store_location_geo_point: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub store_location_id: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub store_location_self_identity: Option<String>,
pub store_location_timezone: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub task_count: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub teams: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub time_expectation: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub time_expectation_description: Option<String>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
pub type_: Option<String>,
pub updated_at: chrono::DateTime<chrono::Utc>,
pub upgraded_to_jyve_along_at: chrono::DateTime<chrono::Utc>,
#[serde(skip_serializing_if = "Option::is_none")]
pub user: Option<User>,
}
impl std::fmt::Display for Job {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> Result<(), std::fmt::Error> {
write!(f, "{}", serde_json::to_string(self).unwrap())
}
}