public List <string> GetCategories() { IRisk risk = null; List <string> tradeCategories = new List <string>(); List <IRisk> risks = new List <IRisk> { RiskFactory.Create(TypeRisk.LowRisk), RiskFactory.Create(TypeRisk.MediumRisk), RiskFactory.Create(TypeRisk.HighRisk) }; foreach (var trade in _portfolio) { foreach (IRisk r in risks) { risk = r; if (r.CalculateRisk(trade)) { break; } } if (risk != null) { tradeCategories.Add(risk.Type); } } return(tradeCategories); }
public Projection Get([FromQuery] decimal initialInvestment, [FromQuery] decimal monthlyInvestment, [FromQuery] decimal targetValue, [FromQuery] int years, [FromQuery] string riskLevel = "low") { var risk = ConvertToRiskLevels(riskLevel); var calculator = RiskFactory.CreateInstance(risk, new InputValidator()); return(calculator.CalculateGrowth(initialInvestment, monthlyInvestment, targetValue, years)); }
public void GivenIWantToCalculate(string riskType) { const string expectedLow = "low"; const string expectedMedium = "medium"; const string expectedHigh = "high"; var level = (riskType.ToLower()) switch { expectedLow => RiskLevels.Low, expectedMedium => RiskLevels.Medium, expectedHigh => RiskLevels.High, _ => throw new ArgumentOutOfRangeException(), }; _growthRisk = RiskFactory.CreateInstance(level, new InputValidator()); }
public string GetCategory(double valor, string clientSector) { var risk = RiskFactory.GetRiskDefination(valor, clientSector); return(risk.GetRisk()); }
public void CreateInstanceCreatesInstanceOfLowRiskWhenLowIsProvided() { var lowRisk = RiskFactory.CreateInstance(Models.RiskLevels.Low, new FakeValidator()); Assert.IsInstanceOf <LowRisk>(lowRisk); }
public void CreateInstanceCreatesInstanceOfHighRiskWhenHighIsProvided() { var highRisk = RiskFactory.CreateInstance(Models.RiskLevels.High, new FakeValidator()); Assert.IsInstanceOf <HighRisk>(highRisk); }
public void CreateInstanceCreatesInstanceOfMediumRiskWhenMediumIsProvided() { var mediumRisk = RiskFactory.CreateInstance(Models.RiskLevels.Medium, new FakeValidator()); Assert.IsInstanceOf <MediumRisk>(mediumRisk); }