@ -15,8 +15,6 @@ use HTTP::Status qw(:constants);
use NGCP::Panel::Form ;
use Data::Dumper ;
use NGCP::Panel::Utils::Datatables qw( ) ;
use Tie::IxHash ;
#use Class::Hash;
@ -332,115 +330,6 @@ sub _apply_timestamp_from_to {
return $ rs ;
}
sub _apply_caller {
my $ self = shift ;
my % params = @ _ ;
my ( $ rs , $ params , $ col ) = @ params { qw/rs params col/ } ;
if ( exists $ params - > { caller } ) {
$ rs = $ rs - > search_rs ( {
_wildcard_search (
search_string = > $ params - > { caller } ,
search = > 1 ,
exact_search = > _check_wildcard_search ( $ params ) ,
int_search = > 0 ,
col_name = > $ col ,
comparison_op = > undef ,
convert_code = > undef ,
)
} ) ;
}
return $ rs ;
}
sub _apply_callee {
my $ self = shift ;
my % params = @ _ ;
my ( $ rs , $ params , $ col ) = @ params { qw/rs params col/ } ;
if ( exists $ params - > { callee } ) {
$ rs = $ rs - > search_rs ( {
_wildcard_search (
search_string = > $ params - > { callee } ,
search = > 1 ,
exact_search = > _check_wildcard_search ( $ params ) ,
int_search = > 0 ,
col_name = > $ col ,
comparison_op = > undef ,
convert_code = > undef ,
)
} ) ;
}
return $ rs ;
}
sub _wildcard_search {
my % params = @ _ ;
my ( $ search_string ,
$ search ,
$ exact_search ,
$ int_search ,
$ col_name ,
$ comparison_op ,
$ convert_code ) = @ params { qw /
search_string
search
exact_search
int_search
col_name
comparison_op
convert_code
/ } ;
if ( $ search or $ exact_search or $ int_search ) {
my $ is_pattern = 0 ;
my ( $ search_value , $ op ) ;
( my $ search_string_escaped , $ is_pattern ) = NGCP::Panel::Utils::Datatables:: escape_search_string_pattern (
$ search_string , ( $ exact_search || $ int_search ) ) ;
if ( $ is_pattern ) {
$ op = 'like' ;
$ search_value = $ search_string_escaped ;
} elsif ( $ exact_search ) {
$ op = '=' ;
$ search_string_escaped = $ search_string ;
$ search_string_escaped =~ s/\\\*/*/g ;
$ search_string_escaped =~ s/\\\\/\\/g ;
$ search_value = $ search_string_escaped ;
} elsif ( $ int_search ) {
$ op = '=' ;
$ search_value = $ search_string ;
} else {
$ op = 'like' ;
$ search_value = '%' . $ search_string_escaped . '%' ;
}
$ op = $ comparison_op if ( defined $ comparison_op ) ;
$ search_value = $ convert_code - > ( $ search_string ) if ( ref $ convert_code eq 'CODE' ) ;
my $ stmt ;
if ( defined $ search_value ) {
if ( not $ int_search or $ search_string =~ /^\d{1,10}$/ ) {
return ( $ col_name = > { $ op = > $ search_value } ) ;
}
}
}
return ( ) ;
}
sub _check_wildcard_search {
my $ params = shift ;
my $ exact = 1 ;
if ( exists $ params - > { wildcards } and defined $ params - > { wildcards } ) {
if ( '1' eq $ params - > { wildcards }
or 'true' eq lc ( $ params - > { wildcards } ) ) {
$ exact = 0 ;
}
}
return $ exact ;
}
sub _apply_direction {
my $ self = shift ;
my % params = @ _ ;
@ -476,12 +365,12 @@ sub _get_call_rs {
params = > $ params ,
col = > 'me.start_time'
) ;
$ rs = $ self - > _ apply_caller(
$ rs = $ self - > apply_caller_filt er(
rs = > $ rs ,
params = > $ params ,
col = > 'me.source_cli'
) ;
$ rs = $ self - > _ apply_callee(
$ rs = $ self - > apply_callee_filter (
rs = > $ rs ,
params = > $ params ,
col = > 'me.destination_user_in'
@ -603,7 +492,7 @@ sub _get_voicemail_rs {
params = > $ params ,
col = > 'me.origtime'
) ;
$ rs = $ self - > _ apply_caller(
$ rs = $ self - > apply_caller_filt er(
rs = > $ rs ,
params = > $ params ,
col = > 'me.callerid'
@ -667,12 +556,12 @@ sub _get_sms_rs {
params = > $ params ,
col = > 'me.time'
) ;
$ rs = $ self - > _ apply_caller(
$ rs = $ self - > apply_caller_filt er(
rs = > $ rs ,
params = > $ params ,
col = > 'me.caller'
) ;
$ rs = $ self - > _ apply_callee(
$ rs = $ self - > apply_callee_filter (
rs = > $ rs ,
params = > $ params ,
col = > 'me.callee'
@ -737,12 +626,12 @@ sub _get_fax_rs {
params = > $ params ,
col = > 'me.time'
) ;
$ rs = $ self - > _ apply_caller(
$ rs = $ self - > apply_caller_filt er(
rs = > $ rs ,
params = > $ params ,
col = > 'me.caller'
) ;
$ rs = $ self - > _ apply_callee(
$ rs = $ self - > apply_callee_filter (
rs = > $ rs ,
params = > $ params ,
col = > 'me.callee'
@ -816,12 +705,12 @@ sub _get_xmpp_rs {
params = > $ params ,
col = > 'epoch'
) ;
$ rs = $ self - > _ apply_caller(
$ rs = $ self - > apply_caller_filt er(
rs = > $ rs ,
params = > $ params ,
col = > 'user'
) ;
$ rs = $ self - > _ apply_callee(
$ rs = $ self - > apply_callee_filter (
rs = > $ rs ,
params = > $ params ,
col = > 'with'