MT#3955 API callcosts: filter by subscriber_id

ipeshinskaya/InvoiceTemplate5
Gerhard Jungwirth 11 years ago
parent ac74b9774d
commit 1eadcf7ea7

@ -85,13 +85,17 @@ sub GET :Allow {
my $query_string = $self->query_param_string($c);
return unless $query_string;
my (@embedded, @links);
my $error_flag = 0;
for my $dev ($field_devs->search({}, {order_by => {-asc => 'me.id'}})->all) {
push @embedded, $self->hal_from_item($c, $dev);
my $hal = $self->hal_from_item($c, $dev);
$error_flag = 1 unless $hal;
push @embedded, $hal;
push @links, Data::HAL::Link->new(
relation => 'ngcp:'.$self->resource_name,
href => sprintf('%s%d?%s', $self->dispatch_path, $dev->id, $query_string),
);
}
last if $error_flag;
push @links,
Data::HAL::Link->new(
relation => 'curies',

@ -52,6 +52,7 @@ sub GET :Allow {
last unless $self->resource_exists($c, deviceprofile => $field_dev);
my $hal = $self->hal_from_item($c, $field_dev);
last unless $hal;
my $response = HTTP::Response->new(HTTP_OK, undef, HTTP::Headers->new(
(map { # XXX Data::HAL must be able to generate links with multiple relations

@ -52,6 +52,7 @@ sub hal_from_item {
);
my $resource = $self->resource_from_item($c, $item);
return unless $resource;
$hal->resource($resource);
return $hal;
}
@ -62,12 +63,24 @@ sub resource_from_item {
my %resource;
my ($stime, $etime, $subscriber_id) = $self->get_query_params($c);
my $subscriber_uuid;
if ($subscriber_id) {
my $subscriber = $c->model('DB')->resultset('voip_subscribers')->find({ id => $subscriber_id });
unless ($subscriber) {
$self->error($c, HTTP_UNPROCESSABLE_ENTITY, "Invalid subscriber_id. Subscriber not found.");
$c->log->debug("invalid subscriber");
return;
}
$subscriber_uuid = $subscriber->uuid;
$c->log->debug("filtering by subscriber $subscriber_uuid");
}
my $zonecalls = NGCP::Panel::Utils::Contract::get_contract_zonesfees(
c => $c,
contract_id => $item->id,
stime => $stime,
etime => $etime,
subscriber_uuid => $subscriber_uuid,
);
$resource{customer_id} = int($item->id);

@ -293,12 +293,10 @@ sub get_contract_calls_rs{
sub get_contract_zonesfees_rs {
my %params = @_;
my $c = $params{c};
my $provider_id = $params{provider_id};
my $client_contact_id = $params{client_contact_id};
my $client_contract_id = $params{client_contract_id};
my $stime = $params{stime};
my $etime = $params{etime};
my $contract_id = $params{contract_id};
my $subscriber_uuid = $params{subscriber_uuid};
# should not be neccessary, done before
# $stime ||= NGCP::Panel::Utils::DateTime::current_local()->truncate( to => 'month' );
@ -315,9 +313,8 @@ sub get_contract_zonesfees_rs {
# GROUP BY b.zone
my $zonecalls_rs_out = $c->model('DB')->resultset('cdr')->search( {
# source_user_id => { 'in' => [ map {$_->uuid} @{$contract->{subscriber}} ] },
'call_status' => 'ok',
'source_user_id' => { '!=' => '0' },
'source_user_id' => ($subscriber_uuid || { '!=' => '0' }),
start_time =>
[ -and =>
{ '>=' => $stime->epoch},
@ -342,7 +339,7 @@ sub get_contract_zonesfees_rs {
my $zonecalls_rs_in = $c->model('DB')->resultset('cdr')->search( {
'call_status' => 'ok',
#'destination_user_id' => { '!=' => '0' },
'destination_user_id' => ($subscriber_uuid || { '!=' => '0' }),
start_time =>
[ -and =>
{ '>=' => $stime->epoch},
@ -371,13 +368,6 @@ sub get_contract_zonesfees_rs {
sub get_contract_zonesfees {
my %params = @_;
my $c = $params{c};
my $provider_id = $params{provider_id};
my $client_contact_id = $params{client_contact_id};
my $client_contract_id = $params{client_contract_id};
my $stime = $params{stime};
my $etime = $params{etime};
my $contract_id = $params{contract_id};
my ($zonecalls_rs_in, $zonecalls_rs_out) = get_contract_zonesfees_rs(%params);

Loading…
Cancel
Save