diff --git a/lib/NGCP/Panel/Controller/Reseller.pm b/lib/NGCP/Panel/Controller/Reseller.pm index 140c899aab..fbea09d8a0 100644 --- a/lib/NGCP/Panel/Controller/Reseller.pm +++ b/lib/NGCP/Panel/Controller/Reseller.pm @@ -199,13 +199,15 @@ sub edit :Chained('base') :PathPart('edit') :Args(0) { $c->detach('/denied_page') if($c->user->read_only); + my $reseller = $c->stash->{reseller}->first; + my $posted = $c->request->method eq 'POST'; my $form = NGCP::Panel::Form::Reseller->new; # we need this in the ajax call to not filter it as used contract - $c->session->{edit_contract_id} = $c->stash->{reseller}->first->contract_id; + $c->session->{edit_contract_id} = $reseller->contract_id; - my $params = { $c->stash->{reseller}->first->get_inflated_columns }; + my $params = { $reseller->get_inflated_columns }; $params->{contract}{id} = delete $params->{contract_id}; $params = $params->merge($c->session->{created_objects}); $form->process( @@ -223,16 +225,11 @@ sub edit :Chained('base') :PathPart('edit') :Args(0) { $c->model('DB')->txn_do(sub { $form->params->{contract_id} = delete $form->params->{contract}{id}; delete $form->params->{contract}; - my $old_status = $c->stash->{reseller}->first->status; - $c->stash->{reseller}->first->update($form->params); - - if($c->stash->{reseller}->first->status ne $old_status) { - my $contract = $c->stash->{reseller}->first->contract; - $contract->update({ status => $c->stash->{reseller}->first->status }); - NGCP::Panel::Utils::Contract::recursively_lock_contract( - c => $c, - contract => $contract, - ); + my $old_status = $reseller->status; + $reseller->update($form->params); + + if($reseller->status ne $old_status) { + $self->_handle_reseller_status_change($c, $reseller); } }); @@ -269,25 +266,7 @@ sub terminate :Chained('base') :PathPart('terminate') :Args(0) { $reseller->update({ status => 'terminated' }); if($reseller->status ne $old_status) { - #delete contracts - my $contract = $reseller->contract; - $contract->update({ status => $reseller->status }); - NGCP::Panel::Utils::Contract::recursively_lock_contract( - c => $c, - contract => $contract, - ); - #delete admins - for my $admin($reseller->admins->all) { - $admin->delete; - } - #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; + $self->_handle_reseller_status_change($c,$reseller); } }); $c->flash(messages => [{type => 'success', text => 'Successfully terminated reseller'}]); @@ -298,6 +277,32 @@ sub terminate :Chained('base') :PathPart('terminate') :Args(0) { 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 admins + for my $admin($reseller->admins->all) { + $admin->delete; + } + #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; + } +} + sub details :Chained('base') :PathPart('details') :Args(0) { my ($self, $c) = @_; $c->stash(template => 'reseller/details.tt');