[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