MT#20971 Add concurrent_max* preferences to device config variables

Change-Id: I045a12280896d24f6725435a80e048bed6c588d1
changes/63/7063/10
Irina Peshinskaya 9 years ago
parent 2b430bdd8d
commit 5415d6e0e6

@ -1327,63 +1327,41 @@ sub dev_field_config :Chained('/') :PathPart('device/autoprov/config') :Args() {
};
foreach my $line($linerange->autoprov_field_device_lines->search({ device_id => $dev->id })->all) {
my $sub = $line->provisioning_voip_subscriber;
my $display_name = NGCP::Panel::Utils::Preferences::get_usr_preference_rs(
c => $c,
prov_subscriber => $sub,
attribute => 'display_name',
);
if($display_name->first) {
$display_name = $display_name->first->value;
} else {
$display_name = $sub->username;
};
my $cc = NGCP::Panel::Utils::Preferences::get_usr_preference_rs(
c => $c,
prov_subscriber => $sub,
attribute => 'cc',
my %sub_preferences_vars = (
display_name => $sub->username,
enable_t38 => 0,
concurrent_max => 0,
concurrent_max_per_account => 0,
cc => '',
ac => '',
);
if($cc->first) {
$cc = $cc->first->value;
} else {
$cc = '';
}
my $ac = NGCP::Panel::Utils::Preferences::get_usr_preference_rs(
my $pref_rs = NGCP::Panel::Utils::Preferences::get_usr_preferences_rs(
c => $c,
prov_subscriber => $sub,
attribute => 'ac',
#attribute => [keys %sub_preferences_vars],
);
if($ac->first) {
$ac = $ac->first->value;
} else {
$ac = '';
my $preferences = get_inflated_columns_all($pref_rs, 'hash' => 'attribute', 'column' => 'value' );
foreach my $key (keys %sub_preferences_vars){
if(exists $preferences->{$key}){
$sub_preferences_vars{$key} = $preferences->{$key};
}
}
my $t38 = NGCP::Panel::Utils::Preferences::get_usr_preference_rs(
c => $c,
prov_subscriber => $sub,
attribute => 'enable_t38',
);
if($t38->first) {
$t38 = $t38->first->value;
} else {
$t38 = 0;
};
$sub_preferences_vars{displayname} = delete $sub_preferences_vars{display_name};
# TODO: only push password for private/shared line?
my $aliases = [ $sub->voip_dbaliases->search({ is_primary => 0 })->get_column("username")->all ];
my $primary = $sub->voip_dbaliases->search({ is_primary => 1 })->get_column("username")->first;
push @{ $range->{lines} }, {
alias_numbers => $aliases,
alias_numbers => $aliases,
primary_number => $primary,
extension => $sub->pbx_extension,
username => $sub->username,
domain => $sub->domain->domain,
password => $sub->password,
displayname => $display_name,
keynum => $line->key_num,
type => $line->line_type,
t38 => $t38,
cc => $cc,
ac => $ac,
extension => $sub->pbx_extension,
username => $sub->username,
domain => $sub->domain->domain,
password => $sub->password,
keynum => $line->key_num,
type => $line->line_type,
preferences => $preferences,
%sub_preferences_vars,
};
if(!$ldap_attr_set && $linerange->name eq "Full Keys" && $line->line_type eq "private") {
$vars->{ldap}->{dn} = "uid=".$sub->uuid . ",o=" . $sub->account_id . $vars->{ldap}->{dn};

@ -7,9 +7,9 @@ use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
$VERSION = 1.00;
@ISA = qw(Exporter);
@EXPORT = ();
@EXPORT_OK = qw(is_int is_integer is_decimal merge compare is_false is_true);
@EXPORT_OK = qw(is_int is_integer is_decimal merge compare is_false is_true get_inflated_columns_all);
%EXPORT_TAGS = ( DEFAULT => [qw(&is_int &is_integer &is_decimal &merge &compare &is_false &is_true)],
all => [qw(&is_int &is_integer &is_decimal &merge &compare &is_false &is_true)]);
all => [qw(&is_int &is_integer &is_decimal &merge &compare &is_false &is_true &get_inflated_columns_all)]);
use Hash::Merge;
use Data::Compare qw//;
@ -67,4 +67,34 @@ sub compare {
return Data::Compare::Compare(@_);
}
sub get_inflated_columns_all{
my ($rs,%params) = @_;
my ($res);
$rs->result_class('DBIx::Class::ResultClass::HashRefInflator');
if(my $hashkey_column = $params{hash}){
my %lres;
my $register_value = sub {
my($hash,$key,$value) = @_;
if(exists $hash->{$key}){
if('ARRAY' eq ref $hash->{$key}){
push @{$hash->{$key}}, $value;
}else{
$hash->{$key} = [$hash->{$key}, $value];
}
}else{
$hash->{$key} = $value;
}
};
my $hashvalue_column = $params{column};
foreach($rs->all){
$register_value->(\%lres,$_->{$hashkey_column}, $hashvalue_column ? $_->{$hashvalue_column} : $_);
}
$res = \%lres;
}else{
$res = [$rs->all];
}
return $res;
#return [ map { { $_->get_inflated_columns }; } $rs->all ];
}
1;

@ -775,6 +775,28 @@ sub set_rewrite_preferences {
}
sub get_usr_preferences_rs {
my %params = @_;
my $c = $params{c};
my $attribute = $params{attribute};
my $prov_subscriber = $params{prov_subscriber};
my $schema = $params{schema} // $c->model('DB');
my $get_rows = $params{get_rows};
my $pref_rs = $schema->resultset('voip_usr_preferences')->search({
'attribute.usr_pref' => 1,
$attribute ? ( 'attribute.attribute' => (('ARRAY' eq ref $attribute) ? { '-in' => $attribute } : $attribute ) ) : () ,
$prov_subscriber ? ('me.subscriber_id' => $prov_subscriber->id) : (),
},{
'+select' => ['attribute.attribute'],
'+as' => ['attribute'],
'join' => 'attribute',
});
return $pref_rs;
}
sub get_usr_preference_rs {
my %params = @_;
@ -971,6 +993,7 @@ sub get_provisoning_voip_subscriber_first_int_attr_value {
$e->rethrow;
}
}
sub api_preferences_defs{
my %params = @_;
@ -986,9 +1009,7 @@ sub api_preferences_defs{
for my $pref($preferences->all) {
my $fields = { $pref->get_inflated_columns };
# remove internal fields
for my $del(qw/type attribute expose_to_customer internal peer_pref usr_pref dom_pref contract_pref contract_location_pref prof_pref voip_preference_groups_id id modify_timestamp/) {
delete $fields->{$del};
}
delete @{$fields}{qw/type attribute expose_to_customer internal peer_pref usr_pref dom_pref contract_pref contract_location_pref prof_pref voip_preference_groups_id id modify_timestamp/};
$fields->{max_occur} = int($fields->{max_occur});
$fields->{read_only} = JSON::Types::bool($fields->{read_only});
if($fields->{data_type} eq "enum") {
@ -998,9 +1019,7 @@ sub api_preferences_defs{
$fields->{enum_values} = [];
foreach my $enum(@enums) {
my $efields = { $enum->get_inflated_columns };
for my $del(qw/id preference_id usr_pref prof_pref dom_pref peer_pref contract_pref contract_location_pref/) {
delete $efields->{$del};
}
delete @{$efields}{qw/id preference_id usr_pref prof_pref dom_pref peer_pref contract_pref contract_location_pref/};
$efields->{default_val} = JSON::Types::bool($efields->{default_val});
push @{ $fields->{enum_values} }, $efields;
}

Loading…
Cancel
Save