summaryrefslogtreecommitdiff
path: root/src/banking
diff options
context:
space:
mode:
authorBenedict Börger <benedict@0xb8000.de>2019-03-23 15:40:35 +0100
committerBenedict Börger <benedict@0xb8000.de>2019-03-23 15:41:11 +0100
commit2e0a6909cbfb2479edd7fba78fa4d0135a79ae3f (patch)
tree83070d9e1489faaea9a94609e7ff5bccedeb66d5 /src/banking
parent7fcdc3ecc0f077ff7ff4ec57c912beae4f974fdb (diff)
[global] refactoring code base
Diffstat (limited to 'src/banking')
-rw-r--r--src/banking/mod.rs59
1 files changed, 59 insertions, 0 deletions
diff --git a/src/banking/mod.rs b/src/banking/mod.rs
new file mode 100644
index 0000000..410bae1
--- /dev/null
+++ b/src/banking/mod.rs
@@ -0,0 +1,59 @@
+
+use parsers::csv::CsvFile;
+
+
+pub struct Account {
+ name : String,
+ iban : String,
+ transactions : Vec<Transaction>
+}
+
+
+#[derive(Serialize)]
+pub struct Transaction {
+ pub sender_name : String,
+ pub amount : f32,
+ pub reference : String,
+ pub date : chrono::NaiveDate
+}
+
+impl Transaction {
+ pub fn from_sparkasse_csv_file(file : CsvFile) -> Vec<Transaction> {
+ let mut ret = Vec::new();
+ for line in file.iter() {
+ let mut sender_name_f = String::from("");
+ let mut sender_iban_f = String::from("");
+ let mut amount_f : f32 = 0.0;
+ let mut reference_f = String::from("");
+ let mut date_f = chrono::NaiveDate::parse_from_str("01.01.2019", "%d.%m.%Y").unwrap();
+ match line.get(&String::from("Kontonummer")) {
+ Some(value) => sender_iban_f = value.to_string(),
+ None => println!("missing sender")
+ }
+ match line.get(&String::from("Beguenstigter/Zahlungspflichtiger")) {
+ Some(value) => sender_name_f = value.to_string(),
+ None => println!("missing sender")
+ }
+ match line.get(&String::from("Verwendungszweck")) {
+ Some(value) => reference_f = value.to_string(),
+ None => println!("missing refernce")
+ }
+ match line.get(&String::from("Betrag")) {
+ Some(value) => amount_f = value.parse().unwrap(),
+ None => println!("missing amount")
+ }
+ match line.get(&String::from("Valutadatum")) {
+ Some(value) => {
+ date_f = chrono::NaiveDate::parse_from_str(value, "%d.%m.%y").unwrap();} ,
+ None => println!("missing date")
+ }
+ ret.push(Transaction {
+ sender_name : sender_name_f,
+ amount : amount_f,
+ reference : reference_f,
+ date : date_f });
+
+ }
+ ret
+ }
+}