MT#12637 Reseller termination via API PATCH should process reseller resources

Change-Id: I61bf179b66ad5b2b814efef7f83ed5c235416562
(cherry picked from commit 98b5168c9972d5fa8a3038b16da7b91aaf0fee8d)
changes/21/6421/13
Irina Peshinskaya 10 years ago
parent d086b7979f
commit 1d10d26802

@ -10,6 +10,7 @@ use NGCP::Panel::Utils::DateTime;
use NGCP::Panel::Utils::ValidateJSON qw();
use Path::Tiny qw(path);
use Safe::Isa qw($_isa);
use Clone qw/clone/;
require Catalyst::ActionRole::ACL;
require NGCP::Panel::Role::HTTPMethods;
require Catalyst::ActionRole::RequireSSL;
@ -123,6 +124,9 @@ sub PATCH :Allow {
my $reseller = $self->reseller_by_id($c, $id);
last unless $self->resource_exists($c, reseller => $reseller);
my $old_resource = $self->hal_from_reseller($c, $reseller, $form)->resource;
#without it error: The entity could not be processed: Modification of a read-only value attempted at /usr/share/perl5/JSON/Pointer.pm line 200, <$fh> line 1.\n
#But really I don't understand why $old_resource is read-only. resource is rw in Data::HAL
$old_resource = clone($old_resource);
my $resource = $self->apply_patch($c, $old_resource, $json);
last unless $resource;

@ -265,7 +265,7 @@ sub edit :Chained('base') :PathPart('edit') :Args(0) :Does(ACL) :ACLDetachTo('/d
$reseller->update($form->params);
if($reseller->status ne $old_status) {
$self->_handle_reseller_status_change($c, $reseller);
NGCP::Panel::Utils::Reseller::_handle_reseller_status_change($c, $reseller);
}
});
@ -312,7 +312,7 @@ sub terminate :Chained('base') :PathPart('terminate') :Args(0) :Does(ACL) :ACLDe
$reseller->update({ status => 'terminated' });
if($reseller->status ne $old_status) {
$self->_handle_reseller_status_change($c,$reseller);
NGCP::Panel::Utils::Reseller::_handle_reseller_status_change($c,$reseller);
}
});
NGCP::Panel::Utils::Message::info(
@ -330,33 +330,6 @@ sub terminate :Chained('base') :PathPart('terminate') :Args(0) :Does(ACL) :ACLDe
NGCP::Panel::Utils::Navigation::back_or($c, $c->uri_for('/reseller'));
}
sub _handle_reseller_status_change {
my ($self, $c, $reseller) = @_;
my $contract = $reseller->contract;
$contract->update({ status => $reseller->status });
NGCP::Panel::Utils::Contract::recursively_lock_contract(
c => $c,
contract => $contract,
);
if($reseller->status eq "terminated") {
#delete ncos_levels
$reseller->ncos_levels->delete_all;
#delete voip_number_block_resellers
$reseller->voip_number_block_resellers->delete_all;
#delete voip_sound_sets
$reseller->voip_sound_sets->delete_all;
#delete voip_rewrite_rule_sets
$reseller->voip_rewrite_rule_sets->delete_all;
#delete autoprov_devices
$reseller->autoprov_devices->delete_all;
$reseller->email_templates->delete_all;
$reseller->emergency_containers->emergency_mappings->delete_all;
$reseller->emergency_containers->delete_all;
}
}
sub details :Chained('base') :PathPart('details') :Args(0) :Does(ACL) :ACLDetachTo('/denied_page') :AllowedRole(admin) {
my ($self, $c) = @_;

@ -121,6 +121,9 @@ sub update_reseller {
return;
}
}
if($old_resource->{status} ne $resource->{status}) {
NGCP::Panel::Utils::Reseller::_handle_reseller_status_change($c, $reseller);
}
$reseller->update({
name => $resource->{name},

@ -127,6 +127,32 @@ sub check_reseller_delete_item {
return 1;
}
sub _handle_reseller_status_change {
my ($c, $reseller) = @_;
my $contract = $reseller->contract;
$contract->update({ status => $reseller->status });
NGCP::Panel::Utils::Contract::recursively_lock_contract(
c => $c,
contract => $contract,
);
if($reseller->status eq "terminated") {
#delete ncos_levels
$reseller->ncos_levels->delete_all;
#delete voip_number_block_resellers
$reseller->voip_number_block_resellers->delete_all;
#delete voip_sound_sets
$reseller->voip_sound_sets->delete_all;
#delete voip_rewrite_rule_sets
$reseller->voip_rewrite_rule_sets->delete_all;
#delete autoprov_devices
$reseller->autoprov_devices->delete_all;
$reseller->email_templates->delete_all;
$reseller->emergency_containers->emergency_mappings->delete_all;
$reseller->emergency_containers->delete_all;
}
}
1;

Loading…
Cancel
Save