MT#10879 Handle deletion of primary number.

Change-Id: I837f6af3dfbaac645eaf95cb02095d4ff9d31938
changes/31/831/3
Andreas Granig 11 years ago
parent e388e6f6b1
commit e37dc3d40a

@ -2483,45 +2483,62 @@ sub edit_master :Chained('master') :PathPart('edit') :Args(0) :Does(ACL) :ACLDet
# update the primary number and the cloud_pbx_base_cli pref for all other subscribers
# if the primary number of the admin changed
$subscriber->discard_changes; # reload row because of potential new number
my $new_number = {
cc => $subscriber->primary_number->cc,
ac => $subscriber->primary_number->ac,
sn => $subscriber->primary_number->sn,
};
if($subscriber->provisioning_voip_subscriber->admin &&
!is_deeply($old_number, $new_number)) {
foreach my $sub($c->stash->{subscribers}->all, $c->stash->{pbx_groups}->all) {
my $base_pref = NGCP::Panel::Utils::Preferences::get_usr_preference_rs(
c => $c, attribute => 'cloud_pbx_base_cli',
prov_subscriber => $sub->provisioning_voip_subscriber);
my $val = $form->params->{e164}{cc} .
($form->params->{e164}{ac} // '') .
$form->params->{e164}{sn};
if($base_pref->first) {
$base_pref->first->update({ value => $val });
} else {
$base_pref->create({ value => $val });
}
if($sub->id == $subscriber->id) {
next;
}
unless(defined $sub->provisioning_voip_subscriber->pbx_extension) {
next;
if(defined $subscriber->primary_number) {
my $new_number = {
cc => $subscriber->primary_number->cc,
ac => $subscriber->primary_number->ac,
sn => $subscriber->primary_number->sn,
};
if($subscriber->provisioning_voip_subscriber->admin &&
!is_deeply($old_number, $new_number)) {
foreach my $sub($c->stash->{subscribers}->all, $c->stash->{pbx_groups}->all) {
my $base_pref = NGCP::Panel::Utils::Preferences::get_usr_preference_rs(
c => $c, attribute => 'cloud_pbx_base_cli',
prov_subscriber => $sub->provisioning_voip_subscriber);
my $val = $form->params->{e164}{cc} .
($form->params->{e164}{ac} // '') .
$form->params->{e164}{sn};
if($base_pref->first) {
$base_pref->first->update({ value => $val });
} else {
$base_pref->create({ value => $val });
}
if($sub->id == $subscriber->id) {
next;
}
unless(defined $sub->provisioning_voip_subscriber->pbx_extension) {
next;
}
my $num = {
cc => $form->params->{e164}{cc},
ac => $form->params->{e164}{ac},
sn => $form->params->{e164}{sn} . $sub->provisioning_voip_subscriber->pbx_extension,
};
NGCP::Panel::Utils::Subscriber::update_subscriber_numbers(
c => $c,
schema => $schema,
subscriber_id => $sub->id,
reseller_id => $sub->contract->contact->reseller_id,
primary_number => $num,
);
}
my $num = {
cc => $form->params->{e164}{cc},
ac => $form->params->{e164}{ac},
sn => $form->params->{e164}{sn} . $sub->provisioning_voip_subscriber->pbx_extension,
};
NGCP::Panel::Utils::Subscriber::update_subscriber_numbers(
c => $c,
schema => $schema,
subscriber_id => $sub->id,
reseller_id => $sub->contract->contact->reseller_id,
primary_number => $num,
);
}
} elsif(defined $subscriber->provisioning_voip_subscriber->pbx_extension) {
NGCP::Panel::Utils::Message->error(
c => $c,
error => $c->loc('CloudPBX subscriber must have a primary number'),
desc => $c->loc('Failed to update subscriber, CloudPBX must have a primary number'),
);
} else {
NGCP::Panel::Utils::Subscriber::update_subscriber_numbers(
c => $c,
schema => $schema,
subscriber_id => $subscriber->id,
reseller_id => $subscriber->contract->contact->reseller_id,
primary_number => undef,
);
}
} else {
NGCP::Panel::Utils::Subscriber::update_subscriber_numbers(

@ -473,6 +473,29 @@ sub update_subscriber_numbers {
primary_number_id => undef,
});
update_voicemail_number(schema => $schema, subscriber => $billing_subs);
if(defined $acli_pref) {
$acli_pref->delete;
}
my $cli_pref = NGCP::Panel::Utils::Preferences::get_usr_preference_rs(
c => $c, attribute => 'cli', prov_subscriber => $prov_subs);
if(defined $cli_pref) {
$cli_pref->delete;
}
for my $cfset($prov_subs->voip_cf_destination_sets->all) {
for my $cf($cfset->voip_cf_destinations->all) {
if($cf->destination =~ /\@fax2mail\.local$/) {
$cf->delete;
} elsif($cf->destination =~ /\@conference\.local$/) {
$cf->delete;
}
}
unless($cfset->voip_cf_destinations->count) {
$cfset->voip_cf_mappings->delete;
$cfset->delete;
}
}
} elsif(defined $primary_number) {
my $old_cc;
@ -514,6 +537,13 @@ sub update_subscriber_numbers {
subscriber_id => $subscriber_id,
});
}
my $cli_pref = NGCP::Panel::Utils::Preferences::get_usr_preference_rs(
c => $c, attribute => 'cli', prov_subscriber => $prov_subs);
if($cli_pref->first) {
$cli_pref->first->update({ value => $primary_number->{cc} . ($primary_number->{ac} // '') . $primary_number->{sn} });
} else {
$cli_pref->create({ value => $primary_number->{cc} . ($primary_number->{ac} // '') . $primary_number->{sn} });
}
}
if(defined $number) {

Loading…
Cancel
Save