From 84cc7c36c9b137dcb87e37ef36ca1f0e42305239 Mon Sep 17 00:00:00 2001 From: Andreas Granig Date: Mon, 5 May 2014 14:47:26 +0200 Subject: [PATCH] MT#6913 API: fix profile(_set) deletion. --- .../API/SubscriberProfileSetsItem.pm | 13 +++++-------- .../Controller/API/SubscriberProfilesItem.pm | 19 +++++++++++-------- lib/NGCP/Panel/Role/API/SubscriberProfiles.pm | 2 +- 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/lib/NGCP/Panel/Controller/API/SubscriberProfileSetsItem.pm b/lib/NGCP/Panel/Controller/API/SubscriberProfileSetsItem.pm index ae4c1e74dc..04230e1185 100644 --- a/lib/NGCP/Panel/Controller/API/SubscriberProfileSetsItem.pm +++ b/lib/NGCP/Panel/Controller/API/SubscriberProfileSetsItem.pm @@ -193,17 +193,14 @@ sub DELETE :Allow { my $item = $self->item_by_id($c, $id); last unless $self->resource_exists($c, subscriberprofileset => $item); - $c->model('DB')->resultset('contracts')->search({ - subscriber_email_template_id => $item->id, + $schema->resultset('provisioning_voip_subscribers')->search({ + profile_set_id => $item->id, })->update({ - subscriber_email_template_id => undef, - }); - $c->model('DB')->resultset('contracts')->search({ - passreset_email_template_id => $item->id, - })->update({ - passreset_email_template_id => undef, + profile_set_id => undef, + profile_id => undef, }); + $item->voip_subscriber_profiles->delete; $item->delete; $guard->commit; diff --git a/lib/NGCP/Panel/Controller/API/SubscriberProfilesItem.pm b/lib/NGCP/Panel/Controller/API/SubscriberProfilesItem.pm index af566fed56..963b07209b 100644 --- a/lib/NGCP/Panel/Controller/API/SubscriberProfilesItem.pm +++ b/lib/NGCP/Panel/Controller/API/SubscriberProfilesItem.pm @@ -174,17 +174,20 @@ sub DELETE :Allow { my $item = $self->item_by_id($c, $id); last unless $self->resource_exists($c, subscriberprofile => $item); - $c->model('DB')->resultset('contracts')->search({ - subscriber_email_template_id => $item->id, + $c->model('DB')->resultset('provisioning_voip_subscribers')->search({ + profile_id => $item->id, })->update({ - subscriber_email_template_id => undef, - }); - $c->model('DB')->resultset('contracts')->search({ - passreset_email_template_id => $item->id, - })->update({ - passreset_email_template_id => undef, + profile_id => undef, }); + if($item->set_default && $item->profile_set->voip_subscriber_profiles->count > 1) { + $item->profile_set->voip_subscriber_profiles->search({ + id => { '!=' => $item->id }, + })->first->update({ + set_default => 1, + }); + } + $item->delete; $guard->commit; diff --git a/lib/NGCP/Panel/Role/API/SubscriberProfiles.pm b/lib/NGCP/Panel/Role/API/SubscriberProfiles.pm index 1f1d88b368..81d1c25f65 100644 --- a/lib/NGCP/Panel/Role/API/SubscriberProfiles.pm +++ b/lib/NGCP/Panel/Role/API/SubscriberProfiles.pm @@ -137,7 +137,7 @@ sub update_item { set_default => 1, }); } elsif(!$item->set_default && $resource->{set_default}) { - $set->voip_subscriber_profiles->all->update({ + $set->voip_subscriber_profiles->update({ set_default => 0, }); }