diff --git a/lib/NGCP/Panel/Controller/Subscriber.pm b/lib/NGCP/Panel/Controller/Subscriber.pm index e1a02d9a3c..39f6546a87 100644 --- a/lib/NGCP/Panel/Controller/Subscriber.pm +++ b/lib/NGCP/Panel/Controller/Subscriber.pm @@ -82,6 +82,8 @@ sub sub_list :Chained('/') :PathPart('subscriber') :CaptureArgs(0) { { name => "domain.domain", search => 1, title => "Domain" }, { name => "uuid", search => 1, title => "UUID" }, { name => "status", search => 1, title => "Status" }, + { name => "number", search => 1, title => "Number", literal_sql => "concat(voip_numbers.cc, voip_numbers.ac, voip_numbers.sn)"}, + { name => "voip_numbers.cc", search => 1, title => "" }, #need this to get the relationship ]); } diff --git a/lib/NGCP/Panel/Utils/Datatables.pm b/lib/NGCP/Panel/Utils/Datatables.pm index 0758e8de42..6c60689c7f 100644 --- a/lib/NGCP/Panel/Utils/Datatables.pm +++ b/lib/NGCP/Panel/Utils/Datatables.pm @@ -18,7 +18,12 @@ sub process { # TODO: can we nest it deeper than once level? for my $c(@{ $cols }) { my @parts = split /\./, $c->{name}; - if(@parts == 2) { + if($c->{literal_sql}) { + $rs = $rs->search_rs(undef, { + '+select' => [ $c->{literal_sql} ], + '+as' => [ $c->{accessor} ], + }); + } elsif(@parts == 2) { $rs = $rs->search_rs(undef, { join => $parts[0], '+select' => [ $c->{name} ], @@ -37,10 +42,11 @@ sub process { # generic searching my @searchColumns = (); - foreach my $c(@{ $cols }) { + foreach my $col(@{ $cols }) { # avoid amigious column names if we have the same column in different joined tables - my $name = _get_joined_column_name($c->{name}); - push @searchColumns, $name if $c->{search}; + my $name = _get_joined_column_name($col->{name}); + $name = $col->{literal_sql} if $col->{literal_sql}; + push @searchColumns, $name if $col->{search}; } my $searchString = $c->request->params->{sSearch} // ""; if($searchString) {