MT#6195 API: ability to handle rules directly in rewriteruleset

agranig/selfsignup
Gerhard Jungwirth 12 years ago
parent edd904ce45
commit 31e6c5fa71

@ -184,6 +184,8 @@ sub POST :Allow {
last;
}
my $rewriterules = $resource->{rewriterules};
my $form = $self->get_form($c);
last unless $self->validate_form(
c => $c,
@ -209,6 +211,32 @@ sub POST :Allow {
last;
}
if ($rewriterules) {
my $i = 30;
if (ref($rewriterules) ne "ARRAY") {
$self->error($c, HTTP_INTERNAL_SERVER_ERROR, "rewriterules must be an array.");
}
for my $rule (@{ $rewriterules }) {
use DDP; p $rule;
my $rule_form = $self->get_form($c, "rules");
last unless $self->validate_form(
c => $c,
resource => $rule,
form => $rule_form,
);
try {
$ruleset->voip_rewrite_rules->create({
%{ $rule },
priority => $i++,
});
} catch($e) {
$c->log->error("failed to create rewriterules: $e"); # TODO: user, message, trace, ...
$self->error($c, HTTP_INTERNAL_SERVER_ERROR, "Failed to create rewrite rules.");
last;
}
}
}
$guard->commit;
$c->response->status(HTTP_CREATED);

@ -102,7 +102,7 @@ sub PATCH :Allow {
my $ruleset = $self->item_by_id($c, $id, "rulesets");
last unless $self->resource_exists($c, ruleset => $ruleset);
my $old_resource = { $ruleset->get_inflated_columns };
my $old_resource = $self->hal_from_item($c, $ruleset, "rewriterulesets")->resource;
my $resource = $self->apply_patch($c, $old_resource, $json);
last unless $resource;

@ -17,8 +17,11 @@ use NGCP::Panel::Form::RewriteRule::ResellerSet;
use NGCP::Panel::Form::RewriteRule::Rule;
sub get_form {
my ($self, $c) = @_;
my ($self, $c, $type) = @_;
if ($type && $type eq "rules") {
return NGCP::Panel::Form::RewriteRule::Rule->new;
}
if($c->user->roles eq "admin") {
return NGCP::Panel::Form::RewriteRule::AdminSet->new;
} else {
@ -29,8 +32,20 @@ sub get_form {
sub hal_from_item {
my ($self, $c, $item, $type) = @_;
my $form;
my $rwr_form = $self->get_form($c, "rules");
my %resource = $item->get_inflated_columns;
my @rewriterules;
for my $rule ( $item->voip_rewrite_rules->all ) {
my $rule_resource = { $rule->get_inflated_columns };
return unless $self->validate_form(
c => $c,
form => $rwr_form,
resource => $rule_resource,
run => 0,
);
push @rewriterules, $rule_resource;
}
my $hal = Data::HAL->new(
links => [
@ -55,6 +70,7 @@ sub hal_from_item {
resource => \%resource,
run => 0,
);
$resource{rewriterules} = \@rewriterules;
$hal->resource(\%resource);
return $hal;
}
@ -96,6 +112,17 @@ sub update_item {
}
}
if ($resource->{rewriterules}) {
$item->voip_rewrite_rules->delete;
my $i = 30;
for my $rule (@{ $resource->{rewriterules} }) {
$item->voip_rewrite_rules->create({
%{ $rule },
priority => $i++,
});
}
}
return unless $self->validate_form(
c => $c,
form => $form,

Loading…
Cancel
Save