From 4debcec7a07f6f155a387061947be4492427f65d Mon Sep 17 00:00:00 2001 From: JT Smith Date: Mon, 17 Mar 2008 20:28:51 +0000 Subject: [PATCH] added transaction searching --- lib/WebGUI/Content/Shop.pm | 5 ++-- lib/WebGUI/Shop/Transaction.pm | 48 +++++++++++++++++++++++++--------- 2 files changed, 38 insertions(+), 15 deletions(-) diff --git a/lib/WebGUI/Content/Shop.pm b/lib/WebGUI/Content/Shop.pm index 1a88302f8..6cae1dd73 100644 --- a/lib/WebGUI/Content/Shop.pm +++ b/lib/WebGUI/Content/Shop.pm @@ -194,9 +194,8 @@ sub www_transaction { my $session = shift; my $output = undef; my $method = "www_".$session->form->get("method"); - my $transaction = WebGUI::Shop::Transaction->new($session); - if ($method ne "www_" && $transaction->can($method)) { - $output = $transaction->$method(); + if ($method ne "www_" && WebGUI::Shop::Transaction->can($method)) { + $output = WebGUI::Shop::Transaction->$method($session); } return $output; } diff --git a/lib/WebGUI/Shop/Transaction.pm b/lib/WebGUI/Shop/Transaction.pm index 9f2c77b83..f58a78315 100644 --- a/lib/WebGUI/Shop/Transaction.pm +++ b/lib/WebGUI/Shop/Transaction.pm @@ -339,13 +339,28 @@ Retrieves a list of transactions for the www_manage() method. =cut sub www_getTransactionsAsJson { - my ($self) = @_; - my ($db, $form) = $self->session->quick(qw(db form)); + my ($class, $session) = @_; + my $admin = WebGUI::Shop::Admin->new($session); + return $session->privilege->insufficient() unless $admin->canManage; + my ($db, $form) = $session->quick(qw(db form)); my $startIndex = $form->get('startIndex') || 0; my $numberOfResults = $form->get('results') || 25; - my $transactions = $db->read('select orderNumber, transactionId, transactionCode, paymentDriverLabel, + my @placeholders = (); + my $sql = 'select orderNumber, transactionId, transactionCode, paymentDriverLabel, dateOfPurchase, username, amount, isSuccessful, statusCode, statusMessage - from transaction order by dateOfPurchase desc limit ?,?', [$startIndex, $numberOfResults]); + from transaction'; + my $keywords = $form->get("keywords"); + if ($keywords ne "") { + $sql .= ' where'; + foreach my $field (qw(amount username orderNumber shippingAddressName shippingAddress1 paymentAddressName paymentAddress1)) { + $sql .= ' or' if (scalar @placeholders > 0); + $sql .= qq{ $field like ?}; + push(@placeholders, '%'.$keywords.'%'); + } + } + push(@placeholders, $startIndex, $numberOfResults); + $sql .= ' order by dateOfPurchase desc limit ?,?'; + my $transactions = $db->read($sql, \@placeholders); my $totalRecords = $db->quickScalar('select found_rows()'); my $tally = 0; my @records = (); @@ -354,14 +369,14 @@ sub www_getTransactionsAsJson { $tally++; } my %results = ( - recordsReturned => $tally, totalRecords => $totalRecords, + recordsReturned => $tally, startIndex => $startIndex, sort => undef, dir => "desc", records => \@records, ); - $self->session->http->setMimeType('text/json'); + $session->http->setMimeType('text/json'); return JSON::to_json(\%results); } #------------------------------------------------------------------- @@ -373,21 +388,22 @@ Displays a list of all transactions in the system along with management tools fo =cut sub www_manage { - my ($self) = @_; - my $admin = WebGUI::Shop::Admin->new($self->session); - return $self->session->privilege->insufficient() unless $admin->canManage; - my $i18n = WebGUI::International->new($self->session, 'Shop'); - my ($style, $url) = $self->session->quick(qw(style url)); + my ($class, $session) = @_; + my $admin = WebGUI::Shop::Admin->new($session); + return $session->privilege->insufficient() unless $admin->canManage; + my $i18n = WebGUI::International->new($session, 'Shop'); + my ($style, $url) = $session->quick(qw(style url)); $style->setLink($url->extras('/yui/build/fonts/fonts-min.css'), {rel=>'stylesheet', type=>'text/css'}); $style->setLink($url->extras('/yui/build/datatable/assets/skins/sam/datatable.css'), {rel=>'stylesheet', type=>'text/css'}); $style->setScript($url->extras('/yui/build/utilities/utilities.js'), {type=>'text/javascript'}); $style->setScript($url->extras('/yui/build/json/json.js'), {type=>'text/javascript'}); $style->setScript($url->extras('/yui/build/datasource/datasource-beta.js'), {type=>'text/javascript'}); $style->setScript($url->extras('/yui/build/datatable/datatable-beta.js'), {type=>'text/javascript'}); - $style->setRawHeadTags(''); + $style->setRawHeadTags(''); my $output = q|
+
@@ -395,6 +411,7 @@ sub www_manage { STOP