use crate::{custom_deserializer::deserialize_from_string, StdResp, VoucherData};
use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};
pub type EmailPaymentResponse = StdResp<EmailPaymentRes>;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
pub enum EmailPaymentRes {
ExistingZbdAccount(EmailPaymentData),
Voucher(VoucherData),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct EmailPaymentData {
pub id: String,
pub status: String,
#[serde(deserialize_with = "deserialize_from_string")]
pub amount: u64,
pub comment: String,
#[serde(rename = "receiverId")]
pub receiver_id: String,
#[serde(rename = "senderTxId")]
pub sender_tx_id: String,
#[serde(rename = "settledAt")]
pub settled_at: DateTime<Utc>,
#[serde(rename = "transactionId")]
pub transaction_id: String,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct EmailPaymentReqest {
pub email: String,
pub amount: String,
pub comment: String,
}