diff options
Diffstat (limited to 'src/web_frontend/balance.rs')
| -rw-r--r-- | src/web_frontend/balance.rs | 56 |
1 files changed, 5 insertions, 51 deletions
diff --git a/src/web_frontend/balance.rs b/src/web_frontend/balance.rs index 2cbebec..77311b0 100644 --- a/src/web_frontend/balance.rs +++ b/src/web_frontend/balance.rs @@ -1,5 +1,5 @@ use parsers::csv::CsvFile; -use banking::Account; +use banking::account::Account; //use parsers::ini::IniFile; use std::collections::HashMap; use rocket_contrib::templates::Template; @@ -10,6 +10,7 @@ use rocket::http::RawStr; use regex::Regex; use chrono::{NaiveDate, Utc}; use chrono::Datelike; +use crate::web_frontend::util; #[derive(Serialize)] struct MonthEarnSpend { @@ -27,53 +28,6 @@ struct BalanceContext { date_end : String } -#[derive(Debug)] -struct DateRange { - start_year : i32, - start_month : u32, - end_year : i32, - end_month : u32, -} - -impl DateRange { - fn new(start : chrono::NaiveDate, end : chrono::NaiveDate) -> DateRange { - DateRange { - start_year : start.year(), - start_month : start.month(), - end_year : end.year(), - end_month : end.month(), - } - } -} - -impl Iterator for DateRange { - type Item = chrono::NaiveDate; - - fn next(&mut self) -> Option<Self::Item> { - println!("next called"); - if (self.start_year <= self.end_year) { - if(self.start_month <= self.end_month) { - let mut tmp = self.start_year.to_string(); - if self.start_month < 10 { - tmp.push_str("-0"); - } else { - tmp.push_str("-"); - } - tmp.push_str(&self.start_month.to_string()); - tmp.push_str("-01"); - if self.start_month < 13 { - self.start_month = self.start_month + 1; - } else { - self.start_month = 1; - self.start_year = self.start_year + 1; - } - println!("{}", tmp); - return Some(chrono::NaiveDate::parse_from_str(&tmp, "%Y-%m-%d").unwrap()) - } - } - None - } -} #[get("/balance?<start>&<end>")] pub fn balance_handler(start : Option<&RawStr>, end : Option<&RawStr>) -> rocket_contrib::templates::Template { @@ -89,14 +43,14 @@ pub fn balance_handler(start : Option<&RawStr>, end : Option<&RawStr>) -> rocket chrono::NaiveDate::parse_from_str(&tmp, "%Y-%m-%d").unwrap() }, None => Utc::today().naive_utc() }; - let date_range = DateRange::new(date_start, date_end); + let date_range = crate::web_frontend::util::DateRange::new(date_start, date_end); 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::Transaction> ; + let t : Vec<crate::banking::account::Transaction> ; match transactions { - Ok(trans) => t = crate::banking::Transaction::from_sparkasse_csv_file(trans), + 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(); |
