main
 1using solidware.financials.infrastructure;
 2using solidware.financials.messages;
 3using solidware.financials.service.orm;
 4
 5namespace solidware.financials.service.handlers
 6{
 7    public class AddIncomeCommandMessageHandler : Handles<AddIncomeCommandMessage>
 8    {
 9        PersonRepository family;
10        ServiceBus bus;
11
12        public AddIncomeCommandMessageHandler(PersonRepository family, ServiceBus bus)
13        {
14            this.family = family;
15            this.bus = bus;
16        }
17
18        public void handle(AddIncomeCommandMessage item)
19        {
20            var person = family.find_by(item.PersonId);
21            person.IncomeAccount().deposit(item.Amount);
22            family.save(person);
23            bus.publish<IncomeMessage>(x =>
24            {
25                x.Amount = item.Amount;
26                x.PersonId = item.PersonId;
27                x.Date = item.Date;
28            });
29        }
30    }
31}