summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenedict Börger <benedict@0xb8000.de>2019-06-26 23:53:18 +0200
committerBenedict Börger <benedict@0xb8000.de>2019-06-26 23:53:18 +0200
commita2caa2b5807910463463176179b11f9c2e77e676 (patch)
treeb4321b6ec8dbe95c8039e532a5fd861becdac110
parentbfb6bea4e1771ba52aa5550bc0952986e9944557 (diff)
[banking][account] add get_balance function to account
-rw-r--r--src/banking/account.rs17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/banking/account.rs b/src/banking/account.rs
index baaccec..584386a 100644
--- a/src/banking/account.rs
+++ b/src/banking/account.rs
@@ -1,4 +1,5 @@
use parsers::csv::CsvFile;
+use chrono::Datelike;
pub struct Account {
pub name : String,
@@ -27,6 +28,22 @@ impl Account {
}
Account { name : name, iban : iban, transactions : trans, institute : institute, groupFile : groupFile, category : category }
}
+
+ pub fn get_balance(&self, date : chrono::NaiveDate) -> f32 {
+ self.transactions.iter().filter(|transaction| Account::date_is_before(transaction.date, date)).fold(0.0, |acc, x| acc + x.amount).abs()
+ }
+
+ fn date_is_before(left: chrono::NaiveDate, right : chrono::NaiveDate) -> bool {
+ if left.year() < right.year() {
+ return true;
+ }
+ else if left.year() == right.year() {
+ if left.month() > right.month() {
+ return false;
+ }
+ return true;
+ }
+ return false;
}
}