MT#7555 Properly terminate subscribers.

- Write end_huntgroup if a group
- Move numbers to pilot if it exists
gjungwirth/voicemail_number
Andreas Granig 12 years ago
parent 97b9185d69
commit 915cf7749a

@ -928,6 +928,11 @@ sub pbx_group_create :Chained('base') :PathPart('pbx/group/create') :Args(0) {
admin_default => 0,
preferences => $preferences,
);
NGCP::Panel::Utils::Events::insert(
c => $c, schema => $schema, type => 'start_huntgroup',
subscriber => $billing_subscriber, old_status => undef,
new_status => $billing_subscriber->provisioning_voip_subscriber->profile_id,
);
$c->session->{created_objects}->{group} = { id => $billing_subscriber->id };
});

@ -118,12 +118,9 @@ sub recursively_lock_contract {
for my $subscriber($contract->voip_subscribers->all) {
$subscriber->update({ status => $status });
if($status eq 'terminated') {
$subscriber->provisioning_voip_subscriber->delete
if($subscriber->provisioning_voip_subscriber);
$subscriber->voip_numbers->update_all({
reseller_id => undef,
subscriber_id => undef,
});
NGCP::Panel::Utils::Subscriber::terminate(
c => $c, subscriber => $subscriber,
);
} elsif($status eq 'locked') {
NGCP::Panel::Utils::Subscriber::lock_provisoning_voip_subscriber(
c => $c,

@ -676,12 +676,45 @@ sub terminate {
my $schema = $c->model('DB');
$schema->txn_do(sub {
if($subscriber->provisioning_voip_subscriber->is_pbx_group) {
my $prov_subscriber = $subscriber->provisioning_voip_subscriber;
if($prov_subscriber && $prov_subscriber->is_pbx_group) {
$schema->resultset('voip_pbx_groups')->search({
group_id => $subscriber->provisioning_voip_subscriber->id,
})->delete;
NGCP::Panel::Utils::Events::insert(
c => $c, schema => $schema, type => 'end_huntgroup',
subscriber => $subscriber,
old_status => $prov_subscriber->profile_id, new_status => undef,
);
}
if(!$prov_subscriber->is_pbx_pilot) {
my $pilot_rs = $schema->resultset('voip_subscribers')->search({
contract_id => $subscriber->contract_id,
status => { '!=' => 'terminated' },
'provisioning_voip_subscriber.is_pbx_pilot' => 1,
},{
join => 'provisioning_voip_subscriber',
});
if($pilot_rs->first) {
update_subadmin_sub_aliases(
schema => $schema,
subscriber => $subscriber,
contract_id => $subscriber->contract_id,
alias_selected => [], #none, thus moving them back to our subadmin
sadmin => $pilot_rs->first,
);
} else {
$subscriber->voip_numbers->update_all({
subscriber_id => undef,
reseller_id => undef,
});
}
} else {
$subscriber->voip_numbers->update_all({
subscriber_id => undef,
reseller_id => undef,
});
}
my $prov_subscriber = $subscriber->provisioning_voip_subscriber;
if($prov_subscriber) {
foreach my $groups($prov_subscriber->voip_pbx_groups->all) {
my $group_sub = $groups->group;
@ -696,20 +729,6 @@ sub terminate {
}
$prov_subscriber->delete;
}
if(!$prov_subscriber->admin && $c->stash->{admin_subscriber}) {
update_subadmin_sub_aliases(
schema => $schema,
subscriber => $subscriber,
contract_id => $subscriber->contract_id,
alias_selected => [], #none, thus moving them back to our subadmin
sadmin => $c->stash->{admin_subscriber},
);
} else {
$subscriber->voip_numbers->update_all({
subscriber_id => undef,
reseller_id => undef,
});
}
$subscriber->update({ status => 'terminated' });
});
}

Loading…
Cancel
Save