From 0252d7f4d44ef775659353341ebd7d371631f58a Mon Sep 17 00:00:00 2001 From: ivan Date: Tue, 29 Nov 2011 01:55:15 +0000 Subject: [PATCH] add forward and spam setting to inter.net portal, RT#13656 --- FS/FS/ClientAPI/MyAccount.pm | 61 +++++++++++++++++++++++++++- FS/FS/ClientAPI_XMLRPC.pm | 1 + fs_selfservice/FS-SelfService/SelfService.pm | 1 + 3 files changed, 61 insertions(+), 2 deletions(-) diff --git a/FS/FS/ClientAPI/MyAccount.pm b/FS/FS/ClientAPI/MyAccount.pm index 2530725ef..6e56d782d 100644 --- a/FS/FS/ClientAPI/MyAccount.pm +++ b/FS/FS/ClientAPI/MyAccount.pm @@ -27,6 +27,7 @@ use FS::TicketSystem; use FS::ClientAPI_SessionCache; use FS::cust_svc; use FS::svc_acct; +use FS::svc_forward; use FS::svc_domain; use FS::svc_phone; use FS::svc_external; @@ -1503,7 +1504,8 @@ sub list_svcs { } sub _customer_svc_x { - my($custnum, $svcnum, $table) = @_; + my($custnum, $svcnum, $table) = (shift, shift, shift); + my $hashref = ref($svcnum) ? $svcnum : { 'svcnum' => $svcnum }; $custnum =~ /^(\d+)$/ or die "illegal custnum"; my $search = " AND custnum = $1"; @@ -1514,7 +1516,7 @@ sub _customer_svc_x { 'addl_from' => 'LEFT JOIN cust_svc USING ( svcnum ) '. 'LEFT JOIN cust_pkg USING ( pkgnum ) ',#. #'LEFT JOIN cust_main USING ( custnum ) ', - 'hashref' => { 'svcnum' => $svcnum, }, + 'hashref' => $hashref, 'extra_sql' => $search, #important } ); @@ -1536,6 +1538,61 @@ sub svc_status_html { } +sub acct_forward_info { + my $p = shift; + + my($context, $session, $custnum) = _custoragent_session_custnum($p); + return { 'error' => $session } if $context eq 'error'; + + my $svc_forward = _customer_svc_x( $custnum, + { 'srcsvc' => $p->{'svcnum'} }, + 'svc_forward', + ) + or return { 'error' => '', + 'dst' => '', + }; + + return { 'error' => '', + 'dst' => $svc_forward->dst || $svc_forward->dstsvc_acct->email, + }; + +} + +sub process_acct_forward { + my $p = shift; + + my($context, $session, $custnum) = _custoragent_session_custnum($p); + return { 'error' => $session } if $context eq 'error'; + + my $old = _customer_svc_x( $custnum, + { 'srcsvc' => $p->{'svcnum'} }, + 'svc_forward', + ); + + if ( $p->{'dst'} eq '' ) { + if ( $old ) { + my $error = $old->delete; + return { 'error' => $error }; + } + return { 'error' => '' }; + } + + my $new = new FS::svc_forward { 'srcsvc' => $p->{'svcnum'}, + 'dst' => $p->{'dst'}, + }; + + my $error; + if ( $old ) { + $new->svcnum($old->svcnum); + $error = $new->replace($old); + } else { + $error = $new->insert; + } + + return { 'error' => $error }; + +} + sub list_dsl_devices { my $p = shift; diff --git a/FS/FS/ClientAPI_XMLRPC.pm b/FS/FS/ClientAPI_XMLRPC.pm index d7528df67..3adff2f61 100644 --- a/FS/FS/ClientAPI_XMLRPC.pm +++ b/FS/FS/ClientAPI_XMLRPC.pm @@ -121,6 +121,7 @@ sub ss2clientapi { 'list_svcs' => 'MyAccount/list_svcs', #add to ss (added?) 'list_svc_usage' => 'MyAccount/list_svc_usage', 'svc_status_html' => 'MyAccount/svc_status_html', + 'acct_forward_info' => 'MyAccount/acct_forward_info', 'list_dsl_devices' => 'MyAccount/list_dsl_devices', 'add_dsl_device' => 'MyAccount/add_dsl_device', 'delete_dsl_device' => 'MyAccount/delete_dsl_device', diff --git a/fs_selfservice/FS-SelfService/SelfService.pm b/fs_selfservice/FS-SelfService/SelfService.pm index 02e068c43..95487d972 100644 --- a/fs_selfservice/FS-SelfService/SelfService.pm +++ b/fs_selfservice/FS-SelfService/SelfService.pm @@ -53,6 +53,7 @@ $socket .= '.'.$tag if defined $tag && length($tag); 'list_svcs' => 'MyAccount/list_svcs', #add to ss (added?) 'list_svc_usage' => 'MyAccount/list_svc_usage', 'svc_status_html' => 'MyAccount/svc_status_html', + 'acct_forward_info' => 'MyAccount/acct_forward_info', 'list_dsl_devices' => 'MyAccount/list_dsl_devices', 'add_dsl_device' => 'MyAccount/add_dsl_device', 'delete_dsl_device' => 'MyAccount/delete_dsl_device', -- 2.11.0