ngcp-panel/lib/NGCP/Panel/Utils/API/Subscribers.pm

65 lines
1.7 KiB

package NGCP::Panel::Utils::API::Subscribers;
use strict;
use warnings;
use HTTP::Status qw(:constants);
sub get_active_subscriber{
my($api, $c, $id, $params) = @_;
my $sub_rs = $c->model('DB')->resultset('voip_subscribers')->search({
'me.id' => $id,
'me.status' => { '!=' => 'terminated' },
});
if($c->user->roles eq "admin") {
} elsif($c->user->roles eq "reseller") {
$sub_rs = $sub_rs->search({
'contact.reseller_id' => $c->user->reseller_id,
},{
join => { contract => 'contact' },
});
} elsif($c->user->roles eq "subscriberadmin") {
$sub_rs = $sub_rs->search({
'me.contract_id' => $c->user->account_id,
});
} elsif($c->user->roles eq "subscriber") {
$sub_rs = $sub_rs->search({
'me.uuid' => $c->user->uuid,
});
}
my $sub = $sub_rs->first;
unless($sub && $sub->provisioning_voip_subscriber) {
$c->log->error($params->{error_log} ? $params->{error_log} : "invalid subscriber_id '$id'"); # TODO: user, message, trace, ...
$api->error($c, HTTP_UNPROCESSABLE_ENTITY, $params->{error} ? $params->{error} : "No subscriber for subscriber_id found");
return;
}
return $sub;
}
1;
=head1 NAME
NGCP::Panel::Utils::API::Subscribers
=head1 DESCRIPTION
A temporary helper to manipulate subscribers related data in REST API modules
=head1 METHODS
=head2 get_active_subscriber
Get subscriber NGCP::Schema::Result object of the active subscriber by the mandatory form parameter subscriber_id.
=head1 AUTHOR
Irina Peshinskaya
=head1 LICENSE
This library is free software. You can redistribute it and/or modify
it under the same terms as Perl itself.
=cut
# vim: set tabstop=4 expandtab: