You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ngcp-panel/lib/NGCP/Panel/Role/API/PbxUsers.pm

101 lines
2.6 KiB

package NGCP::Panel::Role::API::PbxUsers;
use parent qw/NGCP::Panel::Role::API/;
use Sipwise::Base;
use NGCP::Panel::Utils::Generic qw(:all);
use NGCP::Panel::Utils::API;
use HTTP::Status qw(:constants);
sub item_name {
return 'pbxuser';
}
sub resource_name {
return 'pbxusers';
}
sub dispatch_path {
return '/api/pbxusers/';
}
sub relation {
return 'http://purl.org/sipwise/ngcp-api/#rel-pbxusers';
}
sub get_form {
my ($self, $c) = @_;
my $form = (NGCP::Panel::Form::get("NGCP::Panel::Form::Pbx::UserAPI", $c));
print "GOT FORM: $form\n";
return $form
}
sub _item_rs {
my ($self, $c, $type) = @_;
my $item_rs = $c->model('DB')->resultset('voip_subscribers')
->search({
'me.status' => { '!=' => 'terminated' },
'product.class' => 'pbxaccount',
'provisioning_voip_subscriber.is_pbx_group' => 0,
},{
join => [
{ 'contract' => 'contact' },
{ 'contract' => 'product'},
'provisioning_voip_subscriber',
],
});
if ($c->user->roles eq 'reseller' || $c->user->roles eq 'ccare') {
$item_rs = $item_rs->search({
'contact.reseller_id' => $c->user->reseller_id,
});
} elsif ($c->user->roles eq 'subscriberadmin') {
$item_rs = $item_rs->search({
'contract_id' => $c->user->account_id,
});
} elsif ($c->user->roles eq 'subscriber') {
$item_rs = $item_rs->search({
'contract_id' => $c->user->account_id,
});
}
return $item_rs;
}
sub resource_from_item {
my ($self, $c, $item, $form) = @_;
my %resource;
my $prov_sub = $item->provisioning_voip_subscriber;
$resource{id} = int($item->id);
if ($item->primary_number) {
$resource{primary_number}->{cc} = $item->primary_number->cc;
$resource{primary_number}->{ac} = $item->primary_number->ac;
$resource{primary_number}->{sn} = $item->primary_number->sn;
$resource{primary_number}->{number_id} = int($item->primary_number->id);
}
my $display_name_pref = NGCP::Panel::Utils::Preferences::get_usr_preference_rs(
c => $c,
attribute => 'display_name',
prov_subscriber => $prov_sub,
)->first;
$resource{display_name} = $display_name_pref ? $display_name_pref->value : undef;
$resource{pbx_extension} = $prov_sub->pbx_extension;
return unless $self->validate_form(
c => $c,
form => $form,
resource => \%resource,
run => 0,
);
return \%resource;
}
1;
# vim: set tabstop=4 expandtab: