diff --git a/src/model/mod.rs b/src/model/mod.rs index 589f8b525cb934bd951093783737c1e73caf9042..c45d8c1b0ac9d189262757c17a663018ad122dc9 100644 --- a/src/model/mod.rs +++ b/src/model/mod.rs @@ -1 +1,2 @@ -pub mod subscriber; \ No newline at end of file +pub mod subscriber; +pub mod notification; \ No newline at end of file diff --git a/src/model/notification.rs b/src/model/notification.rs new file mode 100644 index 0000000000000000000000000000000000000000..c94460bae640f63d6e95ffb0fc67bc564eebe75b --- /dev/null +++ b/src/model/notification.rs @@ -0,0 +1,31 @@ +use std::fmt::{Display, Formatter, Result}; + +use rocket::serde::{Deserialize, Serialize}; + +#[derive(Debug, Clone, Deserialize, Serialize)] +#[serde(crate = "rocket::serde")] +pub struct Notification { + pub product_title: String, + pub product_url: String, + pub product_type: String, + pub subscriber_name: String, + pub status: String +} + +impl Display for Notification { + fn fmt(&self, f: &mut Formatter<'_>) -> Result { + if self.status.to_uppercase().eq("CREATED") { + write!(f, + "Hello {}, let's try our new {} product: {}, only in BambangShop! Check it out: {}", + self.subscriber_name, self.product_type.to_lowercase(), self.product_title, self.product_url) + } else if self.status.to_uppercase().eq("DELETED") { + write!(f, + "Hello {}, we informed that our {} product called {} already sold out...", + self.subscriber_name, self.product_type.to_lowercase(), self.product_title) + } else { + write!(f, + "Hello {}, let's try our {} product: {}, grab it out before the stock ran out! Check it out: {}", + self.subscriber_name, self.product_type.to_lowercase(), self.product_title, self.product_url) + } + } +} \ No newline at end of file