diff --git a/lib/NGCP/Panel/Utils/Preferences.pm b/lib/NGCP/Panel/Utils/Preferences.pm index 902e42367b..7a05999fca 100644 --- a/lib/NGCP/Panel/Utils/Preferences.pm +++ b/lib/NGCP/Panel/Utils/Preferences.pm @@ -58,6 +58,11 @@ sub load_preference_list { $pref->{allowed_ips_rs} = $c->model('DB')->resultset('voip_allowed_ip_groups') ->search_rs({ group_id => $pref_values->{allowed_ips_grp} }); } + elsif($pref->attribute eq "man_allowed_ips") { + $pref->{man_allowed_ips_group_id} = $pref_values->{man_allowed_ips_grp}; + $pref->{man_allowed_ips_rs} = $c->model('DB')->resultset('voip_allowed_ip_groups') + ->search_rs({ group_id => $pref_values->{man_allowed_ips_grp} }); + } if($pref->data_type eq "enum") { $pref->{enums} = []; push @{ $pref->{enums} }, @@ -91,6 +96,8 @@ sub create_preference_form { my $aip_grp_rs; my $aip_group_id; + my $man_aip_grp_rs; + my $man_aip_group_id; my $preselected_value = undef; if ($c->stash->{preference_meta}->attribute eq "rewrite_rule_set") { @@ -133,6 +140,17 @@ sub create_preference_form { $aip_grp_rs = $c->model('DB')->resultset('voip_allowed_ip_groups') ->search({ group_id => $aip_group_id }); } + } elsif ($c->stash->{preference_meta}->attribute eq "man_allowed_ips") { + my $man_allowed_ips_grp = $pref_rs->search({ + 'attribute.attribute' => 'man_allowed_ips_grp' + },{ + join => 'attribute' + })->first; + if (defined $man_allowed_ips_grp) { + $man_aip_group_id = $man_allowed_ips_grp->value; + $man_aip_grp_rs = $c->model('DB')->resultset('voip_allowed_ip_groups') + ->search({ group_id => $man_aip_group_id }); + } } elsif ($c->stash->{preference_meta}->max_occur == 1) { $preselected_value = $c->stash->{preference_values}->[0]; } @@ -188,6 +206,31 @@ sub create_preference_form { group_id => $aip_group_id, ipnet => $form->field($attribute)->value, }); + } elsif ($attribute eq "man_allowed_ips") { + + unless (defined $man_aip_group_id) { + #TODO put this in a transaction + my $new_group = $c->model('DB')->resultset('voip_aig_sequence') + ->create({}); + my $man_aig_preference_id = $c->model('DB') + ->resultset('voip_preferences') + ->find({ attribute => 'man_allowed_ips_grp' }) + ->id; + $pref_rs->create({ + value => $new_group->id, + attribute_id => $man_aig_preference_id, + }); + $man_aip_group_id = $new_group->id; + $man_aip_grp_rs = $c->model('DB')->resultset('voip_allowed_ip_groups') + ->search({ group_id => $man_aip_group_id }); + $c->model('DB')->resultset('voip_aig_sequence')->search_rs({ + id => { '<' => $new_group->id }, + })->delete_all; + } + $man_aip_grp_rs->create({ + group_id => $man_aip_group_id, + ipnet => $form->field($attribute)->value, + }); } elsif ($c->stash->{preference_meta}->max_occur != 1) { $pref_rs->create({ attribute_id => $c->stash->{preference_meta}->id, @@ -298,12 +341,28 @@ sub create_preference_form { if (defined $allowed_ips_grp_preference); } } - + } + my $delete_man_aig_param = $c->request->params->{delete_man_aig}; + if($delete_man_aig_param) { + my $result = $man_aip_grp_rs->find($delete_man_aig_param); + if($result) { + $result->delete; + unless ($man_aip_grp_rs->first) { #its empty + my $man_allowed_ips_grp_preference = $pref_rs->search({ + 'attribute.attribute' => 'man_allowed_ips_grp' + },{ + join => 'attribute' + })->first; + $man_allowed_ips_grp_preference->delete + if (defined $man_allowed_ips_grp_preference); + } + } } $form->process if $posted; $c->stash(form => $form, - aip_grp_rs => $aip_grp_rs); + aip_grp_rs => $aip_grp_rs, + man_aip_grp_rs => $man_aip_grp_rs); } sub _set_rewrite_preferences { diff --git a/share/templates/domain/preferences.tt b/share/templates/domain/preferences.tt index 3481bdc099..790d310370 100644 --- a/share/templates/domain/preferences.tt +++ b/share/templates/domain/preferences.tt @@ -13,7 +13,7 @@ helper.rewrite_rule_sets = rwr_sets; helper.ncos_levels = ncos_levels; helper.sound_sets = sound_sets; - helper.aip_grp_rs = aip_grp_rs; + helper.man_aip_grp_rs = man_aip_grp_rs; helper.top_buttons = [ { name = 'Back', uri = c.uri_for(), icon = 'icon-arrow-left' }, diff --git a/share/templates/helpers/pref_table.tt b/share/templates/helpers/pref_table.tt index 90706fe103..c543566806 100644 --- a/share/templates/helpers/pref_table.tt +++ b/share/templates/helpers/pref_table.tt @@ -89,6 +89,10 @@ [% FOR ipnet IN r.allowed_ips_rs.all -%] [% ipnet.ipnet -%]
[% END -%] + [% ELSIF r.attribute == "man_allowed_ips" -%] + [% FOR ipnet IN r.man_allowed_ips_rs.all -%] + [% ipnet.ipnet -%]
+ [% END -%] [% ELSIF r.data_type == "boolean" %] [% helper.form.field("add").render %] + [% ELSIF helper.preference_meta.attribute == "man_allowed_ips" %] + [% ELSIF helper.preference_meta.max_occur != 1 %]