You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ngcp-panel/lib/NGCP/Panel/Controller/API/RewriteRuleSetsItem.pm

69 lines
1.8 KiB

package NGCP::Panel::Controller::API::RewriteRuleSetsItem;
use parent qw/NGCP::Panel::Role::EntitiesItem NGCP::Panel::Role::API::RewriteRuleSets/;
use Sipwise::Base;
use NGCP::Panel::Utils::Generic qw(:all);
use HTTP::Status qw(:constants);
use NGCP::Panel::Utils::Rewrite;
__PACKAGE__->set_config();
sub _set_config{
my ($self, $method) = @_;
return {
own_transaction_control => { ALL => 1 },
};
}
sub allowed_methods{
return [qw/GET OPTIONS HEAD PATCH PUT DELETE/];
}
sub delete_item {
my ($self, $c, $item) = @_;
my $guard = $c->model('DB')->txn_scope_guard;
{
try {
$item->voip_rewrite_rules->delete;
$item->delete;
} catch($e) {
$c->log->error("Failed to delete rewriteruleset with id '".$item->id."': $e");
$self->error($c, HTTP_INTERNAL_SERVER_ERROR, "Internal Server Error");
last;
}
$guard->commit;
NGCP::Panel::Utils::Rewrite::sip_dialplan_reload($c);
}
return;
}
sub update_item_model {
my ($self, $c, $item, $old_resource, $resource, $form) = @_;
my $id = delete $resource->{id};
my $guard = $c->model('DB')->txn_scope_guard;
{
try {
my $rewriterules = delete $resource->{rewriterules};
$item->update($resource);
if ($rewriterules) {
$self->update_rewriterules( $c, $item, $form, $rewriterules );
}
} catch($e) {
$c->log->error("Failed to update rewriterule with id '$id': $e");
$self->error($c, HTTP_INTERNAL_SERVER_ERROR, "Internal Server Error");
die;
}
$guard->commit;
NGCP::Panel::Utils::Rewrite::sip_dialplan_reload($c);
}
return $item;
}
1;
# vim: set tabstop=4 expandtab: