|
|
|
|
@ -226,6 +226,7 @@ sub create_subscriber {
|
|
|
|
|
$params->{e164}{sn};
|
|
|
|
|
|
|
|
|
|
update_subscriber_numbers(
|
|
|
|
|
c => $c,
|
|
|
|
|
schema => $schema,
|
|
|
|
|
subscriber_id => $billing_subscriber->id,
|
|
|
|
|
reseller_id => $reseller->id,
|
|
|
|
|
@ -283,6 +284,11 @@ sub create_subscriber {
|
|
|
|
|
subscriber_id => $prov_subscriber->id,
|
|
|
|
|
is_primary => 1,
|
|
|
|
|
});
|
|
|
|
|
if($c->config->{numbermanagement}->{auto_allow_cli}) {
|
|
|
|
|
my $pref = NGCP::Panel::Utils::Preferences::get_usr_preference_rs(
|
|
|
|
|
c => $c, attribute => 'allowed_clis', prov_subscriber => $prov_subscriber);
|
|
|
|
|
$pref->create({ value => $cli }) if(defined $pref);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if($contract->subscriber_email_template_id) {
|
|
|
|
|
@ -328,6 +334,7 @@ sub create_subscriber {
|
|
|
|
|
}
|
|
|
|
|
if(@alias_numbers) {
|
|
|
|
|
update_subscriber_numbers(
|
|
|
|
|
c => $c,
|
|
|
|
|
schema => $schema,
|
|
|
|
|
subscriber_id => $billing_subscriber->id,
|
|
|
|
|
reseller_id => $reseller->id,
|
|
|
|
|
@ -418,6 +425,7 @@ sub update_pbx_group_prefs {
|
|
|
|
|
sub update_subscriber_numbers {
|
|
|
|
|
my %params = @_;
|
|
|
|
|
|
|
|
|
|
my $c = $params{c};
|
|
|
|
|
my $schema = $params{schema};
|
|
|
|
|
my $subscriber_id = $params{subscriber_id};
|
|
|
|
|
my $reseller_id = $params{reseller_id};
|
|
|
|
|
@ -429,6 +437,10 @@ sub update_subscriber_numbers {
|
|
|
|
|
});
|
|
|
|
|
my $prov_subs = $billing_subs->provisioning_voip_subscriber;
|
|
|
|
|
my @nums = ();
|
|
|
|
|
my $acli_pref;
|
|
|
|
|
$acli_pref = NGCP::Panel::Utils::Preferences::get_usr_preference_rs(
|
|
|
|
|
c => $c, attribute => 'allowed_clis', prov_subscriber => $prov_subs)
|
|
|
|
|
if($prov_subs && $c->config->{numbermanagement}->{auto_allow_cli});
|
|
|
|
|
|
|
|
|
|
if(exists $params{primary_number} && !defined $primary_number) {
|
|
|
|
|
$billing_subs->update({
|
|
|
|
|
@ -480,9 +492,13 @@ sub update_subscriber_numbers {
|
|
|
|
|
|
|
|
|
|
if(defined $number) {
|
|
|
|
|
my $cli = $number->cc . ($number->ac // '') . $number->sn;
|
|
|
|
|
my $old_cli = undef;
|
|
|
|
|
|
|
|
|
|
if(defined $billing_subs->primary_number
|
|
|
|
|
&& $billing_subs->primary_number_id != $number->id) {
|
|
|
|
|
$old_cli = $billing_subs->primary_number->cc .
|
|
|
|
|
($billing_subs->primary_number->ac // '') .
|
|
|
|
|
$billing_subs->primary_number->sn;
|
|
|
|
|
$billing_subs->primary_number->delete;
|
|
|
|
|
}
|
|
|
|
|
$billing_subs->update({
|
|
|
|
|
@ -503,6 +519,12 @@ sub update_subscriber_numbers {
|
|
|
|
|
is_primary => 1,
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
if(defined $acli_pref) {
|
|
|
|
|
$acli_pref->search({ value => $old_cli })->delete if($old_cli);
|
|
|
|
|
if(!$acli_pref->find({ value => $cli })) {
|
|
|
|
|
$acli_pref->create({ value => $cli });
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
update_voicemail_number(schema => $schema, subscriber => $billing_subs);
|
|
|
|
|
|
|
|
|
|
for my $cfset($prov_subs->voip_cf_destination_sets->all) {
|
|
|
|
|
@ -546,6 +568,7 @@ sub update_subscriber_numbers {
|
|
|
|
|
username => $old_cc . ($old_ac // '') . $sub->primary_number->sn,
|
|
|
|
|
})->delete;
|
|
|
|
|
update_subscriber_numbers(
|
|
|
|
|
c => $c,
|
|
|
|
|
schema => $schema,
|
|
|
|
|
subscriber_id => $sub->id,
|
|
|
|
|
reseller_id => $reseller_id,
|
|
|
|
|
@ -561,10 +584,10 @@ sub update_subscriber_numbers {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(defined $alias_numbers && ref($alias_numbers) eq 'ARRAY') {
|
|
|
|
|
|
|
|
|
|
my $number;
|
|
|
|
|
for my $alias(@$alias_numbers) {
|
|
|
|
|
|
|
|
|
|
my $old_cli;
|
|
|
|
|
my $old_number = $schema->resultset('voip_numbers')->search({
|
|
|
|
|
cc => $alias->{e164}->{cc},
|
|
|
|
|
ac => $alias->{e164}->{ac} // '',
|
|
|
|
|
@ -581,6 +604,7 @@ sub update_subscriber_numbers {
|
|
|
|
|
subscriber_id => $subscriber_id,
|
|
|
|
|
});
|
|
|
|
|
$number = $old_number;
|
|
|
|
|
$old_cli = $old_number->cc . ($old_number->ac // '') . $old_number->sn;
|
|
|
|
|
} else {
|
|
|
|
|
$number = $schema->resultset('voip_numbers')->create({
|
|
|
|
|
cc => $alias->{e164}->{cc},
|
|
|
|
|
@ -607,6 +631,12 @@ sub update_subscriber_numbers {
|
|
|
|
|
is_primary => 0,
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
if(defined $acli_pref) {
|
|
|
|
|
$acli_pref->search({ value => $old_cli })->delete if($old_cli);
|
|
|
|
|
if(!$acli_pref->find({ value => $cli })) {
|
|
|
|
|
$acli_pref->create({ value => $cli });
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
push @nums, $billing_subs->voip_numbers->get_column('id')->all;
|
|
|
|
|
@ -625,6 +655,9 @@ sub update_subscriber_numbers {
|
|
|
|
|
$prov_subs->voip_dbaliases->search({
|
|
|
|
|
username => { 'not in' => \@dbnums },
|
|
|
|
|
})->delete;
|
|
|
|
|
if(defined $acli_pref) {
|
|
|
|
|
$acli_pref->search({ value => { 'not in' => \@dbnums }})->delete;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
@ -633,6 +666,7 @@ sub update_subscriber_numbers {
|
|
|
|
|
sub update_subadmin_sub_aliases {
|
|
|
|
|
my %params = @_;
|
|
|
|
|
|
|
|
|
|
my $c = $params{c};
|
|
|
|
|
my $schema = $params{schema};
|
|
|
|
|
my $subscriber = $params{subscriber};
|
|
|
|
|
my $sadmin = $params{sadmin};
|
|
|
|
|
@ -645,12 +679,58 @@ sub update_subadmin_sub_aliases {
|
|
|
|
|
prefetch => 'subscriber',
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
my $acli_pref_sub;
|
|
|
|
|
$acli_pref_sub = NGCP::Panel::Utils::Preferences::get_usr_preference_rs(
|
|
|
|
|
c => $c, attribute => 'allowed_clis', prov_subscriber => $subscriber->provisioning_voip_subscriber)
|
|
|
|
|
if($subscriber->provisioning_voip_subscriber && $c->config->{numbermanagement}->{auto_allow_cli});
|
|
|
|
|
my $acli_pref_pilot;
|
|
|
|
|
$acli_pref_pilot = NGCP::Panel::Utils::Preferences::get_usr_preference_rs(
|
|
|
|
|
c => $c, attribute => 'allowed_clis', prov_subscriber => $sadmin->provisioning_voip_subscriber)
|
|
|
|
|
if($sadmin->provisioning_voip_subscriber && $c->config->{numbermanagement}->{auto_allow_cli});
|
|
|
|
|
|
|
|
|
|
for my $num ($num_rs->all) {
|
|
|
|
|
next if ($num->voip_subscribers->first); # is a primary number
|
|
|
|
|
|
|
|
|
|
my $cli = $num->cc . ($num->ac // '') . $num->sn;
|
|
|
|
|
|
|
|
|
|
my $tmpsubscriber;
|
|
|
|
|
if ($num->id ~~ $alias_selected) {
|
|
|
|
|
# assign number from someone to this subscriber
|
|
|
|
|
|
|
|
|
|
# since the number could be assigned to any sub within the pbx,
|
|
|
|
|
# we need to figure out the owner first and clear the allowed_clis pref from there
|
|
|
|
|
my $sub = $schema->resultset('voip_dbaliases')->find({
|
|
|
|
|
username => $cli,
|
|
|
|
|
domain_id => $subscriber->provisioning_voip_subscriber->domain_id,
|
|
|
|
|
});
|
|
|
|
|
$sub = $sub->subscriber if($sub);
|
|
|
|
|
my $acli_pref_tmpsub = NGCP::Panel::Utils::Preferences::get_usr_preference_rs(
|
|
|
|
|
c => $c, attribute => 'allowed_clis', prov_subscriber => $sub)
|
|
|
|
|
if($sub && $c->config->{numbermanagement}->{auto_allow_cli});
|
|
|
|
|
if(defined $acli_pref_tmpsub) {
|
|
|
|
|
$acli_pref_tmpsub->search({ value => $cli })->delete;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# then set allowed_clis for the new owner
|
|
|
|
|
if(defined $acli_pref_sub) {
|
|
|
|
|
if(!$acli_pref_sub->find({ value => $cli })) {
|
|
|
|
|
$acli_pref_sub->create({ value => $cli });
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$tmpsubscriber = $subscriber;
|
|
|
|
|
} elsif ($num->subscriber_id == $subscriber->id) { #unselected
|
|
|
|
|
} elsif ($num->subscriber_id == $subscriber->id) {
|
|
|
|
|
# move number back to pilot
|
|
|
|
|
|
|
|
|
|
# clear allowed_clis pref from owner and add it to pilot
|
|
|
|
|
if(defined $acli_pref_sub) {
|
|
|
|
|
$acli_pref_sub->search({ value => $cli })->delete;
|
|
|
|
|
}
|
|
|
|
|
if(defined $acli_pref_pilot) {
|
|
|
|
|
if(!$acli_pref_pilot->find({ value => $cli })) {
|
|
|
|
|
$acli_pref_pilot->create({ value => $cli });
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
$tmpsubscriber = $sadmin
|
|
|
|
|
} else {
|
|
|
|
|
next;
|
|
|
|
|
@ -659,7 +739,7 @@ sub update_subadmin_sub_aliases {
|
|
|
|
|
subscriber_id => $tmpsubscriber->id,
|
|
|
|
|
});
|
|
|
|
|
my $dbnum = $schema->resultset('voip_dbaliases')->find({
|
|
|
|
|
username => $num->cc . ($num->ac // '') . $num->sn,
|
|
|
|
|
username => $cli,
|
|
|
|
|
domain_id => $subscriber->provisioning_voip_subscriber->domain_id,
|
|
|
|
|
});
|
|
|
|
|
if($dbnum) {
|
|
|
|
|
@ -706,6 +786,7 @@ sub terminate {
|
|
|
|
|
});
|
|
|
|
|
if($pilot_rs->first) {
|
|
|
|
|
update_subadmin_sub_aliases(
|
|
|
|
|
c => $c,
|
|
|
|
|
schema => $schema,
|
|
|
|
|
subscriber => $subscriber,
|
|
|
|
|
contract_id => $subscriber->contract_id,
|
|
|
|
|
|