TT#119465 API callrecordings - searchable caller/callee

* Fetch recording_metakeys caller/callee for the certain record id(call).
  * Add caller/callee fields to the resource and form.
  * Frefetching recording_metakeys for the call recording.

Change-Id: I767ea32e19edfd7cbbc74956200343f680fdb2b4
mr10.3
Oleksandr Duts 3 years ago
parent d82d93da9d
commit 938eef9140

@ -55,6 +55,32 @@ sub query_params {
}
},
},
{
param => 'caller',
description => 'Filter by the caller number',
query => {
first => sub {
my $q = shift;
{
'recording_metakeys.key' => 'caller',
'recording_metakeys.value' => $q,
};
}
},
},
{
param => 'callee',
description => 'Filter by the callee number',
query => {
first => sub {
my $q = shift;
{
'recording_metakeys.key' => 'callee',
'recording_metakeys.value' => $q,
};
}
},
},
{
param => 'start_time',
description => 'Filter for callrecordings made at a later date than provided datetime.',

@ -46,6 +46,22 @@ has_field 'end_time' => (
},
);
has_field 'caller' => (
type => 'Text',
required => 0,
element_attr => {
rel => ['tooltip'],
},
);
has_field 'callee' => (
type => 'Text',
required => 0,
element_attr => {
rel => ['tooltip'],
},
);
1;
# vim: set tabstop=4 expandtab:

@ -40,9 +40,10 @@ sub validate_request {
sub _item_rs {
my ($self, $c) = @_;
my $item_rs = $c->model('DB')->resultset('recording_calls');
if($c->user->roles eq "admin") {
} elsif($c->user->roles eq "reseller") {
my $item_rs = $c->model('DB')->resultset('recording_calls')->search_rs(
undef, { prefetch => 'recording_metakeys' });
if($c->user->roles eq "reseller") {
my $res_rs = $c->model('DB')->resultset('voip_subscribers')->search({
'contact.reseller_id' => $c->user->reseller_id
@ -54,8 +55,6 @@ sub _item_rs {
status => { -in => [qw/completed confirmed/] },
'recording_metakeys.key' => 'uuid',
'recording_metakeys.value' => { -in => $res_rs->get_column('uuid')->as_query }
},{
join => 'recording_metakeys',
});
} elsif ($c->user->roles eq "subscriberadmin") {
@ -67,16 +66,12 @@ sub _item_rs {
status => { -in => [qw/completed confirmed/] },
'recording_metakeys.key' => 'uuid',
'recording_metakeys.value' => { -in => $res_rs->get_column('uuid')->as_query }
},{
join => 'recording_metakeys',
});
} elsif ($c->user->roles eq "subscriber") {
$item_rs = $item_rs->search({
status => { -in => [qw/completed confirmed/] },
'recording_metakeys.key' => 'uuid',
'recording_metakeys.value' => $c->user->uuid,
},{
join => 'recording_metakeys',
});
}
@ -87,10 +82,9 @@ sub _item_rs {
$item_rs = $item_rs->search({
'recording_metakeys.key' => 'uuid',
'recording_metakeys.value' => { -in => $res_rs->get_column('uuid')->as_query }
},{
join => 'recording_metakeys',
});
}
return $item_rs;
}
@ -118,6 +112,11 @@ sub resource_from_item {
$resource{status} = $item->status;
$resource{callid} = $item->call_id;
my $caller_meta_row = $item->recording_metakeys->search({key => 'caller'})->first;
$resource{caller} = $caller_meta_row ? $caller_meta_row->value : undef;
my $callee_meta_row = $item->recording_metakeys->search({key => 'callee'})->first;
$resource{callee} = $callee_meta_row ? $callee_meta_row->value : undef;
my $datetime_fmt = DateTime::Format::Strptime->new(
pattern => '%F %T',
);

Loading…
Cancel
Save