use std::collections::HashMap; use rocket_contrib::templates::Template; use crate::parsers::ini::IniFile; use crate::parsers::csv::CsvFile; use chrono::Utc; #[derive(Serialize)] pub struct AssetRiskContext { risk_category : Vec } #[derive(Serialize)] pub struct RiskCategory{ name : String, balance : f32 } #[get("/asset/risk_chart")] pub fn asset_risk_chart_handler() -> rocket_contrib::templates::Template { let asset_file = "data/asset.ini"; let asset = crate::banking::asset::Asset::from_ini_file(asset_file); let mut acc : Vec = Vec::new(); let today = Utc::today().naive_utc(); for account in asset.iter() { println!("{}", account.riskCategory); let mut found = false; for mut t in &mut acc { if t.name == account.riskCategory { found = true; t.balance = t.balance + account.get_balance(today); } } if !found { acc.push( RiskCategory { name : account.riskCategory.to_string(), balance : account.get_balance(today) }); } } let context = AssetRiskContext { risk_category : acc }; Template::render("asset_risk_chart", context) }