use chrono::{DateTime, FixedOffset}; use serde::{Deserialize, Serialize}; use crate::UserType; #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(rename_all = "PascalCase")] pub struct GdprCommissioners { pub commissioners: Vec, } #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(rename_all = "PascalCase")] pub struct GdprCommissioner { pub id: String, pub name: String, pub mobile: String, pub phone: String, pub email: String, pub web: Option, pub data_box: Option, } #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(rename_all = "PascalCase")] pub struct GdprConsent { pub id: i64, pub person_type: UserType, pub person_id: String, pub created: DateTime, pub validity: GdprValidity, pub valid_from: DateTime, pub state: GdprConsentState, pub title: Option, pub personal_data: Option, pub usage_purpose: Option, pub valid_to: Option>, pub valid_years: Option, pub rights: Option, pub body: Option, } #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub enum GdprValidity { EndOfStudy, EndOfStudyPlusYears, ToAppeal, Unknown, Validity, } #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub enum GdprConsentState { Agreed, Cancelled, Disagreed, Expired, NewConsent, RevokeRequested, Revoked, Unknown, } #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(rename_all = "PascalCase")] pub struct GdprConsentRights { pub can_agree: bool, pub can_disagree: bool, pub can_revoke_request: bool, } #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(rename_all = "PascalCase")] pub struct GdprConsents { pub person_consents: Vec, }