From a2caa2b5807910463463176179b11f9c2e77e676 Mon Sep 17 00:00:00 2001 From: Benedict Börger Date: Wed, 26 Jun 2019 23:53:18 +0200 Subject: [banking][account] add get_balance function to account --- src/banking/account.rs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'src/banking') 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; } } -- cgit v1.2.3-70-g09d2