MT#10965 - Callforwards api DELETE fix to use callforwards instead of rewriterules, check for non-existing mapping auto removed by mysql

Change-Id: Id6fb16b15fae86b00ddf1e4ab590d43c05fe0e03
changes/84/784/2
Kirill Solomko 11 years ago
parent ee018bb44b
commit 8717f99396

@ -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;
}

@ -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
}

Loading…
Cancel
Save