MT#15203 Allow adding alias numbers to pbx group

Change-Id: If1fa5574d28cd18df1790e0dd2eccff76b255894
changes/26/2826/8
Gerhard Jungwirth 10 years ago
parent e60f943030
commit 8c45fc5a7c

@ -1234,10 +1234,10 @@ sub pbx_group_create :Chained('base') :PathPart('pbx/group/create') :Args(0) {
}
my $posted = ($c->request->method eq 'POST');
$c->stash->{pilot} = $c->stash->{subscribers}->search({
my $pilot = $c->stash->{subscribers}->search({
'provisioning_voip_subscriber.is_pbx_pilot' => 1,
})->first;
unless($c->stash->{pilot}) {
unless($pilot) {
NGCP::Panel::Utils::Message->error(
c => $c,
error => 'cannot create pbx group without having a pilot subscriber',
@ -1268,7 +1268,6 @@ sub pbx_group_create :Chained('base') :PathPart('pbx/group/create') :Args(0) {
$schema->set_transaction_isolation('READ COMMITTED');
$schema->txn_do( sub {
my $preferences = {};
my $pilot = $c->stash->{pilot};
my $base_number = $pilot->primary_number;
if($base_number) {
@ -1360,6 +1359,15 @@ sub pbx_group_edit :Chained('pbx_group_base') :PathPart('edit') :Args(0) {
$form = NGCP::Panel::Form::Customer::PbxGroupEdit->new;
my $params = { $c->stash->{pbx_group}->provisioning_voip_subscriber->get_inflated_columns };
$params = $params->merge($c->session->{created_objects});
unless ($posted) {
NGCP::Panel::Utils::Subscriber::prepare_alias_select(
c => $c,
subscriber => $c->stash->{pbx_group},
params => $params,
);
}
$form->process(
posted => $posted,
params => $c->request->params,
@ -1385,23 +1393,36 @@ sub pbx_group_edit :Chained('pbx_group_base') :PathPart('edit') :Args(0) {
cloud_pbx_hunt_timeout => $form->values->{pbx_hunt_timeout},
}
);
my $e164;
my $sub = $c->stash->{pbx_group};
if(defined $form->values->{pbx_extension} &&
$form->values->{pbx_extension} ne $old_extension) {
my $sub = $c->stash->{pbx_group};
my $base_number = $c->stash->{pilot}->primary_number;
my $e164 = {
$e164 = {
cc => $sub->primary_number->cc,
ac => $sub->primary_number->ac,
sn => $base_number->sn . $form->values->{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 => $e164,
$e164 ? (primary_number => $e164) : (),
$c->user->roles eq 'subscriberadmin' ? () : (alias_numbers => $form->values->{alias_number}),
);
if(exists $form->values->{alias_select} && $c->stash->{pilot}) {
NGCP::Panel::Utils::Subscriber::update_subadmin_sub_aliases(
c => $c,
schema => $schema,
subscriber => $sub,
contract_id => $sub->contract_id,
alias_selected => decode_json($form->values->{alias_select}),
sadmin => $c->stash->{pilot},
);
}
});
NGCP::Panel::Utils::Message->info(
c => $c,

@ -9,16 +9,10 @@ has_field 'username' => (
label => 'Name',
);
has_field 'pbx_extension' => (
type => 'Text',
required => 1,
label => 'Extension',
);
has_block 'fields' => (
tag => 'div',
class => [qw/modal-body/],
render_list => [qw/username pbx_extension pbx_hunt_policy pbx_hunt_timeout/],
render_list => [qw/username pbx_extension pbx_hunt_policy pbx_hunt_timeout alias_number alias_number_add/],
);
sub validate_username {

@ -5,12 +5,19 @@ extends 'HTML::FormHandler';
use Moose::Util::TypeConstraints;
use HTML::FormHandler::Widget::Block::Bootstrap;
use NGCP::Panel::Field::PosInteger;
has '+widget_wrapper' => ( default => 'Bootstrap' );
has_field 'submitid' => ( type => 'Hidden' );
sub build_render_list {[qw/submitid fields actions/]}
sub build_form_element_class {[qw(form-horizontal)]}
sub build_form_element_class { [qw(form-horizontal)] }
with 'NGCP::Panel::Render::RepeatableJs';
has_field 'pbx_extension' => (
type => 'Text',
required => 1,
label => 'Extension',
);
has_field 'pbx_hunt_policy' => (
type => 'Select',
@ -42,7 +49,7 @@ has_field 'save' => (
has_block 'fields' => (
tag => 'div',
class => [qw/modal-body/],
render_list => [qw/pbx_hunt_policy pbx_hunt_timeout/],
render_list => [qw/pbx_extension pbx_hunt_policy pbx_hunt_timeout/],
);
has_block 'actions' => (

@ -3,25 +3,29 @@ package NGCP::Panel::Form::Customer::PbxGroupEdit;
use HTML::FormHandler::Moose;
extends 'NGCP::Panel::Form::Customer::PbxGroupBase';
has_field 'pbx_extension' => (
type => 'Text',
required => 1,
label => 'Extension',
has_field 'alias_number' => (
type => '+NGCP::Panel::Field::AliasNumber',
setup_for_js => 1,
do_wrapper => 1,
do_label => 0,
tags => {
controls_div => 1,
},
wrapper_class => [qw/hfh-rep/],
);
has_field 'alias_number_add' => (
type => 'AddElement',
repeatable => 'alias_number',
value => 'Add another number',
element_class => [qw/btn btn-primary pull-right/],
);
has_block 'fields' => (
tag => 'div',
class => [qw/modal-body/],
render_list => [qw/pbx_extension pbx_hunt_policy pbx_hunt_timeout/],
render_list => [qw/pbx_extension pbx_hunt_policy pbx_hunt_timeout alias_number alias_number_add/],
);
sub validate_username {
my ($self, $field) = @_;
unless($field->value =~ /^[a-zA-Z0-9_\-]+$/) {
$field->add_error("Invalid group name, must only contain letters, digits, - and _");
}
}
1;
# vim: set tabstop=4 expandtab:

@ -0,0 +1,46 @@
package NGCP::Panel::Form::Customer::PbxGroupEditSubadmin;
use HTML::FormHandler::Moose;
extends 'NGCP::Panel::Form::Customer::PbxGroupBase';
has_field 'alias_select' => (
type => '+NGCP::Panel::Field::DataTable',
label => 'Numbers',
do_label => 0,
do_wrapper => 0,
required => 0,
template => 'helpers/datatables_multifield.tt',
ajax_src => '/invalid',
table_titles => ['#', 'Number', 'Subscriber'],
table_fields => ['id', 'number', 'subscriber_username'],
);
has_block 'fields' => (
tag => 'div',
class => [qw/modal-body/],
render_list => [qw/pbx_extension pbx_hunt_policy pbx_hunt_timeout alias_select/],
);
sub field_list {
my ($self) = @_;
my $c = $self->ctx;
return unless($c);
if($self->field('alias_select')) {
my $sub;
if($c->stash->{pilot}) {
$sub = $c->stash->{pilot};
}
if($sub) {
$self->field('alias_select')->ajax_src(
$c->uri_for_action("/subscriber/aliases_ajax", [$sub->id])->as_string,
);
}
}
return;
}
1;
# vim: set tabstop=4 expandtab:

@ -6,8 +6,6 @@ use Moose::Util::TypeConstraints;
use HTML::FormHandler::Widget::Block::Bootstrap;
use NGCP::Panel::Field::PbxGroup;
has '+widget_wrapper' => ( default => 'Bootstrap' );
has_field 'submitid' => ( type => 'Hidden' );
sub build_render_list {[qw/submitid fields actions/]}

Loading…
Cancel
Save