[Jifty-commit] r5923 - in JiftyX-ExpenseApp/trunk: . lib/Jifty/Plugin/ExpenseApp

Jifty commits jifty-commit at lists.jifty.org
Fri Oct 10 12:50:58 EDT 2008


Author: gugod
Date: Fri Oct 10 12:50:58 2008
New Revision: 5923

Added:
   JiftyX-ExpenseApp/trunk/lib/Jifty/Plugin/ExpenseApp/Model/ExpenseCollection.pm
Modified:
   JiftyX-ExpenseApp/trunk/   (props changed)
   JiftyX-ExpenseApp/trunk/lib/Jifty/Plugin/ExpenseApp/Dispatcher.pm

Log:
 r24494 at yra:  gugod | 2008-10-10 18:35:20 +0800
 Refactor summary generation code into model class.
 


Modified: JiftyX-ExpenseApp/trunk/lib/Jifty/Plugin/ExpenseApp/Dispatcher.pm
==============================================================================
--- JiftyX-ExpenseApp/trunk/lib/Jifty/Plugin/ExpenseApp/Dispatcher.pm	(original)
+++ JiftyX-ExpenseApp/trunk/lib/Jifty/Plugin/ExpenseApp/Dispatcher.pm	Fri Oct 10 12:50:58 2008
@@ -53,30 +53,7 @@
 
 on '/=/x/expenses/reports' => run {
 
-    my $sum = ExpenseCollection;
-
-    $sum->column( column => "category" );
-    $sum->column( column => "currency" );
-    $sum->column( column => "amount", function => "SUM" );
-    $sum->order_by(
-        { column => "currency"},
-        { function => "SUM(amount)", order => "DES" }
-    );
-
-    $sum->group_by({ column => "category" }, { column => "currency" });
-
-    my $sql_query = $sum->build_select_query;
-    my $records = $sum->_handle->simple_query($sql_query);
-    my $summary = [];
-    while ( my $row = $records->fetchrow_hashref() ) {
-        push @$summary, {
-            category => $row->{main_category},
-            amount => $row->{main_amount},
-            currency => $row->{main_currency}
-        };
-    }
-
-    set summary => $summary;
+    set summary => ExpenseCollection->all_time_summary;
 };
 
 1;

Added: JiftyX-ExpenseApp/trunk/lib/Jifty/Plugin/ExpenseApp/Model/ExpenseCollection.pm
==============================================================================
--- (empty file)
+++ JiftyX-ExpenseApp/trunk/lib/Jifty/Plugin/ExpenseApp/Model/ExpenseCollection.pm	Fri Oct 10 12:50:58 2008
@@ -0,0 +1,53 @@
+use strict;
+use warnings;
+
+package Jifty::Plugin::ExpenseApp::Model::ExpenseCollection;
+use base qw/Jifty::Plugin::ExpenseApp::Collection/;
+
+sub record_class { 'Jifty::Plugin::ExpenseApp::Model::Expense' }
+
+sub all_time_summary {
+    my ($self) = @_;
+
+    my $sum = __PACKAGE__->new;
+
+    unless ( Jifty->config->framework("SkipAccessControl") ) {
+        my $id = Jifty->web->current_user->id;
+        if (defined($id)) {
+            $sum->limit(column => 'created_by', value => $id);
+        }
+        else {
+            $sum->limit(column => 'created_by', operator => "IS", value => 'NULL');
+        }
+    }
+
+    $sum->order_by(
+        {column => "happened_at", order => "DES"},
+        {column => "id", order => "DES"}
+    );
+
+    $sum->column( column => "category" );
+    $sum->column( column => "currency" );
+    $sum->column( column => "amount", function => "SUM" );
+    $sum->order_by(
+        { column => "currency"},
+        { function => "SUM(amount)", order => "DES" }
+    );
+
+    $sum->group_by({ column => "category" }, { column => "currency" });
+
+    my $sql_query = $sum->build_select_query;
+    my $records = $sum->_handle->simple_query($sql_query);
+    my $summary = [];
+    while ( my $row = $records->fetchrow_hashref() ) {
+        push @$summary, {
+            category => $row->{main_category},
+            amount => $row->{main_amount},
+            currency => $row->{main_currency}
+        };
+    }
+
+    return $summary;
+}
+
+1;


More information about the Jifty-commit mailing list