MT#6693 Fix subadmin subscriber editing.

agranig/subprof
Andreas Granig 12 years ago
parent a3f944e777
commit ceb53a1837

@ -1838,7 +1838,7 @@ sub edit_master :Chained('master') :PathPart('edit') :Args(0) :Does(ACL) :ACLDet
if($subscriber->provisioning_voip_subscriber->admin) {
if($c->user->roles eq 'subscriberadmin') {
$subadmin_pbx = 1;
$form = NGCP::Panel::Form::Customer::PbxExtensionSubscriberEditSubadmin->new(ctx => $c);
$form = NGCP::Panel::Form::Customer::PbxExtensionSubscriberEditSubadminNoGroup->new(ctx => $c);
} else {
$is_admin = 1;
$form = NGCP::Panel::Form::Customer::PbxSubscriberEdit->new(ctx => $c);
@ -1846,7 +1846,7 @@ sub edit_master :Chained('master') :PathPart('edit') :Args(0) :Does(ACL) :ACLDet
} else {
if($c->user->roles eq 'subscriberadmin') {
$subadmin_pbx = 1;
$form = NGCP::Panel::Form::Customer::PbxExtensionSubscriberEdit->new(ctx => $c);
$form = NGCP::Panel::Form::Customer::PbxExtensionSubscriberEditSubadmin->new(ctx => $c);
} else {
$is_admin = 1;
$form = NGCP::Panel::Form::Customer::PbxExtensionSubscriberEditAdmin->new(ctx => $c);
@ -2075,7 +2075,7 @@ sub edit_master :Chained('master') :PathPart('edit') :Args(0) :Does(ACL) :ACLDet
domain_id => $prov_subscriber->domain->id,
})->delete_all;
if ($subadmin_pbx) {
if ($subadmin_pbx && !$prov_subscriber->admin) {
NGCP::Panel::Utils::Subscriber::update_subadmin_sub_aliases(
schema => $schema,
subscriber_id => $subscriber->id,
@ -2088,12 +2088,15 @@ sub edit_master :Chained('master') :PathPart('edit') :Args(0) :Does(ACL) :ACLDet
}
if($subscriber->primary_number) {
say ">>>>>>>>>>>>>>>>> get old num";
my $old_number = {
cc => $subscriber->primary_number->cc,
ac => $subscriber->primary_number->ac,
sn => $subscriber->primary_number->sn,
};
say ">>>>>>>>>>>>>>>>> check pbx ext";
if($pbx_ext) {
say ">>>>>>>>>>>>>>>>> get pbx ext";
$form->params->{e164}{cc} = $subscriber->primary_number->cc;
$form->params->{e164}{ac} = $subscriber->primary_number->ac;
$form->params->{e164}{sn} = $base_number->sn . $form->params->{pbx_extension};
@ -2103,8 +2106,8 @@ sub edit_master :Chained('master') :PathPart('edit') :Args(0) :Does(ACL) :ACLDet
schema => $schema,
subscriber_id =>$subscriber->id,
reseller_id => $subscriber->contract->contact->reseller_id,
primary_number => $form->params->{e164},
$subadmin_pbx ? () : (alias_numbers => $form->values->{alias_number}),
exists $form->params->{e164} ? (primary_number => $form->params->{e164}) : (),
$subadmin_pbx && $prov_subscriber->admin ? () : (alias_numbers => $form->values->{alias_number}),
);
# update the primary number and the cloud_pbx_base_cli pref for all other subscribers
@ -2155,7 +2158,9 @@ sub edit_master :Chained('master') :PathPart('edit') :Args(0) :Does(ACL) :ACLDet
subscriber_id =>$subscriber->id,
reseller_id => $subscriber->contract->contact->reseller_id,
primary_number => $form->values->{e164},
$subadmin_pbx ? () : (alias_numbers => $form->values->{alias_number}),
# only update alias list if we're the subadmin but are not editing ourselves,
# otherwise we might whipe out our own numbers
$subadmin_pbx && $prov_subscriber->admin ? () : (alias_numbers => $form->values->{alias_number}),
);
}

@ -39,6 +39,16 @@ sub update_fields {
$c->uri_for_action('/customer/pbx_group_ajax', [$c->stash->{customer_id}])->as_string
);
print ">>>>>>>>>>>>>>>>>>>>>> PbxExtensionSubscriberEdit update_fields\n";
my $profile_set = $c->stash->{subscriber}->provisioning_voip_subscriber->voip_subscriber_profile_set;
print ">>>>>>>>>>>>>>>>>>>>>> got profile set?\n";
if($profile_set && $self->field('profile')) {
print ">>>>>>>>>>>>>>>>>>>>>> yes, got profile set\n";
$self->field('profile')->field('id')->ajax_src(
$c->uri_for_action('/subscriberprofile/profile_ajax', [$profile_set->id])->as_string
);
}
$self->field('password')->required(0); # optional on edit
}

@ -37,8 +37,11 @@ sub update_fields {
$c->uri_for_action('/customer/pbx_group_ajax', [$c->stash->{customer_id}])->as_string
);
print ">>>>>>>>>>>>>>>>>>>>>> PbxExtensionSubscriberEditSubadmin update_fields\n";
my $profile_set = $c->stash->{subscriber}->provisioning_voip_subscriber->voip_subscriber_profile_set;
if($profile_set) {
print ">>>>>>>>>>>>>>>>>>>>>> got profile set?\n";
if($profile_set && $self->field('profile')) {
print ">>>>>>>>>>>>>>>>>>>>>> yes, got profile set\n";
$self->field('profile')->field('id')->ajax_src(
$c->uri_for_action('/subscriberprofile/profile_ajax', [$profile_set->id])->as_string
);

@ -7,6 +7,7 @@ use Moose::Util::TypeConstraints;
use HTML::FormHandler::Widget::Block::Bootstrap;
use NGCP::Panel::Field::PbxGroup;
with 'NGCP::Panel::Render::RepeatableJs';
has '+widget_wrapper' => ( default => 'Bootstrap' );
has_field 'submitid' => ( type => 'Hidden' );

@ -314,6 +314,8 @@ sub update_pbx_group_prefs {
sub update_subscriber_numbers {
my %params = @_;
print ">>>>>>>>>>>>>>>>>>> update_subscriber_numbers\n";
my $schema = $params{schema};
my $subscriber_id = $params{subscriber_id};
my $reseller_id = $params{reseller_id};
@ -327,18 +329,20 @@ sub update_subscriber_numbers {
my @nums = (); my @dbnums = ();
if(exists $params{primary_number} && !defined $primary_number) {
print ">>>>>>>>>>>>>>>>> discard primary number\n";
$billing_subs->update({
primary_number_id => undef,
});
}
elsif(defined $primary_number) {
print ">>>>>>>>>>>>>>>>> update primary number\n";
my $old_cc;
my $old_ac;
my $old_sn;
if (defined $billing_subs->primary_number) {
$old_cc = $billing_subs->primary_number->cc;
$old_ac = $billing_subs->primary_number->ac;
$old_ac = ($billing_subs->primary_number->ac // '');
$old_sn = $billing_subs->primary_number->sn;
}
@ -467,6 +471,9 @@ sub update_subscriber_numbers {
if(defined $alias_numbers && ref($alias_numbers) eq 'ARRAY') {
print ">>>>>>>>>>>>>>>>>>> update alias numbers\n";
use Data::Printer; p $alias_numbers;
my $number;
for my $alias(@$alias_numbers) {
@ -514,17 +521,24 @@ sub update_subscriber_numbers {
}
push @dbnums, $dbalias->id;
}
} else {
push @nums, $billing_subs->voip_numbers->get_column('id')->all;
push @dbnums, $prov_subs->voip_dbaliases->get_column('id')->all;
}
push @nums, $billing_subs->primary_number_id
if($billing_subs->primary_number_id);
print ">>>>>>>>>>>>>< updating number list\n";
use Data::Printer; p @nums;
$billing_subs->voip_numbers->search({
id => { 'not in' => \@nums },
})->update_all({
})->update({
subscriber_id => undef,
reseller_id => undef,
});
if($prov_subs) {
print ">>>>>>>>>>>>>< updating alias number list\n";
use Data::Printer; p @nums;
$prov_subs->voip_dbaliases->search({
id => { 'not in' => \@dbnums },
})->delete;

Loading…
Cancel
Save