diff --git a/lib/NGCP/Panel/Controller/API/CallRecordingsItem.pm b/lib/NGCP/Panel/Controller/API/CallRecordingsItem.pm index 1c97879b23..3c68d06dd9 100644 --- a/lib/NGCP/Panel/Controller/API/CallRecordingsItem.pm +++ b/lib/NGCP/Panel/Controller/API/CallRecordingsItem.pm @@ -27,6 +27,7 @@ sub dispatch_path{ sub relation{ return 'http://purl.org/sipwise/ngcp-api/#rel-callrecordings'; } +use NGCP::Panel::Utils::Subscriber; __PACKAGE__->config( action => { @@ -103,12 +104,7 @@ sub DELETE :Allow { last unless $self->resource_exists($c, callrecording => $item); try { - foreach my $stream($item->recording_streams->all) { - unlink($stream->full_filename); - } - $item->recording_streams->delete; - $item->recording_metakeys->delete; - $item->delete; + NGCP::Panel::Utils::Subscriber::delete_callrecording( c => $c, recording => $item ); } catch($e) { $c->log->error("Failed to delete recording: $e"); $self->error($c, HTTP_INTERNAL_SERVER_ERROR, "Failed to delete recording."); @@ -116,7 +112,6 @@ sub DELETE :Allow { } - $item->delete; $guard->commit; $c->response->status(HTTP_NO_CONTENT); diff --git a/lib/NGCP/Panel/Controller/Subscriber.pm b/lib/NGCP/Panel/Controller/Subscriber.pm index e7228bb0d7..37ca00599b 100644 --- a/lib/NGCP/Panel/Controller/Subscriber.pm +++ b/lib/NGCP/Panel/Controller/Subscriber.pm @@ -3830,10 +3830,14 @@ sub delete_recording :Chained('recording') :PathPart('delete') :Args(0) { if(($c->user->roles eq "admin" || $c->user->roles eq "reseller") && $c->user->read_only); try { - $c->stash->{recording}->delete; + my $recording = $c->stash->{recording}; + my $data = { $recording->get_inflated_columns }; + $c->model('DB')->schema->txn_do( sub { + NGCP::Panel::Utils::Subscriber::delete_callrecording( c => $c, recording => $recording ); + }); NGCP::Panel::Utils::Message::info( c => $c, - data => { $c->stash->{recording}->get_inflated_columns }, + data => $data, desc => $c->loc('Successfully deleted recording'), ); } catch($e) { diff --git a/lib/NGCP/Panel/Utils/Subscriber.pm b/lib/NGCP/Panel/Utils/Subscriber.pm index b40273ed6f..7845adbc6f 100644 --- a/lib/NGCP/Panel/Utils/Subscriber.pm +++ b/lib/NGCP/Panel/Utils/Subscriber.pm @@ -1829,6 +1829,19 @@ sub get_subscriber_pbx_status{ } return 0; } +sub delete_callrecording { + my %params = @_; + my($recording) = @params{qw/recording/}; + + foreach my $stream($recording->recording_streams->all) { + #if we met some error deleting file - we will fail and transaction will be rollbacked + unlink($stream->full_filename); + } + $recording->recording_streams->delete; + $recording->recording_metakeys->delete; + $recording->delete; +} + 1; =head1 NAME