TT#64556 ngcp-fraud-notifier: use customer_id, avoid inmemory

Change-Id: I174678631e210ebae59810497eb28fcadffe2a32
changes/19/32319/5
Rene Krenn 7 years ago
parent 854d9ac402
commit 71d82ab76a

@ -75,7 +75,7 @@ sub load_config {
} }
sub get_data { sub get_data {
my ($uri, $link) = @_; my ($uri, $link, $code) = @_;
my $client = new NGCP::API::Client; my $client = new NGCP::API::Client;
$client->set_verbose($opts->{verbose}); $client->set_verbose($opts->{verbose});
$client->set_page_rows($page_size); $client->set_page_rows($page_size);
@ -89,6 +89,10 @@ sub get_data {
} elsif ($data) { } elsif ($data) {
push(@result,$data); push(@result,$data);
} }
if (defined $code and 'CODE' eq ref $code) {
&$code(\@result);
@result = ();
}
} }
return \@result; return \@result;
} }
@ -126,7 +130,7 @@ sub send_email {
my $template = get_email_template($event); my $template = get_email_template($event);
my $vars = { adminmail => $config->{adminmail}, my $vars = { adminmail => $config->{adminmail},
customer_id => $event->{id}, customer_id => $event->{contract_id},
interval => $event->{interval}, interval => $event->{interval},
interval_cost => sprintf('%.2f', $event->{interval_cost}/100), interval_cost => sprintf('%.2f', $event->{interval_cost}/100),
interval_limit => sprintf('%.2f', $event->{interval_limit}/100), interval_limit => sprintf('%.2f', $event->{interval_limit}/100),
@ -176,10 +180,8 @@ sub update_notify_status {
my $client = new NGCP::API::Client; my $client = new NGCP::API::Client;
$client->set_verbose($opts->{verbose}); $client->set_verbose($opts->{verbose});
my $id = sprintf("%d-%s-%s",
@{$event}{qw(id interval interval_date)});
my $now = strftime('%Y-%m-%d %H:%M:%S', localtime(time)); my $now = strftime('%Y-%m-%d %H:%M:%S', localtime(time));
my $uri = '/api/customerfraudevents/'.$id; my $uri = '/api/customerfraudevents/'.$event->{id};
my $data = [ { op => 'replace', my $data = [ { op => 'replace',
path => '/notify_status', path => '/notify_status',
value => 'notified' }, value => 'notified' },
@ -203,20 +205,22 @@ sub main {
check_params(); check_params();
load_config(); load_config();
my $events = get_data(sprintf('/api/customerfraudevents/?no_count=true&notify_status=%s', get_data(
'new'), sprintf('/api/customerfraudevents/?no_count=true&notify_status=%s','new'),'customerfraudevents', sub {
'customerfraudevents'); my $events = shift;
foreach my $event (@{$events}) { foreach my $event (@{$events}) {
if ($event->{interval_notify}) {
my $subscribers = get_data(sprintf('/api/subscribers/?customer_id=%d', my $subscribers = get_data(sprintf('/api/subscribers/?customer_id=%d',
$event->{id}), $event->{contract_id}),
'subscribers'); 'subscribers');
if ($event->{interval_notify}) { next unless scalar @$subscribers;
eval { eval {
send_email($event, $subscribers); send_email($event, $subscribers);
}; };
}
print $EVAL_ERROR if $EVAL_ERROR; print $EVAL_ERROR if $EVAL_ERROR;
} }
}
});
return; return;
} }

Loading…
Cancel
Save