private TaxConfiguration GetSteuerkonfiguration(Kanton kanton, Betragsart betragsart) { //Konfigurationen laden und holen IList<TaxConfiguration> configurations = _taxconfigurationRepository.FindByKantonAndBetragsart(kanton, betragsart); if (configurations.Count != 1) throw new ApplicationException(string.Format("Es sollte genau eine Steuerkonfiguration geben! Es gibt aber: {0}! Suchkriterien: Steueramt: {1}, Betragsart: {2}", configurations.Count, kanton, betragsart)); return configurations[0]; }
public TaxStrategyBase GetStrategy(Kanton kanton, Betragsart art) { TaxConfiguration configuration = GetSteuerkonfiguration(kanton, art); Type strategyType = _strategyRegistry[configuration.Strategieart]; if (strategyType == null) throw new Exception(string.Format("Steuerberechnungsstrategie ist unbekannt: {0}!", configuration.Strategieart)); TaxStrategyBase strategy = (TaxStrategyBase) Activator.CreateInstance(strategyType, new object[] { configuration }); return strategy; }
public decimal Calculate(Kanton kanton, Betragsart art, decimal betrag) { TaxStrategyBase strategy = TaxStrategyFactory.GetInstance().GetStrategy(kanton, art); return strategy.Calculate(betrag); }
public IList<TaxConfiguration> FindByKantonAndBetragsart(Kanton kanton, Betragsart betragsart) { throw new NotImplementedException(); }