use crate::models;
use serde::{Deserialize, Serialize};
#[serde_with::serde_as]
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct GroupMember {
#[serde(
rename = "acceptedByDisplayName",
default,
with = "::serde_with::rust::double_option",
skip_serializing_if = "Option::is_none"
)]
pub accepted_by_display_name: Option<Option<String>>,
#[serde(
rename = "acceptedById",
default,
with = "::serde_with::rust::double_option",
skip_serializing_if = "Option::is_none"
)]
pub accepted_by_id: Option<Option<String>>,
#[serde(
rename = "bannedAt",
default,
with = "::serde_with::rust::double_option",
skip_serializing_if = "Option::is_none"
)]
pub banned_at: Option<Option<chrono::DateTime<chrono::FixedOffset>>>,
#[serde(
rename = "createdAt",
default,
with = "::serde_with::rust::double_option",
skip_serializing_if = "Option::is_none"
)]
pub created_at: Option<Option<chrono::DateTime<chrono::FixedOffset>>>,
#[serde(rename = "groupId")]
pub group_id: String,
#[serde(
rename = "hasJoinedFromPurchase",
skip_serializing_if = "Option::is_none"
)]
pub has_joined_from_purchase: Option<bool>,
#[serde(rename = "id")]
pub id: String,
#[serde(rename = "isRepresenting")]
pub is_representing: bool,
#[serde(
rename = "isSubscribedToAnnouncements",
skip_serializing_if = "Option::is_none"
)]
pub is_subscribed_to_announcements: Option<bool>,
#[serde(
rename = "isSubscribedToEventAnnouncements",
skip_serializing_if = "Option::is_none"
)]
pub is_subscribed_to_event_announcements: Option<bool>,
#[serde(
rename = "joinedAt",
default,
with = "::serde_with::rust::double_option",
skip_serializing_if = "Option::is_none"
)]
pub joined_at: Option<Option<chrono::DateTime<chrono::FixedOffset>>>,
#[serde(
rename = "lastPostReadAt",
default,
with = "::serde_with::rust::double_option",
skip_serializing_if = "Option::is_none"
)]
pub last_post_read_at: Option<Option<chrono::DateTime<chrono::FixedOffset>>>,
#[serde(rename = "mRoleIds")]
pub m_role_ids: Vec<String>,
#[serde(
rename = "managerNotes",
default,
with = "::serde_with::rust::double_option",
skip_serializing_if = "Option::is_none"
)]
pub manager_notes: Option<Option<String>>,
#[serde(rename = "membershipStatus", skip_serializing_if = "Option::is_none")]
pub membership_status: Option<models::GroupMemberStatus>,
#[serde(rename = "roleIds")]
pub role_ids: Vec<String>,
#[serde(
rename = "user",
default,
with = "::serde_with::rust::double_option",
skip_serializing_if = "Option::is_none"
)]
pub user: Option<Option<models::GroupMemberLimitedUser>>,
#[serde(rename = "userId")]
pub user_id: String,
#[serde(rename = "visibility", skip_serializing_if = "Option::is_none")]
pub visibility: Option<String>,
}
impl GroupMember {
pub fn new(
group_id: String,
id: String,
is_representing: bool,
m_role_ids: Vec<String>,
role_ids: Vec<String>,
user_id: String,
) -> GroupMember {
GroupMember {
accepted_by_display_name: None,
accepted_by_id: None,
banned_at: None,
created_at: None,
group_id,
has_joined_from_purchase: None,
id,
is_representing,
is_subscribed_to_announcements: None,
is_subscribed_to_event_announcements: None,
joined_at: None,
last_post_read_at: None,
m_role_ids,
manager_notes: None,
membership_status: None,
role_ids,
user: None,
user_id,
visibility: None,
}
}
}