use crate::models;
use serde::{Deserialize, Serialize};
#[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<String>>,
#[serde(
rename = "createdAt",
default,
with = "::serde_with::rust::double_option",
skip_serializing_if = "Option::is_none"
)]
pub created_at: Option<Option<String>>,
#[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")]
pub is_subscribed_to_announcements: bool,
#[serde(
rename = "isSubscribedToEventAnnouncements",
skip_serializing_if = "Option::is_none"
)]
pub is_subscribed_to_event_announcements: Option<bool>,
#[serde(rename = "joinedAt", deserialize_with = "Option::deserialize")]
pub joined_at: Option<String>,
#[serde(rename = "lastPostReadAt", deserialize_with = "Option::deserialize")]
pub last_post_read_at: Option<String>,
#[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")]
pub membership_status: 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")]
pub visibility: String,
}
impl GroupMember {
pub fn new(
group_id: String,
id: String,
is_representing: bool,
is_subscribed_to_announcements: bool,
joined_at: Option<String>,
last_post_read_at: Option<String>,
m_role_ids: Vec<String>,
membership_status: models::GroupMemberStatus,
role_ids: Vec<String>,
user_id: String,
visibility: 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,
is_subscribed_to_event_announcements: None,
joined_at,
last_post_read_at,
m_role_ids,
manager_notes: None,
membership_status,
role_ids,
user: None,
user_id,
visibility,
}
}
}