line_bot_sdk_messaging_api/models/
coupon_create_request.rs1use crate::models;
12use serde::{Deserialize, Serialize};
13
14#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
16pub struct CouponCreateRequest {
17 #[serde(rename = "acquisitionCondition")]
18 pub acquisition_condition: Box<models::AcquisitionConditionRequest>,
19 #[serde(rename = "barcodeImageUrl", skip_serializing_if = "Option::is_none")]
21 pub barcode_image_url: Option<String>,
22 #[serde(rename = "couponCode", skip_serializing_if = "Option::is_none")]
24 pub coupon_code: Option<String>,
25 #[serde(rename = "description", skip_serializing_if = "Option::is_none")]
27 pub description: Option<String>,
28 #[serde(rename = "endTimestamp")]
30 pub end_timestamp: i64,
31 #[serde(rename = "imageUrl", skip_serializing_if = "Option::is_none")]
33 pub image_url: Option<String>,
34 #[serde(rename = "maxUseCountPerTicket")]
36 pub max_use_count_per_ticket: i32,
37 #[serde(rename = "startTimestamp")]
39 pub start_timestamp: i64,
40 #[serde(rename = "title")]
42 pub title: String,
43 #[serde(rename = "usageCondition", skip_serializing_if = "Option::is_none")]
45 pub usage_condition: Option<String>,
46 #[serde(rename = "reward", skip_serializing_if = "Option::is_none")]
47 pub reward: Option<Box<models::CouponRewardRequest>>,
48 #[serde(rename = "visibility")]
50 pub visibility: Visibility,
51 #[serde(rename = "timezone")]
53 pub timezone: Timezone,
54}
55
56impl CouponCreateRequest {
57 pub fn new(
59 acquisition_condition: models::AcquisitionConditionRequest,
60 end_timestamp: i64,
61 max_use_count_per_ticket: i32,
62 start_timestamp: i64,
63 title: String,
64 visibility: Visibility,
65 timezone: Timezone,
66 ) -> CouponCreateRequest {
67 CouponCreateRequest {
68 acquisition_condition: Box::new(acquisition_condition),
69 barcode_image_url: None,
70 coupon_code: None,
71 description: None,
72 end_timestamp,
73 image_url: None,
74 max_use_count_per_ticket,
75 start_timestamp,
76 title,
77 usage_condition: None,
78 reward: None,
79 visibility,
80 timezone,
81 }
82 }
83}
84#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
86pub enum Visibility {
87 #[serde(rename = "UNLISTED")]
88 Unlisted,
89 #[serde(rename = "PUBLIC")]
90 Public,
91}
92
93impl Default for Visibility {
94 fn default() -> Visibility {
95 Self::Unlisted
96 }
97}
98#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
100pub enum Timezone {
101 #[serde(rename = "ETC_GMT_MINUS_12")]
102 EtcGmtMinus12,
103 #[serde(rename = "ETC_GMT_MINUS_11")]
104 EtcGmtMinus11,
105 #[serde(rename = "PACIFIC_HONOLULU")]
106 PacificHonolulu,
107 #[serde(rename = "AMERICA_ANCHORAGE")]
108 AmericaAnchorage,
109 #[serde(rename = "AMERICA_LOS_ANGELES")]
110 AmericaLosAngeles,
111 #[serde(rename = "AMERICA_PHOENIX")]
112 AmericaPhoenix,
113 #[serde(rename = "AMERICA_CHICAGO")]
114 AmericaChicago,
115 #[serde(rename = "AMERICA_NEW_YORK")]
116 AmericaNewYork,
117 #[serde(rename = "AMERICA_CARACAS")]
118 AmericaCaracas,
119 #[serde(rename = "AMERICA_SANTIAGO")]
120 AmericaSantiago,
121 #[serde(rename = "AMERICA_ST_JOHNS")]
122 AmericaStJohns,
123 #[serde(rename = "AMERICA_SAO_PAULO")]
124 AmericaSaoPaulo,
125 #[serde(rename = "ETC_GMT_MINUS_2")]
126 EtcGmtMinus2,
127 #[serde(rename = "ATLANTIC_CAPE_VERDE")]
128 AtlanticCapeVerde,
129 #[serde(rename = "EUROPE_LONDON")]
130 EuropeLondon,
131 #[serde(rename = "EUROPE_PARIS")]
132 EuropeParis,
133 #[serde(rename = "EUROPE_ISTANBUL")]
134 EuropeIstanbul,
135 #[serde(rename = "EUROPE_MOSCOW")]
136 EuropeMoscow,
137 #[serde(rename = "ASIA_TEHRAN")]
138 AsiaTehran,
139 #[serde(rename = "ASIA_TBILISI")]
140 AsiaTbilisi,
141 #[serde(rename = "ASIA_KABUL")]
142 AsiaKabul,
143 #[serde(rename = "ASIA_TASHKENT")]
144 AsiaTashkent,
145 #[serde(rename = "ASIA_COLOMBO")]
146 AsiaColombo,
147 #[serde(rename = "ASIA_KATHMANDU")]
148 AsiaKathmandu,
149 #[serde(rename = "ASIA_ALMATY")]
150 AsiaAlmaty,
151 #[serde(rename = "ASIA_RANGOON")]
152 AsiaRangoon,
153 #[serde(rename = "ASIA_BANGKOK")]
154 AsiaBangkok,
155 #[serde(rename = "ASIA_TAIPEI")]
156 AsiaTaipei,
157 #[serde(rename = "ASIA_TOKYO")]
158 AsiaTokyo,
159 #[serde(rename = "AUSTRALIA_DARWIN")]
160 AustraliaDarwin,
161 #[serde(rename = "AUSTRALIA_SYDNEY")]
162 AustraliaSydney,
163 #[serde(rename = "ASIA_VLADIVOSTOK")]
164 AsiaVladivostok,
165 #[serde(rename = "ETC_GMT_PLUS_12")]
166 EtcGmtPlus12,
167 #[serde(rename = "PACIFIC_TONGATAPU")]
168 PacificTongatapu,
169}
170
171impl Default for Timezone {
172 fn default() -> Timezone {
173 Self::EtcGmtMinus12
174 }
175}