diff --git a/lib/NGCP/Panel/Controller/Peering.pm b/lib/NGCP/Panel/Controller/Peering.pm index fdbbae2b55..af4533b1ed 100644 --- a/lib/NGCP/Panel/Controller/Peering.pm +++ b/lib/NGCP/Panel/Controller/Peering.pm @@ -620,6 +620,15 @@ sub rules_create :Chained('rules_list') :PathPart('create') :Args(0) { if($posted && $form->validated) { try { $form->values->{callee_prefix} //= ''; + $form->values->{caller_pattern} //= ''; + $form->values->{callee_pattern} //= ''; + my $dup_item = $c->model('DB')->resultset('voip_peer_rules')->find({ + group_id => $c->stash->{group_result}->id, + callee_pattern => $form->values->{callee_pattern}, + caller_pattern => $form->values->{caller_pattern}, + callee_prefix => $form->values->{callee_prefix}, + }); + die("peering rule already exists") if $dup_item; $c->stash->{group_result}->voip_peer_rules->create($form->values); NGCP::Panel::Utils::Peering::_sip_lcr_reload(c => $c); NGCP::Panel::Utils::Message::info( @@ -694,7 +703,16 @@ sub rules_edit :Chained('rules_base') :PathPart('edit') :Args(0) { if($posted && $form->validated) { try { $form->values->{callee_prefix} //= ''; + $form->values->{caller_pattern} //= ''; + $form->values->{callee_pattern} //= ''; $form->values->{group_id} = $form->values->{group}{id}; + my $dup_item = $c->model('DB')->resultset('voip_peer_rules')->find({ + group_id => $form->values->{group_id}, + callee_pattern => $form->values->{callee_pattern}, + caller_pattern => $form->values->{caller_pattern}, + callee_prefix => $form->values->{callee_prefix}, + }); + die("peering rule already exists") if ($dup_item && $dup_item->id != $c->stash->{rule_result}->id); $c->stash->{rule_result}->update($form->values); NGCP::Panel::Utils::Peering::_sip_lcr_reload(c => $c); NGCP::Panel::Utils::Message::info(