From f633e15977df07607b8b91782237f919328e6cc9 Mon Sep 17 00:00:00 2001 From: Christopher Burger Date: Mon, 21 Aug 2017 11:42:36 -0400 Subject: [PATCH] RT# 27969 - created 3 new api functions to add, edit and list advertising sources --- FS/FS/API.pm | 58 +++++++++++++++++++++++++++++++++- bin/xmlrpc-advertising_sources-add.pl | 28 ++++++++++++++++ bin/xmlrpc-advertising_sources-edit.pl | 30 ++++++++++++++++++ bin/xmlrpc-advertising_sources-list.pl | 22 +++++++++++++ 4 files changed, 137 insertions(+), 1 deletion(-) create mode 100755 bin/xmlrpc-advertising_sources-add.pl create mode 100755 bin/xmlrpc-advertising_sources-edit.pl create mode 100755 bin/xmlrpc-advertising_sources-list.pl diff --git a/FS/FS/API.pm b/FS/FS/API.pm index 39a959ade..29b611832 100644 --- a/FS/FS/API.pm +++ b/FS/FS/API.pm @@ -906,7 +906,63 @@ sub bill_now { } -#next.. Advertising sources? +#next.. Delete Advertising sources? + +sub list_advertising_sources { + my( $class, %opt ) = @_; + return _shared_secret_error() unless _check_shared_secret($opt{secret}); + + my @sources = qsearch('part_referral', {}, '', "") + or return { 'error' => 'No referrals' }; + + my $return = { + 'sources' => [ map $_->hashref, @sources ], + }; + + $return; +} + +sub add_advertising_source { + my( $class, %opt ) = @_; + return _shared_secret_error() unless _check_shared_secret($opt{secret}); + + use FS::part_referral; + + my $new_source = $opt{source}; + + my $source = new FS::part_referral $new_source; + + my $error = $source->insert; + + my $return = {$source->hash}; + $return = { 'error' => $error, } if $error; + + $return; +} + +sub edit_advertising_source { + my( $class, %opt ) = @_; + return _shared_secret_error() unless _check_shared_secret($opt{secret}); + + use FS::part_referral; + + my $refnum = $opt{refnum}; + my $source = $opt{source}; + + my $old = FS::Record::qsearchs('part_referral', {'refnum' => $refnum,}); + my $new = new FS::part_referral { $old->hash }; + + foreach my $key (keys %$source) { + $new->$key($source->{$key}); + } + + my $error = $new->replace; + + my $return = {$new->hash}; + $return = { 'error' => $error, } if $error; + + $return; +} ## diff --git a/bin/xmlrpc-advertising_sources-add.pl b/bin/xmlrpc-advertising_sources-add.pl new file mode 100755 index 000000000..4800ad0c7 --- /dev/null +++ b/bin/xmlrpc-advertising_sources-add.pl @@ -0,0 +1,28 @@ +#!/usr/bin/perl + +use strict; +use Frontier::Client; +use Data::Dumper; + +my $uri = new URI 'http://localhost:8008/'; + +my $server = new Frontier::Client ( 'url' => $uri ); + +my $result = $server->call( + 'FS.API.add_advertising_source', + 'secret' => 'MySecretCode', + 'source' => { + 'referral' => 'API test referral', + 'disabled' => '', + 'agentnum' => '', + 'title' => 'API test title', + }, +); + +die $result->{'error'} if $result->{'error'}; + +print Dumper($result); + +print "\nAll Done\n"; + +exit; \ No newline at end of file diff --git a/bin/xmlrpc-advertising_sources-edit.pl b/bin/xmlrpc-advertising_sources-edit.pl new file mode 100755 index 000000000..80f9139c1 --- /dev/null +++ b/bin/xmlrpc-advertising_sources-edit.pl @@ -0,0 +1,30 @@ +#!/usr/bin/perl + +use strict; +use Frontier::Client; +use Data::Dumper; + +my $uri = new URI 'http://localhost:8008/'; + +my $server = new Frontier::Client ( 'url' => $uri ); + +my $result = $server->call( + 'FS.API.edit_advertising_source', + 'secret' => 'MySecretCode', + 'refnum' => '4', + 'source' => { + 'referral' => 'Edit referral', + 'title' => 'Edit Referral title', + #'disabled' => 'Y', + #'disabled' => '', + #'agentnum' => '2', + }, +); + +die $result->{'error'} if $result->{'error'}; + +print Dumper($result); + +print "\nAll Done\n"; + +exit; \ No newline at end of file diff --git a/bin/xmlrpc-advertising_sources-list.pl b/bin/xmlrpc-advertising_sources-list.pl new file mode 100755 index 000000000..317a38b7b --- /dev/null +++ b/bin/xmlrpc-advertising_sources-list.pl @@ -0,0 +1,22 @@ +#!/usr/bin/perl + +use strict; +use Frontier::Client; +use Data::Dumper; + +my $uri = new URI 'http://localhost:8008/'; + +my $server = new Frontier::Client ( 'url' => $uri ); + +my $result = $server->call( + 'FS.API.list_advertising_sources', + 'secret' => 'MySecretCode', +); + +die $result->{'error'} if $result->{'error'}; + +print Dumper($result); + +print "\nAll Done\n"; + +exit; \ No newline at end of file -- 2.11.0