1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
use super::{BackstockDelivery, TaskSerializerWithPurposes, User};
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct JobWithTasks {
    #[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 notes: 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 product_types: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub ratings: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub repair_type_fees: 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 stocking_fee: Option<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 store_refusal_fee: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub task_count: Option<String>,
    pub tasks: Vec<TaskSerializerWithPurposes>,
    #[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>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub upcs: 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 JobWithTasks {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> Result<(), std::fmt::Error> {
        write!(f, "{}", serde_json::to_string(self).unwrap())
    }
}