search for / get by external ID for subscribers, accounts, customers

3.2
Daniel Tiefnig 15 years ago
parent 11ea48cdba
commit 30a0357b6f

@ -28,6 +28,10 @@ sub index : Private {
$c->stash->{refill_account_id} = $c->session->{refill_account_id}; $c->stash->{refill_account_id} = $c->session->{refill_account_id};
delete $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; return 1;
} }
@ -65,6 +69,39 @@ sub getbyid : Local {
return; 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 =head2 detail
Show account details. Show account details.

@ -38,6 +38,7 @@ sub search : Local {
$c->stash->{template} = 'tt/customer.tt'; $c->stash->{template} = 'tt/customer.tt';
my $filter; my $filter;
my $extid_filter;
my $limit = 10; my $limit = 10;
my $offset = $c->request->params->{offset} || 0; my $offset = $c->request->params->{offset} || 0;
$offset = 0 if $offset !~ /^\d+$/; $offset = 0 if $offset !~ /^\d+$/;
@ -45,18 +46,27 @@ sub search : Local {
if($c->request->params->{use_session}) { if($c->request->params->{use_session}) {
$filter = $c->session->{search_filter} $filter = $c->session->{search_filter}
if defined $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 { } else {
$filter = $c->request->params->{search_string} || ''; $filter = $c->request->params->{search_string} || '';
$c->session->{search_filter} = $filter; $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; $c->stash->{search_string} = $filter;
$filter =~ s/\*/\%/; $filter =~ s/\*/\%/;
$filter =~ s/\?/\_/; $filter =~ s/\?/\_/;
$c->stash->{extid_search_string} = $extid_filter;
$extid_filter =~ s/\*/\%/;
$extid_filter =~ s/\?/\_/;
my $customer_list; my $customer_list;
return unless $c->model('Provisioning')->call_prov( $c, 'billing', 'search_customers', 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, limit => $limit,
offset => $limit * $offset, offset => $limit * $offset,
} }, } },

@ -49,7 +49,7 @@ sub search : Local {
%exact = %{ $c->session->{exact_filter} } %exact = %{ $c->session->{exact_filter} }
if defined $c->session->{exact_filter}; if defined $c->session->{exact_filter};
} else { } 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} if(( defined $c->request->params->{'search_'.$sf}
and length $c->request->params->{'search_'.$sf}) and length $c->request->params->{'search_'.$sf})
or $c->request->params->{'exact_'.$sf}) or $c->request->params->{'exact_'.$sf})
@ -63,7 +63,7 @@ sub search : Local {
$c->session->{exact_filter} = { %exact }; $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 # set values for webform
$c->stash->{'exact_'.$sf} = $exact{$sf}; $c->stash->{'exact_'.$sf} = $exact{$sf};
$c->stash->{'search_'.$sf} = $filter{$sf}; $c->stash->{'search_'.$sf} = $filter{$sf};

@ -5,6 +5,13 @@
</form> </form>
[% IF messages.accsearcherr %]<div class="error">[% messages.accsearcherr %]</div>[% END %] [% IF messages.accsearcherr %]<div class="error">[% messages.accsearcherr %]</div>[% END %]
<h3>Get by External ID</h3>
<form action="/account/getbyextid" method="GET">
<input type="text" id="external_id" name="external_id" value="[% refill_external_id %]" />
<button class="button-search" name="submit">Search</button>
</form>
[% IF messages.extidsearcherr %]<div class="error">[% messages.extidsearcherr %]</div>[% END %]
<h3>Search by subscriber</h3> <h3>Search by subscriber</h3>
<form action="/subscriber/search" method="post"> <form action="/subscriber/search" method="post">
<input type="text" id="search_subscriber" name="search_username" value="[% search_string %]" /> <input type="text" id="search_subscriber" name="search_username" value="[% search_string %]" />

@ -7,6 +7,14 @@
[% IF messages.accgeterr %]<div class="error">[% messages.accgeterr %]</div>[% END %] [% IF messages.accgeterr %]<div class="error">[% messages.accgeterr %]</div>[% END %]
</div> </div>
<h3>Search by external ID</h3>
<div class="p1">
<form action="/customer/search" method="post">
<input type="text" id="extid_search_string" name="extid_search_string" value="[% extid_search_string %]" />
<input type="submit" value="Search &#187;" class="but ui-corner-all" />
</form>
</div>
<h3>Search by contacts</h3> <h3>Search by contacts</h3>
<div class="p1"> <div class="p1">
<form action="/customer/search" method="post"> <form action="/customer/search" method="post">

@ -57,6 +57,20 @@
</div> </div>
<br/> <br/>
<div class="span-3">
<label class="search_label" for="search_by_external_id">External ID:</label>
</div>
<div class="span-5">
<input type="text" id="search_by_external_id" name="search_external_id" value="[% search_external_id %]"
title="search by the subscriber's external ID, wildcards allowed" />
</div>
<div class="span-3 last">
<input type="checkbox" class="checkbox" id="exact_external_id" name="exact_external_id" [% IF exact_external_id %]checked="checked"[% END %]
title="if checked, the search string will not be surrounded by wildcards" />
<label for="exact_external_id">exact match</label>
</div>
<br/>
<div class="span-6 append-5 last"> <div class="span-6 append-5 last">
<input type="checkbox" class="checkbox" id="include_terminated" name="terminated" [% IF terminated %]checked="checked"[% END %] <input type="checkbox" class="checkbox" id="include_terminated" name="terminated" [% IF terminated %]checked="checked"[% END %]
title="if checked, the search result will include terminated subscribers" /> title="if checked, the search result will include terminated subscribers" />

Loading…
Cancel
Save