From 30a0357b6f91078f22a0c2747f7736ea4af9e141 Mon Sep 17 00:00:00 2001 From: Daniel Tiefnig Date: Wed, 13 Jul 2011 23:31:23 +0000 Subject: [PATCH] search for / get by external ID for subscribers, accounts, customers --- lib/admin/Controller/account.pm | 37 ++++++++++++++++++++++++++++++ lib/admin/Controller/customer.pm | 12 +++++++++- lib/admin/Controller/subscriber.pm | 4 ++-- root/tt/account.tt | 7 ++++++ root/tt/customer.tt | 8 +++++++ root/tt/subscriber.tt | 14 +++++++++++ 6 files changed, 79 insertions(+), 3 deletions(-) diff --git a/lib/admin/Controller/account.pm b/lib/admin/Controller/account.pm index f2c2ae9..fd88c18 100644 --- a/lib/admin/Controller/account.pm +++ b/lib/admin/Controller/account.pm @@ -28,6 +28,10 @@ sub index : Private { $c->stash->{refill_account_id} = $c->session->{refill_account_id}; delete $c->session->{refill_account_id}; } + if(defined $c->session->{refill_external_id}) { + $c->stash->{refill_external_id} = $c->session->{refill_external_id}; + delete $c->session->{refill_external_id}; + } return 1; } @@ -65,6 +69,39 @@ sub getbyid : Local { return; } +=head2 getbyextid + +Search for entered external ID and redirect. + +=cut + +sub getbyextid : Local { + my ( $self, $c ) = @_; + + my $external_id = $c->request->params->{external_id}; + + if(length $external_id) { + + if($c->model('Provisioning')->call_prov( $c, 'billing', 'get_voip_account_by_external_id', + { external_id => $external_id }, + \$c->session->{voip_account} + )) + { + $c->response->redirect("/account/detail?account_id=". $c->session->{voip_account}{id}); + return; + } + + delete $c->session->{prov_error} if $c->session->{prov_error} eq 'Client.Voip.NoSuchAccount'; + $c->session->{messages} = { extidsearcherr => 'Client.Voip.NoSuchAccount' }; + } else { + $c->session->{messages} = { extidsearcherr => 'Web.Syntax.MissingExternalID' }; + } + + $c->session->{refill_external_id} = $external_id; + $c->response->redirect("/account"); + return; +} + =head2 detail Show account details. diff --git a/lib/admin/Controller/customer.pm b/lib/admin/Controller/customer.pm index 3a6f10d..fee8010 100644 --- a/lib/admin/Controller/customer.pm +++ b/lib/admin/Controller/customer.pm @@ -38,6 +38,7 @@ sub search : Local { $c->stash->{template} = 'tt/customer.tt'; my $filter; + my $extid_filter; my $limit = 10; my $offset = $c->request->params->{offset} || 0; $offset = 0 if $offset !~ /^\d+$/; @@ -45,18 +46,27 @@ sub search : Local { if($c->request->params->{use_session}) { $filter = $c->session->{search_filter} if defined $c->session->{search_filter}; + $extid_filter = $c->session->{extid_search_filter} + if defined $c->session->{extid_search_filter}; } else { $filter = $c->request->params->{search_string} || ''; $c->session->{search_filter} = $filter; + $extid_filter = $c->request->params->{extid_search_string} || ''; + $c->session->{extid_search_filter} = $extid_filter; } $c->stash->{search_string} = $filter; $filter =~ s/\*/\%/; $filter =~ s/\?/\_/; + $c->stash->{extid_search_string} = $extid_filter; + $extid_filter =~ s/\*/\%/; + $extid_filter =~ s/\?/\_/; my $customer_list; return unless $c->model('Provisioning')->call_prov( $c, 'billing', 'search_customers', - { filter => { anything => '%'.$filter.'%', + { filter => { + length $filter ? (anything => '%'.$filter.'%') + : (external_id => '%'.$extid_filter.'%'), limit => $limit, offset => $limit * $offset, } }, diff --git a/lib/admin/Controller/subscriber.pm b/lib/admin/Controller/subscriber.pm index 4adf9f9..a21bf75 100644 --- a/lib/admin/Controller/subscriber.pm +++ b/lib/admin/Controller/subscriber.pm @@ -49,7 +49,7 @@ sub search : Local { %exact = %{ $c->session->{exact_filter} } if defined $c->session->{exact_filter}; } else { - foreach my $sf (qw(username domain number uuid)) { + foreach my $sf (qw(username domain number uuid external_id)) { if(( defined $c->request->params->{'search_'.$sf} and length $c->request->params->{'search_'.$sf}) or $c->request->params->{'exact_'.$sf}) @@ -63,7 +63,7 @@ sub search : Local { $c->session->{exact_filter} = { %exact }; } - foreach my $sf (qw(username domain number uuid)) { + foreach my $sf (qw(username domain number uuid external_id)) { # set values for webform $c->stash->{'exact_'.$sf} = $exact{$sf}; $c->stash->{'search_'.$sf} = $filter{$sf}; diff --git a/root/tt/account.tt b/root/tt/account.tt index 5273574..3502174 100644 --- a/root/tt/account.tt +++ b/root/tt/account.tt @@ -5,6 +5,13 @@ [% IF messages.accsearcherr %]
[% messages.accsearcherr %]
[% END %] +

Get by External ID

+
+ + +
+ [% IF messages.extidsearcherr %]
[% messages.extidsearcherr %]
[% END %] +

Search by subscriber

diff --git a/root/tt/customer.tt b/root/tt/customer.tt index bb9e7a4..bd74264 100644 --- a/root/tt/customer.tt +++ b/root/tt/customer.tt @@ -7,6 +7,14 @@ [% IF messages.accgeterr %]
[% messages.accgeterr %]
[% END %] +

Search by external ID

+
+ + + + +
+

Search by contacts

diff --git a/root/tt/subscriber.tt b/root/tt/subscriber.tt index cdc8355..ba0850c 100644 --- a/root/tt/subscriber.tt +++ b/root/tt/subscriber.tt @@ -57,6 +57,20 @@

+
+ +
+
+ +
+
+ + +
+
+