main
1using System;
2using System.Collections.Generic;
3using System.Collections.ObjectModel;
4using System.Linq;
5using solidware.financials.windows.ui.model;
6using solidware.financials.windows.ui.views.controls;
7
8namespace solidware.financials.windows.ui.presenters
9{
10 public class TaxesForFamily
11 {
12 public TaxesForFamily()
13 {
14 Income = Money.Null;
15 ProvincialTaxes = Money.Null;
16 FederalTaxes = Money.Null;
17 Chart = new ObservableCollection<KeyValuePair<string, decimal>>();
18 }
19
20 public Observable<Money> Income { get; set; }
21 public Observable<Money> ProvincialTaxes { get; set; }
22 public Observable<Money> FederalTaxes { get; set; }
23 public ICollection<KeyValuePair<string, decimal>> Chart { get; set; }
24
25 public TaxesForIndividual TaxesFor(Guid id)
26 {
27 if (!family.ContainsKey(id))
28 family[id] = new TaxesForIndividual(id, new FederalTaxesViewModel(id), new ProvincialTaxesViewModel(id));
29 return family[id];
30 }
31
32 public void AddIncomeFor(Guid personId, decimal amount)
33 {
34 TaxesFor(personId).AddIncome(amount);
35 Income.Value = family.Values.Sum(x => x.Income.Value);
36 ProvincialTaxes.Value = family.Values.Sum(x => x.ProvincialTaxes.Taxes.Value);
37 FederalTaxes.Value = family.Values.Sum(x => x.FederalTaxes.Taxes.Value);
38
39 RefreshChart();
40 }
41
42 void RefreshChart()
43 {
44 Chart.Clear();
45 Chart.Add(new KeyValuePair<string, decimal>("Income", Income.Value));
46 Chart.Add(new KeyValuePair<string, decimal>("Federal", FederalTaxes.Value));
47 Chart.Add(new KeyValuePair<string, decimal>("Provincial", ProvincialTaxes.Value));
48 }
49
50 IDictionary<Guid, TaxesForIndividual> family = new Dictionary<Guid, TaxesForIndividual>();
51 }
52}