diff --git a/lib/NGCP/Panel/Controller/API/ContactsItem.pm b/lib/NGCP/Panel/Controller/API/ContactsItem.pm index 6f5466317d..9b679f0a8a 100644 --- a/lib/NGCP/Panel/Controller/API/ContactsItem.pm +++ b/lib/NGCP/Panel/Controller/API/ContactsItem.pm @@ -323,7 +323,15 @@ sub DELETE :Allow { { my $contact = $self->contact_by_id($c, $id); last unless $self->resource_exists($c, contact => $contact); - $contact->delete; + my $contract_count = $c->model('DB')->resultset('contracts')->search({ + contact_id => $id + }); + if($contract_count > 0) { + $self->error($c, HTTP_LOCKED, "Contact is still in use."); + last; + } else { + $contact->delete; + } $guard->commit; $c->cache->remove($c->request->uri->canonical->as_string); diff --git a/t/api-contacts.t b/t/api-contacts.t index 6a7623b7b1..7bd8d4b63f 100644 --- a/t/api-contacts.t +++ b/t/api-contacts.t @@ -244,6 +244,9 @@ my @allcontacts = (); $res = $ua->request($req); ok($res->code == 204, "check delete of contact"); } + $req = HTTP::Request->new('DELETE', $uri.'/api/contacts/1'); + $res = $ua->request($req); + ok($res->code == 423, "check delete of used contact"); } done_testing;