Commit e36697a

mo <email@solidware.ca>
2011-02-22 04:10:32
add tax calculations for all tax brackets.
1 parent 6289e8e
product/desktop.ui/bootstrappers/Bootstrapper.cs
@@ -13,7 +13,7 @@ using utility;
 
 namespace desktop.ui.bootstrappers
 {
-    public static class ClientBootstrapper
+    public static class Bootstrapper
     {
         public static ShellWindow create_window()
         {
@@ -85,6 +85,8 @@ namespace desktop.ui.bootstrappers
         static void register_for_message_to_listen_for(ContainerBuilder builder)
         {
             builder.RegisterType<PublishEventHandler<AddedNewFamilyMember>>().As<Handles<AddedNewFamilyMember>>();
+            builder.RegisterType<PublishEventHandler<AddIncomeCommandMessage>>().As<Handles<AddIncomeCommandMessage>>();
+            
         }
 
         static void server_registration(ContainerBuilder builder)
product/desktop.ui/handlers/AddIncomeCommandMessageHandler.cs
@@ -0,0 +1,13 @@
+using System;
+using desktop.ui.presenters;
+
+namespace desktop.ui.handlers
+{
+    public class AddIncomeCommandMessageHandler : Handles<AddIncomeCommandMessage>
+    {
+        public void handle(AddIncomeCommandMessage item)
+        {
+            throw new NotImplementedException();
+        }
+    }
+}
\ No newline at end of file
product/desktop.ui/presenters/AddNewIncomeViewModel.cs
@@ -1,4 +1,5 @@
 using System;
+using desktop.ui.eventing;
 
 namespace desktop.ui.presenters
 {
@@ -24,11 +25,23 @@ namespace desktop.ui.presenters
 
         public class AddIncomeCommand : UICommand<AddNewIncomeViewModel>
         {
+            ServiceBus bus;
+
+            public AddIncomeCommand(ServiceBus bus)
+            {
+                this.bus = bus;
+            }
+
             public override void run(AddNewIncomeViewModel presenter)
             {
-                Console.Out.WriteLine(presenter.amount);
+                bus.publish<AddIncomeCommandMessage>(x => { x.amount = presenter.amount; });
                 presenter.close();
             }
         }
     }
+
+    public class AddIncomeCommandMessage : Event
+    {
+        public decimal amount { get; set; }
+    }
 }
\ No newline at end of file
product/desktop.ui/presenters/TaxSummaryPresenter.cs
@@ -1,6 +1,9 @@
-namespace desktop.ui.presenters
+using desktop.ui.eventing;
+
+namespace desktop.ui.presenters
 {
-    public class TaxSummaryPresenter : TabPresenter
+    public class TaxSummaryPresenter : Observable<TaxSummaryPresenter>, TabPresenter,
+                                       EventSubscriber<AddIncomeCommandMessage>
     {
         UICommandBuilder builder;
 
@@ -17,5 +20,30 @@
         {
             get { return "Taxes"; }
         }
+
+        public decimal TotalIncome { get; set; }
+        public decimal Taxes { get; set; }
+
+        public void notify(AddIncomeCommandMessage message)
+        {
+            TotalIncome += message.amount;
+            if(TotalIncome <= 41544.00m)
+            {
+                Taxes = ((TotalIncome - 0m)*0.15m) + 0m;
+            }
+            if (TotalIncome > 41544.00m && TotalIncome <= 83088.00m)
+            {
+                Taxes = ((TotalIncome - 41544m)*0.22m) + 6232m;
+            }
+            if(TotalIncome > 83088.00m && TotalIncome <= 128800.00m)
+            {
+                Taxes = ((TotalIncome - 83088m)*0.26m) + 15371m;
+            }
+            if(TotalIncome > 128800.00m)
+            {
+                Taxes = ((TotalIncome - 128800m)*0.29m) + 27256m;
+            }
+            update(x => x.Taxes, x => x.TotalIncome);
+        }
     }
 }
\ No newline at end of file
product/desktop.ui/views/TaxSummaryTab.xaml
@@ -14,5 +14,10 @@
     * 29% of taxable income over $128,800.
         </TextBlock>
         <WebBrowser x:Name="browser"></WebBrowser>
+        <Label>Total Income:</Label>
+        <Label Content="{Binding Path=TotalIncome}"></Label>
+        
+        <Label>Total Taxes:</Label>
+        <Label Content="{Binding Path=Taxes}"></Label>
     </StackPanel>
 </UserControl>
product/desktop.ui/desktop.ui.csproj
@@ -73,6 +73,7 @@
     <Compile Include="eventing\SynchronizedEventAggregator.cs" />
     <Compile Include="events\SelectedFamilyMember.cs" />
     <Compile Include="events\UpdateOnLongRunningProcess.cs" />
+    <Compile Include="handlers\AddIncomeCommandMessageHandler.cs" />
     <Compile Include="handlers\AddNewFamilyMemberHandler.cs" />
     <Compile Include="handlers\domain\Entity.cs" />
     <Compile Include="handlers\domain\Person.cs" />
product/desktop.ui/Program.cs
@@ -27,7 +27,7 @@ namespace desktop.ui
             new WPFApplication
             {
                 ShutdownMode = ShutdownMode.OnMainWindowClose,
-            }.Run(ClientBootstrapper.create_window());
+            }.Run(Bootstrapper.create_window());
         }
     }
 }
\ No newline at end of file