MT#4025 Implement contract_sound_set preference.

Let the subscriber choose a contract-wide sound set e.g. for PBX announcements.
agranig/peering-route
Andreas Granig 12 years ago
parent 507f42c564
commit 1761945b8c

@ -347,7 +347,7 @@ sub load_preference_list :Private {
my $sound_sets_rs = $c->model('DB')
->resultset('voip_sound_sets')
->search_rs({ reseller_id => $correct_reseller_id, });
->search_rs({ reseller_id => $correct_reseller_id, contract_id => undef, });
$c->stash(sound_sets_rs => $sound_sets_rs,
sound_sets => [$sound_sets_rs->all]);

@ -1474,6 +1474,8 @@ sub preferences_callforward_delete :Chained('base') :PathPart('preferences/callf
sub load_preference_list :Private {
my ($self, $c) = @_;
my $reseller_id = $c->stash->{subscriber}->contract->contact->reseller_id;
my $usr_pref_values = $c->model('DB')
->resultset('voip_preferences')
->search({
@ -1490,20 +1492,29 @@ sub load_preference_list :Private {
}
my $rewrite_rule_sets_rs = $c->model('DB')
->resultset('voip_rewrite_rule_sets');
->resultset('voip_rewrite_rule_sets')->search({ reseller_id => $reseller_id });
$c->stash(rwr_sets_rs => $rewrite_rule_sets_rs,
rwr_sets => [$rewrite_rule_sets_rs->all]);
my $ncos_levels_rs = $c->model('DB')
->resultset('ncos_levels');
->resultset('ncos_levels')->search({ reseller_id => $reseller_id });
$c->stash(ncos_levels_rs => $ncos_levels_rs,
ncos_levels => [$ncos_levels_rs->all]);
my $sound_sets_rs = $c->model('DB')
->resultset('voip_sound_sets');
->resultset('voip_sound_sets')->search({
reseller_id => $reseller_id,
contract_id => undef });
$c->stash(sound_sets_rs => $sound_sets_rs,
sound_sets => [$sound_sets_rs->all]);
my $contract_sound_sets_rs = $c->model('DB')
->resultset('voip_sound_sets')->search({
reseller_id => $reseller_id,
contract_id => $c->stash->{subscriber}->contract_id });
$c->stash(contract_sound_sets_rs => $contract_sound_sets_rs,
contract_sound_sets => [$contract_sound_sets_rs->all]);
NGCP::Panel::Utils::Preferences::load_preference_list( c => $c,
pref_values => \%pref_values,
usr_pref => 1,

@ -37,6 +37,7 @@ sub field_list {
my $rwrs_rs = $row->{rwrs_rs};
my $ncos_rs = $row->{ncos_rs};
my $sound_rs = $row->{sound_rs};
my $contract_sound_rs = $row->{contract_sound_rs};
my $field;
if($meta->attribute eq "rewrite_rule_set") {
my @options = map {{label => $_->name, value => $_->id}}
@ -65,6 +66,15 @@ sub field_list {
type => 'Select',
options => \@options,
};
} elsif ($meta->attribute eq "contract_sound_set") {
my @options = map {{label => $_->name, value => $_->id}}
defined $contract_sound_rs ? $contract_sound_rs->all : ();
unshift @options, {label => '', value => ''};
$field = {
name => $meta->attribute,
type => 'Select',
options => \@options,
};
} elsif($meta->data_type eq "enum") {
my @options = map {{label => $_->label, value => $_->value}} @{ $enums };
$field = {

@ -172,6 +172,7 @@ sub create_preference_form {
rwrs_rs => $c->stash->{rwr_sets_rs},
ncos_rs => $c->stash->{ncos_levels_rs},
sound_rs => $c->stash->{sound_sets_rs},
contract_sound_rs => $c->stash->{contract_sound_sets_rs},
}],
});
$form->create_structure([$c->stash->{preference_meta}->attribute]);
@ -293,6 +294,24 @@ sub create_preference_form {
$preference->create({ value => $selected_set->id });
}
$c->flash(messages => [{type => 'success', text => "Preference $attribute successfully updated."}]);
$c->response->redirect($base_uri);
return;
} elsif ($attribute eq "contract_sound_set") {
my $selected_set = $c->stash->{contract_sound_sets_rs}->find(
$form->field($attribute)->value
);
my $preference = $pref_rs->search({
attribute_id => $c->stash->{preference_meta}->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 });
}
$c->flash(messages => [{type => 'success', text => "Preference $attribute successfully updated."}]);
$c->response->redirect($base_uri);
return;
@ -503,13 +522,13 @@ be set.
The updated preferences are called ncos_id and adm_ncos_id.
=head3 Special case sound_set
=head3 Special case sound_set and contract_sound_set
This is also similar to rewrite_rule_set and ncos. The stashed variables are
sound_sets_rs and sound_sets. In the template helper.sound_sets needs to
(contract_)sound_sets_rs and (contract_)sound_sets. In the template helper.(contract_)sound_sets needs to
be set.
The preference with the attribute sound_set will contain the id of a sound_set.
The preference with the attribute (contract_)sound_set will contain the id of a sound set.
=head3 Special case allowed_ips

@ -91,6 +91,13 @@
<option [% (r.value.defined && r.value == set.id) ? 'selected="selected"' : '' %]>[% set.name %]</option>
[% END -%]
</select>
[% ELSIF r.attribute == "contract_sound_set" -%]
<select disabled="disabled">
<option>&nbsp;</option>
[% FOR set IN helper.contract_sound_sets -%]
<option [% (r.value.defined && r.value == set.id) ? 'selected="selected"' : '' %]>[% set.name %]</option>
[% END -%]
</select>
[% ELSIF r.attribute == "allowed_ips" -%]
[% FOR ipnet IN r.allowed_ips_rs.all -%]
[% ipnet.ipnet -%]<br/>

@ -13,6 +13,7 @@
helper.rewrite_rule_sets = rwr_sets;
helper.ncos_levels = ncos_levels;
helper.sound_sets = sound_sets;
helper.contract_sound_sets = contract_sound_sets;
helper.aip_grp_rs = aip_grp_rs;
helper.man_aip_grp_rs = man_aip_grp_rs;
helper.skip_head = 1;

Loading…
Cancel
Save