TT#178050 refactor /api/activesubscriberprefs impl

Change-Id: I5c5e9ad3bd0c2331883b6857a2c3fd92baf31995
mr11.0
Rene Krenn 4 years ago
parent dcae99bc65
commit 9d7990ef47

@ -92,82 +92,84 @@ sub prepare_resource {
my %profile_allowed_attrs; # for filtering subscriber attrs on its profile
my $has_profile = 0;
my $attr = 0;
if($type eq "subscribers") {
$prefs = $item->provisioning_voip_subscriber->voip_usr_preferences;
$blob_rs = $c->model('DB')->resultset('voip_usr_preferences_blob');
my $profile = $item->provisioning_voip_subscriber->voip_subscriber_profile;
if ($profile) {
$has_profile = 1;
%profile_allowed_attrs = map { $_ => 1 } $profile->profile_attributes->get_column('attribute_id')->all;
}
} elsif($type eq "profiles") {
$attr = 1;
%profile_attrs = map { $_ => 1 } $item->profile_attributes->get_column('attribute_id')->all;
$prefs = $item->voip_prof_preferences;
} elsif($type eq "domains") {
$prefs = $item->provisioning_voip_domain->voip_dom_preferences;
$blob_rs = $c->model('DB')->resultset('voip_dom_preferences_blob');
} elsif($type eq "peerings") {
$prefs = $item->voip_peer_preferences;
$blob_rs = $c->model('DB')->resultset('voip_peer_preferences_blob');
} elsif($type eq "resellers") {
$prefs = $item->reseller_preferences;
} elsif($type eq "contracts") {
$prefs = $item->voip_contract_preferences->search(
{ location_id => $c->request->param('location_id') || undef },
undef);
$blob_rs = $c->model('DB')->resultset('voip_contract_preferences_blob');
} elsif($type eq "pbxdevicemodels") {
$prefs = $item->voip_dev_preferences;
} elsif($type eq "pbxdeviceprofiles") {
$prefs = $item->voip_devprof_preferences;
} elsif($type eq "pbxdevices") {
$prefs = $item->voip_fielddev_preferences;
} elsif($type eq "active") {
my $sub_prefs = $item->provisioning_voip_subscriber->voip_usr_preferences->search(undef, {columns => ['value', 'attribute_id']});
if ($type eq "active") {
my $sub_prefs = $item->provisioning_voip_subscriber->voip_usr_preferences->search(undef,{
columns => [ 'value', 'attribute_id'],
});
my $profile = $item->provisioning_voip_subscriber->voip_subscriber_profile;
if ($profile) {
$has_profile = 1;
%profile_allowed_attrs = map { $_ => 1 } $profile->profile_attributes->get_column('attribute_id')->all;
}
my $dom_prefs = $item->domain->provisioning_voip_domain->voip_dom_preferences->search(
undef,
{
columns => ['value', 'attribute_id'],
result_class => $sub_prefs->result_class
}
);
my $dom_prefs = $item->domain->provisioning_voip_domain->voip_dom_preferences->search(undef,{
columns => ['value', 'attribute_id'],
result_class => $sub_prefs->result_class,
});
#search for location if IP is provided
my $location_id;
if ($c->request->param('location_ip')) {
my $location = $schema->resultset('voip_contract_locations')->search(
{
'voip_contract_location_blocks.ip' => $c->request->param('location_ip')
},
{
join => 'voip_contract_location_blocks'
}
)->first;
my $location = $schema->resultset('voip_contract_locations')->search({
'voip_contract_location_blocks.ip' => $c->request->param('location_ip')
},{
join => 'voip_contract_location_blocks'
})->first;
$location_id = $location->id if ($location);
}
my $ct_prefs = $item->contract->voip_contract_preferences->search(
{
location_id => $location_id || undef
},
{
columns => ['value', 'attribute_id'],
result_class => $sub_prefs->result_class
}
);
my $ct_prefs = $item->contract->voip_contract_preferences->search({
location_id => $location_id || undef
},{
columns => ['value', 'attribute_id'],
result_class => $sub_prefs->result_class,
});
$prefs = $sub_prefs->union($ct_prefs->search({attribute_id => {-not_in => [map {$_->get_column('attribute_id')} $sub_prefs->all]}}));
$prefs = $prefs->union($dom_prefs->search({attribute_id => {-not_in => [map {$_->get_column('attribute_id')} $prefs->all]}}));
$prefs = $prefs->search({
}, {
prefetch => 'attribute',
});
} else {
if($type eq "subscribers") {
$prefs = $item->provisioning_voip_subscriber->voip_usr_preferences;
$blob_rs = $c->model('DB')->resultset('voip_usr_preferences_blob');
my $profile = $item->provisioning_voip_subscriber->voip_subscriber_profile;
if ($profile) {
$has_profile = 1;
%profile_allowed_attrs = map { $_ => 1 } $profile->profile_attributes->get_column('attribute_id')->all;
}
} elsif($type eq "profiles") {
$attr = 1;
%profile_attrs = map { $_ => 1 } $item->profile_attributes->get_column('attribute_id')->all;
$prefs = $item->voip_prof_preferences;
} elsif($type eq "domains") {
$prefs = $item->provisioning_voip_domain->voip_dom_preferences;
$blob_rs = $c->model('DB')->resultset('voip_dom_preferences_blob');
} elsif($type eq "peerings") {
$prefs = $item->voip_peer_preferences;
$blob_rs = $c->model('DB')->resultset('voip_peer_preferences_blob');
} elsif($type eq "resellers") {
$prefs = $item->reseller_preferences;
} elsif($type eq "contracts") {
$prefs = $item->voip_contract_preferences->search(
{ location_id => $c->request->param('location_id') || undef },
undef);
$blob_rs = $c->model('DB')->resultset('voip_contract_preferences_blob');
} elsif($type eq "pbxdevicemodels") {
$prefs = $item->voip_dev_preferences;
} elsif($type eq "pbxdeviceprofiles") {
$prefs = $item->voip_devprof_preferences;
} elsif($type eq "pbxdevices") {
$prefs = $item->voip_fielddev_preferences;
}
$prefs = $prefs->search({
}, {
prefetch => 'attribute',
order_by => { '-asc' => 'me.id' },
});
}
$prefs = $prefs->search({
}, {
prefetch => 'attribute',
order_by => { '-asc' => 'me.id' },
});
my $resource;
foreach my $pref($prefs->all) {

Loading…
Cancel
Save