From 0a162423a6a60d016a3a3ec8e0b7c1afbc9c4bd2 Mon Sep 17 00:00:00 2001 From: Kirill Solomko Date: Mon, 14 Dec 2015 15:47:42 +0100 Subject: [PATCH] MT#14991 non-recursive subscriber details handling --- lib/admin/Controller/sipanalysis.pm | 2 +- lib/admin/Controller/subscriber.pm | 87 +++++++++++++++++++---------- root/tt/subscriber_detail.tt | 2 +- 3 files changed, 60 insertions(+), 31 deletions(-) diff --git a/lib/admin/Controller/sipanalysis.pm b/lib/admin/Controller/sipanalysis.pm index 25840f0..a125115 100644 --- a/lib/admin/Controller/sipanalysis.pm +++ b/lib/admin/Controller/sipanalysis.pm @@ -79,7 +79,7 @@ sub search : Local { # TODO: pagination goes here - $c->stash->{calls} = $calls; + $c->stash->{calls} = [ reverse @$calls ]; return; } diff --git a/lib/admin/Controller/subscriber.pm b/lib/admin/Controller/subscriber.pm index 64c7b50..17c6cff 100644 --- a/lib/admin/Controller/subscriber.pm +++ b/lib/admin/Controller/subscriber.pm @@ -161,8 +161,12 @@ sub detail : Local { $$regpeer{contacts_short} =~ s/>/\>/g; $$subscriber{registered_peer} = $regpeer; } + + # ksolomko no dropdown for alias numbers and allowed clis + $subscriber->{alias_numbers} = []; + $preferences->{allowed_clis} = []; - eval { $$subscriber{alias_numbers} = [ sort @{$$subscriber{alias_numbers}} ] }; + #eval { $$subscriber{alias_numbers} = [ sort @{$$subscriber{alias_numbers}} ] }; $c->stash->{subscriber} = $subscriber; $c->stash->{subscriber}{subscriber_id} = $subscriber_id; $c->stash->{subscriber}{is_locked} = $c->model('Provisioning')->localize($c, $c->view($c->config->{view})-> @@ -415,6 +419,16 @@ sub do_edit_aliases : Local { if(defined $aliaslist) { $$subscriber{alias_numbers} = [ grep { $$_{cc} ne $cc or $$_{ac} ne $ac or $$_{sn} ne $sn } @$aliaslist ]; } + $c->model('Provisioning')->call_prov( $c, 'billing', 'delete_alias_numbers', + { + username => $$subscriber{username}, + domain => $$subscriber{domain}, + alias_numbers => [ + { cc => $cc, ac => $ac, sn => $sn } + ] + }, + undef + ); } # input text fields to add new entry to list @@ -444,25 +458,20 @@ sub do_edit_aliases : Local { unless $checkresult; unless(keys %messages) { - my $aliaslist = $$subscriber{alias_numbers}; - $aliaslist = [] unless defined $aliaslist; - $$subscriber{alias_numbers} = [ @$aliaslist, { cc => $cc, ac => $ac, sn => $sn } ]; - } else { - $c->session->{aliasadd} = { cc => $cc, ac => $ac, sn => $sn }; + $c->model('Provisioning')->call_prov( $c, 'billing', 'add_alias_numbers', + { + username => $$subscriber{username}, + domain => $$subscriber{domain}, + alias_numbers => [ + { cc => $cc, ac => $ac, sn => $sn } + ] + }, + undef + ); } } - unless(keys %messages) { - $c->model('Provisioning')->call_prov( $c, 'billing', 'update_voip_account_subscriber', - { id => $acid, - subscriber => { username => $$subscriber{username}, - domain => $$subscriber{domain}, - alias_numbers => $$subscriber{alias_numbers}, - }, - }, - undef - ); - } else { + if (keys %messages) { $messages{aliaserr} = 'Client.Voip.InputErrorFound'; } @@ -699,6 +708,10 @@ sub preferences : Local { \$$subscriber{reminder} ); + # ksolomko no dropdown lists for these 2 prefs + $preferences->{allowed_clis} = []; + $subscriber->{alias_numbers} = []; + $c->stash->{cf_dsets} = $cf_dsets; $c->stash->{cf_tsets} = $cf_tsets; $c->stash->{cf_maps} = $cf_maps; @@ -908,7 +921,7 @@ sub update_preferences : Local { next unless $$db_pref{usr_pref}; delete $$preferences{$$db_pref{preference}}, next - if $$db_pref{read_only}; + if $$db_pref{read_only} or $$db_pref{preference} eq 'allowed_clis'; for (qw/cli user_cli emergency_cli/) { next unless (defined $c->request->params->{$_} and $c->request->params->{$_} ne ''); @@ -1392,7 +1405,7 @@ sub sipstats : Local { }, \$calls ); - $c->stash->{calls} = $calls; + $c->stash->{calls} = [ reverse @$calls ]; return; } @@ -2519,7 +2532,7 @@ sub do_edit_list : Local { $add =~ s/ //g; return unless $c->model('Provisioning')->call_prov( $c, 'voip', 'check_sip_username_shell_pattern', { pattern => $add }, \$checkresult); - if ($checkresult) { + if ($list eq 'outbound_prefixes' || $list eq 'rerouting_list' || $list eq 'custom_headers' || $checkresult) { my $blocklist = $$preferences{$list}; $blocklist = [] unless defined $blocklist; $blocklist = [ $blocklist ] unless ref $blocklist; @@ -2556,15 +2569,31 @@ sub do_edit_list : Local { } unless(keys %messages) { - $c->model('Provisioning')->call_prov( $c, 'voip', 'set_subscriber_preferences', - { username => $$subscriber{username}, - domain => $$subscriber{domain}, - preferences => { - $list => $$preferences{$list}, - }, - }, - undef - ); + if ($list eq 'allowed_clis') { + if ($add or $del) { + my $func_name = 'add_allowed_clis'; + $func_name = 'delete_allowed_clis' if $del; + $c->model('Provisioning')->call_prov( $c, 'voip', $func_name, + { username => $$subscriber{username}, + domain => $$subscriber{domain}, + $list => [$add || $del] + }, + undef + ); + } else { + $messages{msgadd} = 'Client.Function.Disabled'; + } + } else { + $c->model('Provisioning')->call_prov( $c, 'voip', 'set_subscriber_preferences', + { username => $$subscriber{username}, + domain => $$subscriber{domain}, + preferences => { + $list => $$preferences{$list}, + }, + }, + undef + ); + } } else { $messages{numerr} = 'Client.Voip.InputErrorFound'; } diff --git a/root/tt/subscriber_detail.tt b/root/tt/subscriber_detail.tt index 9bf128d..1c9e387 100644 --- a/root/tt/subscriber_detail.tt +++ b/root/tt/subscriber_detail.tt @@ -36,7 +36,7 @@

Master Data

- [% UNLESS Catalyst.session.admin.read_only %] + [% IF 0 %]
[% IF subscriber.subscriber_id && !edit_subscriber %] Edit