MT#7673 update voicemail number in webinterface

gjungwirth/voicemail_number
Gerhard Jungwirth 12 years ago
parent 1ecbd11b4f
commit d57aa0e7ff

@ -793,6 +793,11 @@ sub preferences_edit :Chained('preferences_base') :PathPart('edit') :Args(0) {
base_uri => $c->uri_for_action('/subscriber/preferences', [$c->req->captures->[0]]),
edit_uri => $c->uri_for_action('/subscriber/preferences_edit', $c->req->captures),
);
my $attr = $c->stash->{preference_meta}->attribute;
if ($c->req->method eq "POST" && $attr && ($attr eq "voicemail_echo_number" || $attr eq "cli")) {
NGCP::Panel::Utils::Subscriber::update_voicemail_number(
schema => $c->model('DB'), subscriber => $c->stash->{subscriber});
}
} catch($e) {
NGCP::Panel::Utils::Message->error(
c => $c,

@ -543,8 +543,9 @@ sub get_usr_preference_rs {
my $c = $params{c};
my $attribute = $params{attribute};
my $prov_subscriber = $params{prov_subscriber};
my $schema = $params{schema} // $c->model('DB');
my $pref_rs = $c->model('DB')->resultset('voip_preferences')->find({
my $pref_rs = $schema->resultset('voip_preferences')->find({
attribute => $attribute, 'usr_pref' => 1,
});
return unless($pref_rs);

@ -489,17 +489,11 @@ sub update_subscriber_numbers {
});
}
push @dbnums, $dbalias->id;
if(defined $prov_subs->voicemail_user) {
$prov_subs->voicemail_user->update({
mailbox => $cli,
});
}
update_voicemail_number(schema => $schema, subscriber => $billing_subs);
for my $cfset($prov_subs->voip_cf_destination_sets->all) {
for my $cf($cfset->voip_cf_destinations->all) {
if($cf->destination =~ /\@voicebox\.local$/) {
$cf->update({ destination => 'sip:vmu'.$cli.'@voicebox.local' });
} elsif($cf->destination =~ /\@fax2mail\.local$/) {
if($cf->destination =~ /\@fax2mail\.local$/) {
$cf->update({ destination => 'sip:'.$cli.'@fax2mail.local' });
} elsif($cf->destination =~ /\@conference\.local$/) {
$cf->update({ destination => 'sip:conf='.$cli.'@conference.local' });
@ -511,9 +505,7 @@ sub update_subscriber_numbers {
if (defined $billing_subs->primary_number) {
$billing_subs->primary_number->delete;
}
if(defined $prov_subs->voicemail_user) {
$prov_subs->voicemail_user->update({ mailbox => '0' });
}
update_voicemail_number(schema => $schema, subscriber => $billing_subs);
}
if ( (defined $old_cc && defined $old_sn)
@ -1026,6 +1018,54 @@ sub check_dset_autoattendant_status {
return $status;
}
# order: voicemail_echo_number, cli, primary_number, '0'
sub update_voicemail_number {
my (%params) = @_;
my $schema = $params{schema};
my $subscriber = $params{subscriber};
my $prov_subs = $subscriber->provisioning_voip_subscriber;
return unless $prov_subs;
my $voicemail_user = $prov_subs->voicemail_user;
my $new_cli;
my $echonumber_pref_rs = NGCP::Panel::Utils::Preferences::get_usr_preference_rs(
schema => $schema,
prov_subscriber => $prov_subs,
attribute => 'voicemail_echo_number'
);
my $cli_pref_rs = NGCP::Panel::Utils::Preferences::get_usr_preference_rs(
schema => $schema,
prov_subscriber => $prov_subs,
attribute => 'cli'
);
if (defined $echonumber_pref_rs->first) {
$new_cli = $echonumber_pref_rs->first->value;
} elsif (defined $cli_pref_rs->first) {
$new_cli = $cli_pref_rs->first->value;
} elsif (defined $subscriber->primary_number) {
my $n = $subscriber->primary_number;
$new_cli = $n->cc . ($n->ac // '') . $n->sn;
} else {
$new_cli = '0';
}
if (defined $voicemail_user) {
$voicemail_user->update({ mailbox => $new_cli });
}
for my $cfset ($prov_subs->voip_cf_destination_sets->all) {
for my $cf ($cfset->voip_cf_destinations->all) {
if($cf->destination =~ /\@voicebox\.local$/) {
$cf->update({ destination => 'sip:vmu'.$new_cli.'@voicebox.local' });
}
}
}
return;
}
1;
=head1 NAME

Loading…
Cancel
Save