TT#43561 /api/calllists add init_time field

* init_time field is added as a field as well
      as query parameters init_le,init_ge to query
      calls by the call initiation time

Change-Id: I6540d632e40d9f0fed6b8f50f126a977eb34e369
changes/48/23148/2
Kirill Solomko 8 years ago
parent b6c4129d8e
commit ecfe7f5a17

@ -208,6 +208,31 @@ sub query_params {
second => sub {},
},
},
{
param => 'init_ge',
description => 'Filter for calls initiated greater or equal the specified time stamp.',
query => {
first => sub {
my $q = shift;
my $dt = NGCP::Panel::Utils::DateTime::from_string($q);
{ 'me.init_time' => { '>=' => $dt->epoch } };
},
second => sub {},
},
},
{
param => 'init_le',
description => 'Filter for calls initiated lower or equal the specified time stamp.',
query => {
first => sub {
my $q = shift;
$q .= ' 23:59:59' if($q =~ /^\d{4}\-\d{2}\-\d{2}$/);
my $dt = NGCP::Panel::Utils::DateTime::from_string($q);
{ init_time => { '<=' => $dt->epoch } };
},
second => sub {},
},
},
{
param => 'call_id',
description => 'Filter for a particular call_id prefix and sort by call leg depth.',

@ -98,6 +98,15 @@ has_field 'type' => (
},
);
has_field 'init_time' => (
type => 'Text',
required => 1,
element_attr => {
rel => ['tooltip'],
title => ['The timestamp of the call initiation.']
},
);
has_field 'start_time' => (
type => 'Text',
required => 1,

@ -79,10 +79,14 @@ sub resource_from_item {
my $datetime_fmt = DateTime::Format::Strptime->new(
pattern => '%F %T',
);
my $start_time = NGCP::Panel::Utils::API::Calllist::apply_owner_timezone($self,$c,$item->start_time,$owner);
my $start_time = NGCP::Panel::Utils::API::Calllist::apply_owner_timezone($self,$c,$item->start_time,$owner);
$resource->{start_time} = $datetime_fmt->format_datetime($start_time);
$resource->{start_time} .= '.'.$start_time->millisecond if $start_time->millisecond > 0.0;
my $init_time = NGCP::Panel::Utils::API::Calllist::apply_owner_timezone($self,$c,$item->init_time,$owner);
$resource->{init_time} = $datetime_fmt->format_datetime($init_time);
$resource->{init_time} .= '.'.$init_time->millisecond if $init_time->millisecond > 0.0;
return $resource;
}

@ -62,6 +62,7 @@ $call_fields{destination_domain} = 'me.destination_domain';
$call_fields{call_type} = 'me.call_type';
$call_fields{call_status} = 'me.call_status';
$call_fields{init_time} = 'me.init_time';
$call_fields{start_time} = 'me.start_time';
$call_fields{duration} = 'me.duration';
@ -757,8 +758,8 @@ sub process_hal_resource {
my($self, $c, $item, $resource, $form) = @_;
my $schema = $c->model('DB');
# todo: mashal specific fields, per conversation event type ...
$c->log->debug(Dumper('item'));
$c->log->debug(Dumper($item));
#$c->log->debug(Dumper('item'));
#$c->log->debug(Dumper($item));
my ($item_mock_obj, $item_accessors_hash) = _get_item_object($c, $item);
if('call' eq $item->{type}){
my $owner = $self->get_owner_cached($c);
@ -816,8 +817,8 @@ sub process_hal_resource {
}elsif('xmpp' eq $item->{type}){
$resource = $item_accessors_hash;
}
$c->log->debug(Dumper('resource'));
$c->log->debug(Dumper($resource));
#$c->log->debug(Dumper('resource'));
#$c->log->debug(Dumper($resource));
$resource->{start_time} = undef;
if ($item_mock_obj->timestamp) {
my $datetime_fmt = DateTime::Format::Strptime->new(

@ -285,6 +285,7 @@ sub process_cdr_item {
$resource->{status} = $item->call_status;
$resource->{rating_status} = $item->rating_status;
$resource->{init_time} = $item->init_time;
$resource->{start_time} = $item->start_time;
$resource->{duration} = NGCP::Panel::Utils::DateTime::sec_to_hms($c,$item->duration,3);
$resource->{customer_cost} = $resource->{direction} eq "out" ?

Loading…
Cancel
Save