use {
crate::models,
serde::{Deserialize, Serialize},
};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct MobileMoneyAddress {
#[serde(rename = "accountHolder")]
pub account_holder: models::AccountHolderDetails,
#[serde(rename = "mobilePhoneNumber")]
pub mobile_phone_number: String,
#[serde(rename = "provider")]
pub provider: Provider,
#[serde(
rename = "beneficiaryDocumentId",
skip_serializing_if = "Option::is_none"
)]
pub beneficiary_document_id: Option<String>,
#[serde(
rename = "beneficiaryRelationship",
skip_serializing_if = "Option::is_none"
)]
pub beneficiary_relationship: Option<String>,
}
impl MobileMoneyAddress {
pub fn new(
account_holder: models::AccountHolderDetails,
mobile_phone_number: String,
provider: Provider,
) -> MobileMoneyAddress {
MobileMoneyAddress {
account_holder,
mobile_phone_number,
provider,
beneficiary_document_id: None,
beneficiary_relationship: None,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Provider {
#[serde(rename = "m-pesa")]
MPesa,
#[serde(rename = "airtel")]
Airtel,
#[serde(rename = "mtn")]
Mtn,
#[serde(rename = "tigo")]
Tigo,
#[serde(rename = "orange")]
Orange,
}
impl Default for Provider {
fn default() -> Provider {
Self::MPesa
}
}