use crate::client::Client;
use crate::envelope::ApiResponse;
use crate::error::Result;
use crate::modules::account::Transaction;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct InitiateStatementRequest {
pub account_number: String,
pub date_from: String,
pub date_to: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
struct StatementReference {
reference_id: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct GetStatementRequest {
pub reference_id: String,
}
impl Client {
pub async fn initiate_statement(&self, request: &InitiateStatementRequest) -> Result<String> {
let reference = self
.post_json::<_, ApiResponse<StatementReference>>(
"get-statement-service/api/AccountMaintenance/InitiateGetCustomerStatement",
request,
&[],
)
.await?
.into_result()?;
Ok(reference.reference_id)
}
pub async fn get_statement_transactions(
&self,
request: &GetStatementRequest,
) -> Result<Vec<Transaction>> {
self.post_json::<_, ApiResponse<Vec<Transaction>>>(
"get-statement-service/api/AccountMaintenance/GetCustomerTransactions",
request,
&[],
)
.await?
.into_result()
}
}