main
1using System;
2using Gorilla.Commons.Utility;
3using MoMoney.Domain.Core;
4
5namespace MoMoney.Domain.Accounting
6{
7 public interface IIncome : Entity
8 {
9 Date date_of_issue { get; }
10 Money amount_tendered { get; }
11 ICompany company { get; }
12 }
13
14 [Serializable]
15 internal class Income : GenericEntity<IIncome>, IIncome
16 {
17 public Income(Date date_of_issue, Money amount_tendered, ICompany company)
18 {
19 this.company = company;
20 this.amount_tendered = amount_tendered;
21 this.date_of_issue = date_of_issue;
22 }
23
24 public ICompany company { get; private set; }
25 public Money amount_tendered { get; private set; }
26 public Date date_of_issue { get; private set; }
27
28 public bool Equals(Income obj)
29 {
30 if (ReferenceEquals(null, obj)) return false;
31 if (ReferenceEquals(this, obj)) return true;
32 return Equals(obj.company, company) && Equals(obj.amount_tendered, amount_tendered) &&
33 Equals(obj.date_of_issue, date_of_issue);
34 }
35
36 public override bool Equals(object obj)
37 {
38 if (ReferenceEquals(null, obj)) return false;
39 if (ReferenceEquals(this, obj)) return true;
40 if (obj.GetType() != typeof (Income)) return false;
41 return Equals((Income) obj);
42 }
43
44 public override int GetHashCode()
45 {
46 unchecked
47 {
48 var result = (company != null ? company.GetHashCode() : 0);
49 result = (result*397) ^ (amount_tendered != null ? amount_tendered.GetHashCode() : 0);
50 result = (result*397) ^ (date_of_issue != null ? date_of_issue.GetHashCode() : 0);
51 return result;
52 }
53 }
54 }
55}