diff --git a/lib/NGCP/Panel/Controller/API/CallForwardsItem.pm b/lib/NGCP/Panel/Controller/API/CallForwardsItem.pm index 9def1581f6..3197a34bb0 100644 --- a/lib/NGCP/Panel/Controller/API/CallForwardsItem.pm +++ b/lib/NGCP/Panel/Controller/API/CallForwardsItem.pm @@ -173,13 +173,20 @@ sub DELETE :Allow { my ($self, $c, $id) = @_; my $guard = $c->model('DB')->txn_scope_guard; { - my $ruleset = $self->item_by_id($c, $id, "callforwards"); - last unless $self->resource_exists($c, ruleset => $ruleset); + my $callforward = $self->item_by_id($c, $id, "callforwards"); + last unless $self->resource_exists($c, callforward => $callforward); + my $form = $self->get_form($c); + my $old_resource = undef; + my $resource = $self->get_valid_put_data( + c => $c, + id => $id, + media_type => 'application/json', + ); + $resource //= {}; try { - $ruleset->voip_rewrite_rules->delete; - $ruleset->delete; + $callforward = $self->update_item($c, $callforward, $old_resource, $resource, $form); } catch($e) { - $c->log->error("Failed to delete rewriteruleset with id '$id': $e"); + $c->log->error("Failed to delete callforward with id '$id': $e"); $self->error($c, HTTP_INTERNAL_SERVER_ERROR, "Internal Server Error"); last; } diff --git a/lib/NGCP/Panel/Role/API/CallForwards.pm b/lib/NGCP/Panel/Role/API/CallForwards.pm index e8916b1f9c..d6bc7cc814 100644 --- a/lib/NGCP/Panel/Role/API/CallForwards.pm +++ b/lib/NGCP/Panel/Role/API/CallForwards.pm @@ -179,6 +179,7 @@ sub update_item { $dset->voip_cf_destinations->delete; #empty dset } else { $dset->delete; # delete dset + $mapping_count = 0; # auto deleted by mysql } } else { if ((defined $resource->{$type}{destinations}) && @{ $resource->{$type}{destinations}}) { @@ -190,7 +191,7 @@ sub update_item { if ((defined $resource->{$type}{times}) && @{ $resource->{$type}{times}}) { $tset->voip_cf_periods->delete; #empty tset } else { - $mapping->update({time_set_id => undef}); + $mapping_count && $mapping->update({time_set_id => undef}); if ($tset->name =~ m/^quickset_/) { $tset->delete; # delete tset }