diff options
| author | Benedict Börger <benedict@0xb8000.de> | 2019-06-26 23:53:18 +0200 |
|---|---|---|
| committer | Benedict Börger <benedict@0xb8000.de> | 2019-06-26 23:53:18 +0200 |
| commit | a2caa2b5807910463463176179b11f9c2e77e676 (patch) | |
| tree | b4321b6ec8dbe95c8039e532a5fd861becdac110 | |
| parent | bfb6bea4e1771ba52aa5550bc0952986e9944557 (diff) | |
[banking][account] add get_balance function to account
| -rw-r--r-- | src/banking/account.rs | 17 |
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; } } |
