You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
183 lines
5.6 KiB
183 lines
5.6 KiB
package NGCP::BulkProcessor::Projects::Migration::UPCAT::Preferences;
|
|
use strict;
|
|
|
|
## no critic
|
|
|
|
no strict 'refs';
|
|
|
|
use threads::shared qw();
|
|
#use List::Util qw();
|
|
|
|
use NGCP::BulkProcessor::Projects::Migration::UPCAT::Settings qw(
|
|
$dry
|
|
$skip_errors
|
|
|
|
);
|
|
|
|
use NGCP::BulkProcessor::Logging qw (
|
|
getlogger
|
|
processing_info
|
|
processing_debug
|
|
);
|
|
use NGCP::BulkProcessor::LogError qw(
|
|
rowprocessingerror
|
|
rowprocessingwarn
|
|
);
|
|
|
|
use NGCP::BulkProcessor::Dao::Trunk::billing::ncos_levels qw();
|
|
use NGCP::BulkProcessor::Dao::Trunk::billing::domains qw();
|
|
use NGCP::BulkProcessor::Dao::Trunk::billing::domain_resellers qw();
|
|
use NGCP::BulkProcessor::Dao::Trunk::billing::voip_subscribers qw();
|
|
|
|
#use NGCP::BulkProcessor::Projects::Migration::UPCAT::Dao::import::MtaSubscriber qw();
|
|
|
|
use NGCP::BulkProcessor::Dao::Trunk::provisioning::voip_subscribers qw();
|
|
use NGCP::BulkProcessor::Dao::Trunk::provisioning::voip_preferences qw();
|
|
use NGCP::BulkProcessor::Dao::Trunk::provisioning::voip_usr_preferences qw();
|
|
|
|
use NGCP::BulkProcessor::ConnectorPool qw(
|
|
get_xa_db
|
|
);
|
|
|
|
use NGCP::BulkProcessor::Projects::Migration::UPCAT::ProjectConnectorPool qw(
|
|
destroy_all_dbs
|
|
);
|
|
|
|
use NGCP::BulkProcessor::Utils qw(threadid);
|
|
|
|
require Exporter;
|
|
our @ISA = qw(Exporter);
|
|
our @EXPORT_OK = qw(
|
|
|
|
clear_subscriber_preferences
|
|
delete_subscriber_preference
|
|
set_subscriber_preference
|
|
get_subscriber_preference
|
|
|
|
);
|
|
|
|
my %get_preference_sub_names = (
|
|
voip_usr_preferences => 'findby_subscriberid_attributeid',
|
|
);
|
|
my %preference_id_cols = (
|
|
voip_usr_preferences => 'subscriber_id',
|
|
);
|
|
|
|
sub clear_subscriber_preferences {
|
|
my ($context,$subscriber_id,$attribute,$except_value) = @_;
|
|
return _clear_preferences($context,'voip_usr_preferences',$subscriber_id,$attribute,$except_value);
|
|
}
|
|
sub delete_subscriber_preference {
|
|
my ($context,$subscriber_id,$attribute,$value) = @_;
|
|
return _delete_preference($context,'voip_usr_preferences',$subscriber_id,$attribute,$value);
|
|
}
|
|
sub set_subscriber_preference {
|
|
my ($context,$subscriber_id,$attribute,$value) = @_;
|
|
return _set_preference($context,'voip_usr_preferences',$subscriber_id,$attribute,$value);
|
|
}
|
|
sub get_subscriber_preference {
|
|
my ($context,$subscriber_id,$attribute) = @_;
|
|
return _get_preference($context,'voip_usr_preferences',$subscriber_id,$attribute);
|
|
}
|
|
|
|
sub _clear_preferences {
|
|
my ($context,$pref_type,$id,$attribute,$except_value) = @_;
|
|
|
|
return &{'NGCP::BulkProcessor::Dao::Trunk::provisioning::' . $pref_type . '::delete_preferences'}($context->{db},
|
|
$id, $attribute->{id}, defined $except_value ? { 'NOT IN' => $except_value } : undef);
|
|
|
|
}
|
|
|
|
sub _delete_preference {
|
|
my ($context,$pref_type,$id,$attribute,$value) = @_;
|
|
|
|
return &{'NGCP::BulkProcessor::Dao::Trunk::provisioning::' . $pref_type . '::delete_preferences'}($context->{db},
|
|
$id, $attribute->{id}, { 'IN' => $value } );
|
|
|
|
}
|
|
|
|
sub _set_preference {
|
|
my ($context,$pref_type,$id,$attribute,$value) = @_;
|
|
|
|
if ($attribute->{max_occur} == 1) {
|
|
my $old_preferences = &{'NGCP::BulkProcessor::Dao::Trunk::provisioning::' . $pref_type . '::' . $get_preference_sub_names{$pref_type}}($context->{db},
|
|
$id,$attribute->{id});
|
|
if (defined $value) {
|
|
if ((scalar @$old_preferences) == 1) {
|
|
&{'NGCP::BulkProcessor::Dao::Trunk::provisioning::' . $pref_type . '::update_row'}($context->{db},{
|
|
id => $old_preferences->[0]->{id},
|
|
value => $value,
|
|
});
|
|
return $old_preferences->[0]->{id};
|
|
} else {
|
|
if ((scalar @$old_preferences) > 1) {
|
|
&{'NGCP::BulkProcessor::Dao::Trunk::provisioning::' . $pref_type . '::delete_preferences'}($context->{db},
|
|
$id,$attribute->{id});
|
|
}
|
|
return &{'NGCP::BulkProcessor::Dao::Trunk::provisioning::' . $pref_type . '::insert_row'}($context->{db},
|
|
attribute_id => $attribute->{id},
|
|
$preference_id_cols{$pref_type} => $id,
|
|
value => $value,
|
|
);
|
|
}
|
|
} else {
|
|
&{'NGCP::BulkProcessor::Dao::Trunk::provisioning::' . $pref_type . '::delete_preferences'}($context->{db},
|
|
$id,$attribute->{id});
|
|
return undef;
|
|
}
|
|
} else {
|
|
if (defined $value) {
|
|
return &{'NGCP::BulkProcessor::Dao::Trunk::provisioning::' . $pref_type . '::insert_row'}($context->{db},
|
|
attribute_id => $attribute->{id},
|
|
$preference_id_cols{$pref_type} => $id,
|
|
value => $value,
|
|
);
|
|
} else {
|
|
return undef;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
sub _get_preference {
|
|
my ($context,$pref_type,$id,$attribute) = @_;
|
|
|
|
my $preferences = &{'NGCP::BulkProcessor::Dao::Trunk::provisioning::' . $pref_type . '::' . $get_preference_sub_names{$pref_type}}($context->{db},
|
|
$id,$attribute->{id});
|
|
|
|
if ($attribute->{max_occur} == 1) {
|
|
return $preferences->[0];
|
|
} else {
|
|
return $preferences;
|
|
}
|
|
|
|
}
|
|
|
|
sub _error {
|
|
|
|
my ($context,$message) = @_;
|
|
$context->{error_count} = $context->{error_count} + 1;
|
|
rowprocessingerror($context->{tid},$message,getlogger(__PACKAGE__));
|
|
|
|
}
|
|
|
|
sub _warn {
|
|
|
|
my ($context,$message) = @_;
|
|
$context->{warning_count} = $context->{warning_count} + 1;
|
|
rowprocessingwarn($context->{tid},$message,getlogger(__PACKAGE__));
|
|
|
|
}
|
|
|
|
sub _info {
|
|
|
|
my ($context,$message,$debug) = @_;
|
|
if ($debug) {
|
|
processing_debug($context->{tid},$message,getlogger(__PACKAGE__));
|
|
} else {
|
|
processing_info($context->{tid},$message,getlogger(__PACKAGE__));
|
|
}
|
|
}
|
|
|
|
1;
|