MT#55687 add ncos_set preferences support

* ncos_set preferences are now supported in the UI/API

Change-Id: I0e479712d3f27a6ae5f8b77f06c616406e1742f5
mr11.2
Kirill Solomko 2 years ago
parent 9254092a3f
commit 80bf560b8d

@ -2477,6 +2477,12 @@ sub load_preference_list :Private {
$c->stash(ncos_levels_rs => $ncos_levels_rs,
ncos_levels => [$ncos_levels_rs->all]);
my $ncos_sets_rs = $c->model('DB')
->resultset('ncos_sets')
->search_rs({ reseller_id => $reseller_id, });
$c->stash(ncos_sets_rs => $ncos_sets_rs,
ncos_sets => [$ncos_sets_rs->all]);
my $emergency_mapping_containers_rs = $c->model('DB')
->resultset('emergency_containers')
->search_rs({ reseller_id => $reseller_id, });

@ -468,6 +468,12 @@ sub load_preference_list :Private {
$c->stash(ncos_levels_rs => $ncos_levels_rs,
ncos_levels => [$ncos_levels_rs->all]);
my $ncos_sets_rs = $c->model('DB')
->resultset('ncos_sets')
->search_rs({ reseller_id => $correct_reseller_id, });
$c->stash(ncos_sets_rs => $ncos_sets_rs,
ncos_sets => [$ncos_sets_rs->all]);
my $emergency_mapping_containers_rs = $c->model('DB')
->resultset('emergency_containers')
->search_rs({ reseller_id => $correct_reseller_id, });

@ -2630,6 +2630,11 @@ sub load_preference_list :Private {
$c->stash(ncos_levels_rs => $ncos_levels_rs,
ncos_levels => [$ncos_levels_rs->all]);
my $ncos_sets_rs = $c->model('DB')
->resultset('ncos_sets')->search_rs({ reseller_id => $reseller_id, });
$c->stash(ncos_sets_rs => $ncos_sets_rs,
ncos_sets => [$ncos_sets_rs->all]);
my $emergency_mapping_containers_rs = $c->model('DB')
->resultset('emergency_containers')->search({ reseller_id => $reseller_id });
$c->stash(emergency_mapping_containers_rs => $emergency_mapping_containers_rs,

@ -758,6 +758,12 @@ sub load_preference_list :Private {
$c->stash(ncos_levels_rs => $ncos_levels_rs,
ncos_levels => [$ncos_levels_rs->all]);
my $ncos_sets_rs = $c->model('DB')
->resultset('ncos_sets')
->search_rs({ reseller_id => $reseller_id, });
$c->stash(ncos_sets_rs => $ncos_sets_rs,
ncos_sets => [$ncos_sets_rs->all]);
NGCP::Panel::Utils::Preferences::load_preference_list( c => $c,
pref_values => \%pref_values,
prof_pref => 1,

@ -39,6 +39,7 @@ sub field_list {
my $rwrs_rs = $row->{rwrs_rs};
my $hdrs_rs = $row->{hdrs_rs};
my $ncos_rs = $row->{ncos_rs};
my $ncos_sets_rs = $row->{ncos_sets_rs};
my $emergency_mapping_containers_rs = $row->{emergency_mapping_containers_rs};
my $sound_rs = $row->{sound_rs};
my $contract_sound_rs = $row->{contract_sound_rs};
@ -83,6 +84,17 @@ sub field_list {
type => 'Select',
options => \@options,
};
} elsif ($meta->attribute eq "ncos_set" ||
$meta->attribute eq "adm_ncos_set" ||
$meta->attribute eq "adm_cf_ncos_set") {
my @options = map {{label => $_->name, value => $_->id}}
defined $ncos_sets_rs ? $ncos_sets_rs->all : ();
unshift @options, {label => '', value => ''};
$field = {
name => $meta->attribute,
type => 'Select',
options => \@options,
};
} elsif ($meta->attribute eq "emergency_mapping_container") {
my @options = map {{label => $_->name, value => $_->id}}
defined $emergency_mapping_containers_rs ? $emergency_mapping_containers_rs->all : ();

@ -248,6 +248,25 @@ sub prepare_resource {
$processed = 1;
last SWITCH;
};
/^(adm_)?(cf_)?ncos_set_id$/ && do {
my $pref_name = $pref->attribute->attribute;
$pref_name =~ s/_id$//;
do { $processed = 1; last SWITCH; }
if($attr && !_check_profile($c, $pref_name, \%profile_attrs));
my $ncos = $schema->resultset('ncos_sets')->find({
id => $pref->value,
});
if($ncos) {
$resource->{$pref_name} = $ncos->name;
} else {
$c->log->error("no ncos set for '".$pref->attribute->attribute."' with value '".$pref->value."' found, although it's stored in preference id ".$pref->id);
# let it slip through
}
$processed = 1;
last SWITCH;
};
/^emergency_mapping_container_id$/ && do {
my $pref_name = $pref->attribute->attribute;
$pref_name =~ s/_id$//;
@ -573,6 +592,7 @@ sub update_preferences {
rewrite_caller_lnp_dpid rewrite_callee_lnp_dpid
cdr_export_sclidui_rwrs_id
ncos_id adm_ncos_id adm_cf_ncos_id
ncos_set_id adm_ncos_set_id adm_cf_ncos_set_id
emergency_mapping_container_id
sound_set contract_sound_set
allowed_ips_grp man_allowed_ips_grp
@ -645,7 +665,7 @@ sub update_preferences {
}
last SWITCH;
};
/^(adm_)?(cf_)?ncos$/ && do {
/^(adm_)?(cf_)?ncos(_set)?$/ && do {
unless(exists $resource->{$k}) {
my $rs = get_preference_rs($c, $TYPE_PREF_MAP->{$type}, $elem, $k . '_id');
last SWITCH unless $rs; # unknown resource, just ignore
@ -834,6 +854,25 @@ sub update_preferences {
}
last SWITCH;
};
/^(adm_)?(cf_)?ncos_set$/ && do {
my $pref_name = $pref . "_id";
my $ncos = $c->model('DB')->resultset('ncos_sets')->find({
name => $resource->{$pref},
reseller_id => $reseller_id,
});
unless($ncos) {
$c->log->error("no ncos set '".$resource->{$pref}."' for reseller id $reseller_id found");
&$err_code(HTTP_UNPROCESSABLE_ENTITY, "Unknown ncos_set '".$resource->{$pref}."'");
return;
}
my $rs = get_preference_rs($c, $TYPE_PREF_MAP->{$type}, $elem, $pref_name);
if($rs->first) {
$rs->first->update({ value => $ncos->id });
} else {
$rs->create({ value => $ncos->id });
}
last SWITCH;
};
/^emergency_mapping_container$/ && do {
my $pref_name = $pref . "_id";
my $container = $c->model('DB')->resultset('emergency_containers')->find({
@ -1334,6 +1373,24 @@ sub load_preference_list {
->find($pref_values->{adm_cf_ncos_id}) )) {
$pref->{adm_cf_ncos_id} = $tmp->id;
}
} elsif($pref->attribute eq "ncos_set") {
if ($pref_values->{ncos_set_id} &&
(my $tmp = $c->stash->{ncos_sets_rs}
->find($pref_values->{ncos_set_id}) )) {
$pref->{ncos_set_id} = $tmp->id;
}
} elsif($pref->attribute eq "adm_ncos_set") {
if ($pref_values->{adm_ncos_set_id} &&
(my $tmp = $c->stash->{ncos_sets_rs}
->find($pref_values->{adm_ncos_set_id}) )) {
$pref->{adm_ncos_set_id} = $tmp->id;
}
} elsif($pref->attribute eq "adm_cf_ncos_set") {
if ($pref_values->{adm_cf_ncos_set_id} &&
(my $tmp = $c->stash->{ncos_sets_rs}
->find($pref_values->{adm_cf_ncos_set_id}) )) {
$pref->{adm_cf_ncos_set_id} = $tmp->id;
}
} elsif($pref->attribute eq "emergency_mapping_container") {
if ($pref_values->{emergency_mapping_container_id} &&
(my $tmp = $c->stash->{emergency_mapping_containers_rs}
@ -1475,6 +1532,15 @@ sub create_preference_form {
if (defined $ncos_id_preference) {
$preselected_value = $ncos_id_preference->value;
}
} elsif ($c->stash->{preference_meta}->attribute =~ /^((adm_)?(cf_)?ncos_set)$/) {
my $ncos_id_preference = $pref_rs->search({
'attribute.attribute' => $1.'_id'
},{
join => 'attribute'
})->first;
if (defined $ncos_id_preference) {
$preselected_value = $ncos_id_preference->value;
}
} elsif ($c->stash->{preference_meta}->attribute eq "emergency_mapping_container") {
my $container_id_preference = $pref_rs->search({
'attribute.attribute' => 'emergency_mapping_container_id'
@ -1553,6 +1619,7 @@ sub create_preference_form {
rwrs_rs => $c->stash->{rwr_sets_rs},
hdrs_rs => $c->stash->{hdr_sets_rs},
ncos_rs => $c->stash->{ncos_levels_rs},
ncos_sets_rs => $c->stash->{ncos_sets_rs},
emergency_mapping_containers_rs => $c->stash->{emergency_mapping_containers_rs},
sound_rs => $c->stash->{sound_sets_rs},
contract_sound_rs => $c->stash->{contract_sound_sets_rs},
@ -1560,7 +1627,7 @@ sub create_preference_form {
});
$form->create_structure([$c->stash->{preference_meta}->attribute]);
# we have to translate this form separately since it bypasses caching in NGCP::Panel::Form
if ( $c->stash->{preference_meta}->attribute !~ '(ncos|sound_set|emergency_mapping_container)$' ) {
if ( $c->stash->{preference_meta}->attribute !~ '(ncos|ncos_set|sound_set|emergency_mapping_container)$' ) {
NGCP::Panel::Utils::I18N->translate_form($c, $form);
}
@ -1947,6 +2014,39 @@ sub create_preference_form {
}
$c->response->redirect($base_uri);
return 1;
} elsif ($attribute eq "ncos_set" || $attribute eq "adm_ncos_set" || $attribute eq "adm_cf_ncos_set") {
my $selected_set = $c->stash->{ncos_sets_rs}->find(
$form->field($attribute)->value
);
my $attribute_id = $c->model('DB')->resultset('voip_preferences')
->find({attribute => $attribute."_id"})->id;
try {
my $preference = $pref_rs->search({ attribute_id => $attribute_id });
if(!defined $selected_set) {
$preference->first->delete if $preference->first;
} elsif($preference->first) {
$preference->first->update({ value => $selected_set->id });
} else {
$preference->create({ value => $selected_set->id });
}
NGCP::Panel::Utils::Message::info(
c => $c,
data => \%log_data,
desc => $c->loc('Preference [_1] successfully updated', $attribute),
);
} catch($e) {
NGCP::Panel::Utils::Message::error(
c => $c,
error => $e,
data => \%log_data,
desc => $c->loc('Failed to update preference [_1]', $attribute),
);
$c->response->redirect($base_uri);
return 1;
}
$c->response->redirect($base_uri);
return 1;
} elsif ($attribute eq "emergency_mapping_container") {
my $selected_container = $c->stash->{emergency_mapping_containers_rs}->find(
$form->field($attribute)->value
@ -2765,7 +2865,7 @@ sub api_preferences_defs {
push @{ $fields->{enum_values} }, $efields;
}
}
if ($pref->attribute =~ m/^(cdr_export_sclidui_rwrs|rewrite_rule_set|ncos|adm_ncos|adm_cf_ncos|emergency_mapping_container|sound_set|contract_sound_set|header_rule_set)$/) {
if ($pref->attribute =~ m/^(cdr_export_sclidui_rwrs|rewrite_rule_set|ncos|adm_ncos|adm_cf_ncos|ncos_set|adm_ncos_set|adm_cf_ncos_set|emergency_mapping_container|sound_set|contract_sound_set|header_rule_set)$/) {
$fields->{data_type} = 'string';
}

@ -22,6 +22,7 @@
ELSE;
helper.base_uri = c.uri_for(contract.id,'preferences');
END;
helper.ncos_sets = ncos_sets;
helper.ncos_levels = ncos_levels;
helper.emergency_mapping_containers = emergency_mapping_containers;
helper.location_id = location_id;

@ -14,6 +14,7 @@
helper.base_uri = c.uri_for(domain.id,'preferences');
helper.rewrite_rule_sets = rwr_sets;
helper.header_rule_sets = hdr_sets;
helper.ncos_sets = ncos_sets;
helper.ncos_levels = ncos_levels;
helper.emergency_mapping_containers = emergency_mapping_containers;
helper.sound_sets = sound_sets;

@ -105,6 +105,27 @@
<option [% (r.adm_cf_ncos_id.defined && r.adm_cf_ncos_id == level.id) ? 'selected="selected"' : '' %]>[% level.level | html %]</option>
[% END -%]
</select>
[% ELSIF r.attribute == "ncos_set" -%]
<select disabled="disabled">
<option>&nbsp;</option>
[% FOR set IN helper.ncos_sets -%]
<option [% (r.ncos_set_id.defined && r.ncos_set_id == set.id) ? 'selected="selected"' : '' %]>[% set.name | html %]</option>
[% END -%]
</select>
[% ELSIF r.attribute == "adm_ncos_set" -%]
<select disabled="disabled">
<option>&nbsp;</option>
[% FOR set IN helper.ncos_sets -%]
<option [% (r.adm_ncos_set_id.defined && r.adm_ncos_set_id == set.id) ? 'selected="selected"' : '' %]>[% set.name | html %]</option>
[% END -%]
</select>
[% ELSIF r.attribute == "adm_cf_ncos_set" -%]
<select disabled="disabled">
<option>&nbsp;</option>
[% FOR set IN helper.ncos_sets -%]
<option [% (r.adm_cf_ncos_set_id.defined && r.adm_cf_ncos_set_id == set.id) ? 'selected="selected"' : '' %]>[% set.name | html %]</option>
[% END -%]
</select>
[% ELSIF r.attribute == "emergency_mapping_container" -%]
<select disabled="disabled">
<option>&nbsp;</option>

@ -13,6 +13,7 @@
helper.form = form;
helper.base_uri = c.uri_for_action('/subscriberprofile/preferences',[profile.profile_set.id, profile.id]);
helper.rewrite_rule_sets = rwr_sets;
helper.ncos_sets = ncos_sets;
helper.ncos_levels = ncos_levels;
helper.sound_sets = sound_sets;
helper.man_aip_grp_rs = man_aip_grp_rs;

@ -19,6 +19,7 @@
helper.base_uri = c.uri_for(subscriber.id,'preferences');
helper.rewrite_rule_sets = rwr_sets;
helper.header_rule_sets = hdr_sets;
helper.ncos_sets = ncos_sets;
helper.ncos_levels = ncos_levels;
helper.emergency_mapping_containers = emergency_mapping_containers;
helper.sound_sets = sound_sets;

Loading…
Cancel
Save