Commit d6420cf
Changed files (32)
trunk
product
Gorilla.Commons.Utility
Extensions
MoMoney.DataAccess
Repositories
MoMoney.Domain
Accounting
Repositories
MoMoney.Service
MyMoney
boot
container
registration
trunk/product/Gorilla.Commons.Utility/Extensions/VisitorExtensions.cs
@@ -3,20 +3,18 @@ using Gorilla.Commons.Utility.Core;
namespace Gorilla.Commons.Utility.Extensions
{
- public static class VisitorExtensions
+ static public class VisitorExtensions
{
- public static Result return_value_from_visiting_all_items_with<Result, T>(this IEnumerable<T> items,
- IValueReturningVisitor<Result, T>
- visitor)
+ static public Result return_value_from_visiting_all_items_with<Result, T>(this IEnumerable<T> items, IValueReturningVisitor<Result, T> visitor)
{
visitor.reset();
items.visit_all_items_with(visitor);
return visitor.value;
}
- public static void visit_all_items_with<T>(this IEnumerable<T> items, IVisitor<T> visitor)
+ static public void visit_all_items_with<T>(this IEnumerable<T> items, IVisitor<T> visitor)
{
- foreach (var item in items) visitor.visit(item);
+ items.each(visitor.visit);
}
}
}
\ No newline at end of file
trunk/product/Gorilla.Commons.Utility/Year.cs
@@ -6,11 +6,20 @@ namespace Gorilla.Commons.Utility
{
readonly int the_underlying_year;
+ public Year(int year) : this(new DateTime(year, 01, 01))
+ {
+ }
+
public Year(DateTime date)
{
the_underlying_year = date.Year;
}
+ static public implicit operator Year(int year)
+ {
+ return new Year(year);
+ }
+
public bool Equals(Year obj)
{
if (ReferenceEquals(null, obj)) return false;
trunk/product/MoMoney.DataAccess/Repositories/BillRepository.cs
@@ -1,6 +1,6 @@
using System.Collections.Generic;
using Gorilla.Commons.Infrastructure.Transactions;
-using MoMoney.Domain.accounting.billing;
+using MoMoney.Domain.Accounting;
using MoMoney.Domain.repositories;
namespace MoMoney.DataAccess.repositories
trunk/product/MoMoney.DataAccess/Repositories/CompanyRepository.cs
@@ -3,7 +3,7 @@ using System.Collections.Generic;
using System.Linq;
using Gorilla.Commons.Infrastructure.Transactions;
using Gorilla.Commons.Utility.Extensions;
-using MoMoney.Domain.accounting.billing;
+using MoMoney.Domain.Accounting;
using MoMoney.Domain.repositories;
namespace MoMoney.DataAccess.repositories
trunk/product/MoMoney.DataAccess/Repositories/IncomeRepository.cs
@@ -1,6 +1,6 @@
using System.Collections.Generic;
using Gorilla.Commons.Infrastructure.Transactions;
-using MoMoney.Domain.Accounting.Growth;
+using MoMoney.Domain.Accounting;
using MoMoney.Domain.repositories;
namespace MoMoney.DataAccess.repositories
trunk/product/MoMoney.Domain/Accounting/Billing/IEmployee.cs
@@ -1,5 +0,0 @@
-namespace MoMoney.Domain.accounting.billing
-{
- public interface IEmployee
- {}
-}
\ No newline at end of file
trunk/product/MoMoney.Domain/Accounting/AccountHolder.cs
@@ -2,8 +2,7 @@ using System;
using System.Collections.Generic;
using Gorilla.Commons.Utility;
using Gorilla.Commons.Utility.Extensions;
-using MoMoney.Domain.accounting.billing;
-using MoMoney.Domain.Accounting.Growth;
+using MoMoney.Domain.Accounting;
using MoMoney.Domain.Core;
namespace MoMoney.Domain.accounting
@@ -19,15 +18,15 @@ namespace MoMoney.Domain.accounting
[Serializable]
public class AccountHolder : Entity<IAccountHolder>, IAccountHolder
{
+ IList<IBill> all_bills { get; set; }
+ IList<IIncome> income_collected { get; set; }
+
public AccountHolder()
{
all_bills = new List<IBill>();
income_collected = new List<IIncome>();
}
- private IList<IBill> all_bills { get; set; }
- private IList<IIncome> income_collected { get; set; }
-
public void receive(IBill bill)
{
all_bills.Add(bill);
trunk/product/MoMoney.Domain/Accounting/AccountHolderSpecs.cs
@@ -3,8 +3,7 @@ using System.Collections.Generic;
using developwithpassion.bdd.contexts;
using Gorilla.Commons.Testing;
using Gorilla.Commons.Utility;
-using MoMoney.Domain.accounting.billing;
-using MoMoney.Domain.Accounting.Growth;
+using MoMoney.Domain.Accounting;
using MoMoney.Domain.Core;
namespace MoMoney.Domain.accounting
@@ -72,7 +71,7 @@ namespace MoMoney.Domain.accounting
sut.receive(income_for_january_2007);
sut.receive(income_for_february_2007);
sut.receive(income_for_february_2008);
- result = sut.calculate_income_for(2007.as_a_year());
+ result = sut.calculate_income_for(2007);
};
it should_return_the_correct_amount = () => result.should_be_equal_to(2000.as_money());
trunk/product/MoMoney.Domain/Accounting/AnnualIncomeVisitor.cs
@@ -0,0 +1,29 @@
+using Gorilla.Commons.Utility;
+using Gorilla.Commons.Utility.Core;
+using MoMoney.Domain.Core;
+
+namespace MoMoney.Domain.Accounting
+{
+ public class AnnualIncomeVisitor : IValueReturningVisitor<Money, IIncome>
+ {
+ readonly Year year;
+
+ public AnnualIncomeVisitor(Year year)
+ {
+ this.year = year;
+ reset();
+ }
+
+ public void visit(IIncome x)
+ {
+ if (x.date_of_issue.is_in(year)) value = value.add(x.amount_tendered);
+ }
+
+ public Money value { get; set; }
+
+ public void reset()
+ {
+ value = new Money(0);
+ }
+ }
+}
\ No newline at end of file
trunk/product/MoMoney.Domain/Accounting/Billing/Bill.cs → trunk/product/MoMoney.Domain/Accounting/Bill.cs
@@ -2,9 +2,10 @@ using System;
using System.Collections.Generic;
using Gorilla.Commons.Utility;
using Gorilla.Commons.Utility.Extensions;
+using MoMoney.Domain.accounting.billing;
using MoMoney.Domain.Core;
-namespace MoMoney.Domain.accounting.billing
+namespace MoMoney.Domain.Accounting
{
public interface IBill : IEntity
{
@@ -18,6 +19,8 @@ namespace MoMoney.Domain.accounting.billing
[Serializable]
public class Bill : Entity<IBill>, IBill
{
+ IList<IPayment> payments { get; set; }
+
public Bill(ICompany company_to_pay, Money the_amount_owed, DateTime due_date)
{
this.company_to_pay = company_to_pay;
@@ -29,7 +32,6 @@ namespace MoMoney.Domain.accounting.billing
public ICompany company_to_pay { get; private set; }
public Money the_amount_owed { get; private set; }
public Date due_date { get; private set; }
- public IList<IPayment> payments { get; private set; }
public bool is_paid_for()
{
@@ -41,7 +43,7 @@ namespace MoMoney.Domain.accounting.billing
payments.Add(new Payment(amount_to_pay));
}
- private Money the_amount_paid()
+ Money the_amount_paid()
{
return payments.return_value_from_visiting_all_items_with(new TotalPaymentsCalculator());
}
@@ -64,7 +66,8 @@ namespace MoMoney.Domain.accounting.billing
public override int GetHashCode()
{
- unchecked {
+ unchecked
+ {
var result = (company_to_pay != null ? company_to_pay.GetHashCode() : 0);
result = (result*397) ^ (the_amount_owed != null ? the_amount_owed.GetHashCode() : 0);
result = (result*397) ^ due_date.GetHashCode();
trunk/product/MoMoney.Domain/Accounting/Billing/BillingExtensions.cs → trunk/product/MoMoney.Domain/Accounting/BillingExtensions.cs
@@ -1,4 +1,4 @@
-namespace MoMoney.Domain.accounting.billing
+namespace MoMoney.Domain.Accounting
{
public static class BillingExtensions
{
trunk/product/MoMoney.Domain/Accounting/Billing/BillSpecs.cs → trunk/product/MoMoney.Domain/Accounting/BillSpecs.cs
@@ -3,7 +3,7 @@ using developwithpassion.bdd.contexts;
using Gorilla.Commons.Testing;
using MoMoney.Domain.Core;
-namespace MoMoney.Domain.accounting.billing
+namespace MoMoney.Domain.Accounting
{
[Concern(typeof (Bill))]
public class when_checking_to_see_if_a_new_bill_has_been_paid_for : concerns_for<IBill>
trunk/product/MoMoney.Domain/Accounting/Billing/Company.cs → trunk/product/MoMoney.Domain/Accounting/Company.cs
@@ -1,9 +1,9 @@
using System;
using Gorilla.Commons.Utility;
-using MoMoney.Domain.Accounting.Growth;
+using MoMoney.Domain.accounting;
using MoMoney.Domain.Core;
-namespace MoMoney.Domain.accounting.billing
+namespace MoMoney.Domain.Accounting
{
public interface ICompany : IEntity
{
trunk/product/MoMoney.Domain/Accounting/Billing/CompanyFactory.cs → trunk/product/MoMoney.Domain/Accounting/CompanyFactory.cs
@@ -1,7 +1,7 @@
using Gorilla.Commons.Utility.Core;
using MoMoney.Domain.repositories;
-namespace MoMoney.Domain.accounting.billing
+namespace MoMoney.Domain.Accounting
{
public interface ICompanyFactory : IFactory<ICompany>
{
trunk/product/MoMoney.Domain/Accounting/GeneralLedger.cs
@@ -1,7 +1,7 @@
using System;
using System.Collections.Generic;
using Gorilla.Commons.Utility.Extensions;
-using MoMoney.Domain.accounting.billing;
+using MoMoney.Domain.Accounting;
using MoMoney.Domain.Core;
namespace MoMoney.Domain.accounting
trunk/product/MoMoney.Domain/Accounting/GeneralLedgerSpecs.cs
@@ -2,7 +2,7 @@ using System;
using System.Collections.Generic;
using developwithpassion.bdd.contexts;
using Gorilla.Commons.Testing;
-using MoMoney.Domain.accounting.billing;
+using MoMoney.Domain.Accounting;
using MoMoney.Domain.Core;
namespace MoMoney.Domain.accounting
trunk/product/MoMoney.Domain/Accounting/Billing/ILedgerEntry.cs → trunk/product/MoMoney.Domain/Accounting/ILedgerEntry.cs
@@ -1,6 +1,6 @@
using System;
-namespace MoMoney.Domain.accounting.billing
+namespace MoMoney.Domain.Accounting
{
public interface ILedgerEntry
{
trunk/product/MoMoney.Domain/Accounting/Growth/income.cs → trunk/product/MoMoney.Domain/Accounting/Income.cs
@@ -1,9 +1,8 @@
using System;
using Gorilla.Commons.Utility;
-using MoMoney.Domain.accounting.billing;
using MoMoney.Domain.Core;
-namespace MoMoney.Domain.Accounting.Growth
+namespace MoMoney.Domain.Accounting
{
public interface IIncome : IEntity
{
@@ -44,7 +43,8 @@ namespace MoMoney.Domain.Accounting.Growth
public override int GetHashCode()
{
- unchecked {
+ unchecked
+ {
var result = (company != null ? company.GetHashCode() : 0);
result = (result*397) ^ (amount_tendered != null ? amount_tendered.GetHashCode() : 0);
result = (result*397) ^ (date_of_issue != null ? date_of_issue.GetHashCode() : 0);
trunk/product/MoMoney.Domain/Accounting/Growth/IncomeExtensions.cs → trunk/product/MoMoney.Domain/Accounting/IncomeExtensions.cs
@@ -3,15 +3,13 @@ using Gorilla.Commons.Utility;
using Gorilla.Commons.Utility.Extensions;
using MoMoney.Domain.Core;
-namespace MoMoney.Domain.Accounting.Growth
+namespace MoMoney.Domain.Accounting
{
static public class IncomeExtensions
{
static public Money in_the(this IEnumerable<IIncome> income_collected, Year year)
{
- var income_for_year = new Money(0);
- income_collected.each(x => { if (x.date_of_issue.is_in(year)) income_for_year = income_for_year.add(x.amount_tendered); });
- return income_for_year;
+ return income_collected.return_value_from_visiting_all_items_with(new AnnualIncomeVisitor(year));
}
}
}
\ No newline at end of file
trunk/product/MoMoney.Domain/Accounting/Billing/Payment.cs → trunk/product/MoMoney.Domain/Accounting/Payment.cs
@@ -1,7 +1,7 @@
using System;
using MoMoney.Domain.Core;
-namespace MoMoney.Domain.accounting.billing
+namespace MoMoney.Domain.Accounting
{
public interface IPayment : IEntity
{
trunk/product/MoMoney.Domain/Accounting/Billing/TotalPaymentsCalculator.cs → trunk/product/MoMoney.Domain/Accounting/TotalPaymentsCalculator.cs
@@ -1,4 +1,5 @@
using Gorilla.Commons.Utility.Core;
+using MoMoney.Domain.Accounting;
using MoMoney.Domain.Core;
namespace MoMoney.Domain.accounting.billing
trunk/product/MoMoney.Domain/Core/DateExtensions.cs
@@ -1,13 +0,0 @@
-using System;
-using Gorilla.Commons.Utility;
-
-namespace MoMoney.Domain.Core
-{
- public static class DateExtensions
- {
- public static Year as_a_year(this int year)
- {
- return new Year(new DateTime(year, 01, 01));
- }
- }
-}
\ No newline at end of file
trunk/product/MoMoney.Domain/Core/range.cs
@@ -16,11 +16,13 @@ namespace MoMoney.Domain.Core
public Range(T start_of_range, T end_of_range)
{
- if (start_of_range.CompareTo(end_of_range) < 0) {
+ if (start_of_range.CompareTo(end_of_range) < 0)
+ {
this.start_of_range = start_of_range;
this.end_of_range = end_of_range;
}
- else {
+ else
+ {
this.start_of_range = end_of_range;
this.end_of_range = start_of_range;
}
trunk/product/MoMoney.Domain/Repositories/IBillRepository.cs
@@ -1,5 +1,5 @@
using System.Collections.Generic;
-using MoMoney.Domain.accounting.billing;
+using MoMoney.Domain.Accounting;
namespace MoMoney.Domain.repositories
{
trunk/product/MoMoney.Domain/Repositories/ICompanyRepository.cs
@@ -1,6 +1,6 @@
using System;
using System.Collections.Generic;
-using MoMoney.Domain.accounting.billing;
+using MoMoney.Domain.Accounting;
namespace MoMoney.Domain.repositories
{
trunk/product/MoMoney.Domain/Repositories/IIncomeRepository.cs
@@ -1,5 +1,5 @@
using System.Collections.Generic;
-using MoMoney.Domain.Accounting.Growth;
+using MoMoney.Domain.Accounting;
namespace MoMoney.Domain.repositories
{
trunk/product/MoMoney.Domain/MoMoney.Domain.csproj
@@ -59,21 +59,20 @@
<ItemGroup>
<Compile Include="Accounting\AccountHolder.cs" />
<Compile Include="Accounting\AccountHolderSpecs.cs" />
- <Compile Include="Accounting\Billing\Bill.cs" />
- <Compile Include="Accounting\Billing\BillingExtensions.cs" />
- <Compile Include="Accounting\Billing\BillSpecs.cs" />
- <Compile Include="Accounting\Billing\Company.cs" />
- <Compile Include="Accounting\Billing\CompanyFactory.cs" />
- <Compile Include="Accounting\Billing\IEmployee.cs" />
- <Compile Include="Accounting\Billing\ILedgerEntry.cs" />
- <Compile Include="Accounting\Billing\Payment.cs" />
- <Compile Include="Accounting\Billing\TotalPaymentsCalculator.cs" />
+ <Compile Include="Accounting\Bill.cs" />
+ <Compile Include="Accounting\BillingExtensions.cs" />
+ <Compile Include="Accounting\BillSpecs.cs" />
+ <Compile Include="Accounting\Company.cs" />
+ <Compile Include="Accounting\CompanyFactory.cs" />
+ <Compile Include="Accounting\ILedgerEntry.cs" />
+ <Compile Include="Accounting\Income.cs" />
+ <Compile Include="Accounting\Payment.cs" />
+ <Compile Include="Accounting\TotalPaymentsCalculator.cs" />
<Compile Include="Accounting\GeneralLedger.cs" />
<Compile Include="Accounting\GeneralLedgerSpecs.cs" />
- <Compile Include="Accounting\Growth\income.cs" />
- <Compile Include="Accounting\Growth\IncomeExtensions.cs" />
+ <Compile Include="Accounting\AnnualIncomeVisitor.cs" />
+ <Compile Include="Accounting\IncomeExtensions.cs" />
<Compile Include="Accounting\IInvoice.cs" />
- <Compile Include="Core\DateExtensions.cs" />
<Compile Include="Core\Entity.cs" />
<Compile Include="Core\Money.cs" />
<Compile Include="Core\MoneyExtensions.cs" />
trunk/product/MoMoney.Service/Application/AddNewIncomeCommandSpecs.cs
@@ -2,8 +2,7 @@ using System;
using developwithpassion.bdd.contexts;
using Gorilla.Commons.Testing;
using Gorilla.Commons.Utility;
-using MoMoney.Domain.accounting.billing;
-using MoMoney.Domain.Accounting.Growth;
+using MoMoney.Domain.Accounting;
using MoMoney.Domain.Core;
using MoMoney.Domain.repositories;
using MoMoney.DTO;
trunk/product/MoMoney.Service/Application/GetAllBillsQuery.cs
@@ -1,6 +1,6 @@
using System.Collections.Generic;
using Gorilla.Commons.Utility.Extensions;
-using MoMoney.Domain.accounting.billing;
+using MoMoney.Domain.Accounting;
using MoMoney.Domain.repositories;
using MoMoney.DTO;
trunk/product/MoMoney.Service/Application/GetAllIncomeQuery.cs
@@ -1,6 +1,6 @@
using System.Collections.Generic;
using Gorilla.Commons.Utility.Extensions;
-using MoMoney.Domain.Accounting.Growth;
+using MoMoney.Domain.Accounting;
using MoMoney.Domain.repositories;
using MoMoney.DTO;
trunk/product/MoMoney.Service/Application/RegisterNewCompanyCommand.cs
@@ -1,6 +1,6 @@
using System.Linq;
using Gorilla.Commons.Utility.Extensions;
-using MoMoney.Domain.accounting.billing;
+using MoMoney.Domain.Accounting;
using MoMoney.Domain.repositories;
using MoMoney.DTO;
trunk/product/MyMoney/boot/container/registration/wire_up_the_services_in_to_the.cs
@@ -1,7 +1,7 @@
using Gorilla.Commons.Infrastructure;
using Gorilla.Commons.Utility.Core;
using MoMoney.boot.container.registration.proxy_configuration;
-using MoMoney.Domain.accounting.billing;
+using MoMoney.Domain.Accounting;
using MoMoney.Domain.repositories;
using MoMoney.Service.Application;