main
1using System;
2using System.Collections.Generic;
3using gorilla.commons.utility;
4using Gorilla.Commons.Utility;
5using MoMoney.Domain.Accounting;
6using MoMoney.Domain.Core;
7
8namespace MoMoney.Domain.accounting
9{
10 public interface IAccountHolder : Entity
11 {
12 void receive(IBill bill);
13 void receive(IIncome income);
14 IEnumerable<IBill> collect_all_the_unpaid_bills();
15 Money calculate_income_for(Year year);
16 }
17
18 [Serializable]
19 public class AccountHolder : GenericEntity<IAccountHolder>, IAccountHolder
20 {
21 IList<IBill> all_bills { get; set; }
22 IList<IIncome> income_collected { get; set; }
23
24 public AccountHolder()
25 {
26 all_bills = new List<IBill>();
27 income_collected = new List<IIncome>();
28 }
29
30 public void receive(IBill bill)
31 {
32 all_bills.Add(bill);
33 }
34
35 public IEnumerable<IBill> collect_all_the_unpaid_bills()
36 {
37 return all_bills.where(bill => bill.is_not_paid());
38 }
39
40 public Money calculate_income_for(Year year)
41 {
42 return income_collected.in_the(year);
43 }
44
45 public void receive(IIncome income)
46 {
47 income_collected.Add(income);
48 }
49 }
50}