diff --git a/lib/NGCP/Panel/Controller/SubscriberProfile.pm b/lib/NGCP/Panel/Controller/SubscriberProfile.pm index 7999650af8..dc292a01e1 100644 --- a/lib/NGCP/Panel/Controller/SubscriberProfile.pm +++ b/lib/NGCP/Panel/Controller/SubscriberProfile.pm @@ -6,7 +6,8 @@ BEGIN { extends 'Catalyst::Controller'; } use NGCP::Panel::Form::SubscriberProfile::SetAdmin; use NGCP::Panel::Form::SubscriberProfile::SetReseller; use NGCP::Panel::Form::SubscriberProfile::Profile; -use NGCP::Panel::Form::SubscriberProfile::SetClone; +use NGCP::Panel::Form::SubscriberProfile::SetCloneReseller; +use NGCP::Panel::Form::SubscriberProfile::SetCloneAdmin; use NGCP::Panel::Form::SubscriberProfile::ProfileClone; use NGCP::Panel::Utils::Message; use NGCP::Panel::Utils::Navigation; @@ -231,8 +232,14 @@ sub set_clone :Chained('set_base') :PathPart('clone') :Does(ACL) :ACLDetachTo('/ my $posted = ($c->request->method eq 'POST'); my $params = { $c->stash->{set}->get_inflated_columns }; + $params->{reseller}{id} = delete $params->{reseller_id}; $params = $params->merge($c->session->{created_objects}); - my $form = NGCP::Panel::Form::SubscriberProfile::SetClone->new; + my $form; + if($c->user->roles eq "admin") { + $form = NGCP::Panel::Form::SubscriberProfile::SetCloneAdmin->new; + } else { + $form = NGCP::Panel::Form::SubscriberProfile::SetCloneReseller->new; + } $form->process( posted => $posted, params => $c->request->params, @@ -248,6 +255,13 @@ sub set_clone :Chained('set_base') :PathPart('clone') :Does(ACL) :ACLDetachTo('/ try { my $schema = $c->model('DB'); $schema->txn_do(sub { + my $reseller_id; + if($c->user->roles eq "admin") { + $reseller_id = $form->params->{reseller}{id}; + } else { + $reseller_id = $c->stash->{set}->reseller_id, + } + delete $form->params->{reseller}; my $new_set = $schema->resultset('voip_subscriber_profile_sets')->create({ %{ $form->values }, reseller_id => $c->stash->{set}->reseller_id, diff --git a/lib/NGCP/Panel/Form/SubscriberProfile/SetCloneAdmin.pm b/lib/NGCP/Panel/Form/SubscriberProfile/SetCloneAdmin.pm new file mode 100644 index 0000000000..3a6a29d780 --- /dev/null +++ b/lib/NGCP/Panel/Form/SubscriberProfile/SetCloneAdmin.pm @@ -0,0 +1,24 @@ +package NGCP::Panel::Form::SubscriberProfile::SetCloneAdmin; + +use HTML::FormHandler::Moose; +extends 'NGCP::Panel::Form::SubscriberProfile::SetCloneReseller'; +use Moose::Util::TypeConstraints; + +has_field 'reseller' => ( + type => '+NGCP::Panel::Field::Reseller', + validate_when_empty => 1, + element_attr => { + rel => ['tooltip'], + title => ['The reseller this Subscriber Profile Set belongs to.'], + }, +); + +has_block 'fields' => ( + tag => 'div', + class => [qw/modal-body/], + render_list => [qw/reseller name description/], +); + +1; + +# vim: set tabstop=4 expandtab: diff --git a/lib/NGCP/Panel/Form/SubscriberProfile/SetClone.pm b/lib/NGCP/Panel/Form/SubscriberProfile/SetCloneReseller.pm similarity index 93% rename from lib/NGCP/Panel/Form/SubscriberProfile/SetClone.pm rename to lib/NGCP/Panel/Form/SubscriberProfile/SetCloneReseller.pm index 5bf9fdb3ec..4472dbac31 100644 --- a/lib/NGCP/Panel/Form/SubscriberProfile/SetClone.pm +++ b/lib/NGCP/Panel/Form/SubscriberProfile/SetCloneReseller.pm @@ -1,4 +1,4 @@ -package NGCP::Panel::Form::SubscriberProfile::SetClone; +package NGCP::Panel::Form::SubscriberProfile::SetCloneReseller; use HTML::FormHandler::Moose; extends 'HTML::FormHandler';