summaryrefslogtreecommitdiff
path: root/src/web_frontend/balance.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/web_frontend/balance.rs')
-rw-r--r--src/web_frontend/balance.rs26
1 files changed, 16 insertions, 10 deletions
diff --git a/src/web_frontend/balance.rs b/src/web_frontend/balance.rs
index 77311b0..f05b69a 100644
--- a/src/web_frontend/balance.rs
+++ b/src/web_frontend/balance.rs
@@ -1,5 +1,6 @@
use parsers::csv::CsvFile;
use banking::account::Account;
+use crate::banking::asset::Asset;
//use parsers::ini::IniFile;
use std::collections::HashMap;
use rocket_contrib::templates::Template;
@@ -29,8 +30,9 @@ struct BalanceContext {
}
-#[get("/balance?<start>&<end>")]
-pub fn balance_handler(start : Option<&RawStr>, end : Option<&RawStr>) -> rocket_contrib::templates::Template {
+#[get("/balance/<account>?<start>&<end>")]
+pub fn balance_handler(account : &RawStr, start : Option<&RawStr>, end : Option<&RawStr>) -> rocket_contrib::templates::Template {
+ let account_name = account.to_string();
let date_start = match start {
Some(s) => { let mut tmp = s.to_string();
tmp.push_str("-01");
@@ -45,15 +47,19 @@ pub fn balance_handler(start : Option<&RawStr>, end : Option<&RawStr>) -> rocket
};
let date_range = crate::web_frontend::util::DateRange::new(date_start, date_end);
+ let asset_ini = "data/asset.ini";
+ let asset : Asset = crate::banking::asset::Asset::from_ini_file(asset_ini);
+ let transactions = asset.get_account_by_name(&account_name);
+ let acc;
+ match transactions {
+ Some(trans) => acc = trans,
+ None => panic!("could not read file")
+ }
+ let t = acc.transactions;
+
let mut earn_spend_v = Vec::new();
for date in date_range {
- let transactions = CsvFile::from_file("data/t.csv", ";", true);
- let t : Vec<crate::banking::account::Transaction> ;
- match transactions {
- Ok(trans) => t = crate::banking::account::Transaction::from_sparkasse_csv_file(trans),
- Err(e) => panic!("could not read file {:?}", e)
- }
- let result : Vec<_> = t.iter().filter(|x| x.date.month() == date.month()).collect();
+ let result : Vec<_> = t.iter().filter(|x| x.date.month() == date.month() && x.date.year() == date.year()).collect();
let mut earn = 0.0;
let mut spend = 0.0;
for r in &result {
@@ -65,7 +71,7 @@ pub fn balance_handler(start : Option<&RawStr>, end : Option<&RawStr>) -> rocket
}
earn_spend_v.push(MonthEarnSpend { name : date.to_string(), earned : earn, spent : spend});
}
- let context = BalanceContext { account_name : String::from("Girokonto"),
+ let context = BalanceContext { account_name : account_name,
months : earn_spend_v , date_start : date_start.to_string()[0..7].to_string(),
date_end : date_end.to_string()[0..7].to_string()};
Template::render("balance", context)