[freeside-commits] branch FREESIDE_4_BRANCH updated. 7780fe169c3789a5ad2b8674365d78d34b4324bd

Ivan ivan at 420.am
Tue Jul 21 11:33:00 PDT 2015


The branch, FREESIDE_4_BRANCH has been updated
       via  7780fe169c3789a5ad2b8674365d78d34b4324bd (commit)
      from  bcbb8c9845809251bf56e2b12aa59b1019219bb4 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 7780fe169c3789a5ad2b8674365d78d34b4324bd
Author: Ivan Kohler <ivan at freeside.biz>
Date:   Tue Jul 21 11:32:58 2015 -0700

    self-service API new_contact, RT#37376

diff --git a/FS/FS/ClientAPI/MyAccount/contact.pm b/FS/FS/ClientAPI/MyAccount/contact.pm
index 099da29..5690f86 100644
--- a/FS/FS/ClientAPI/MyAccount/contact.pm
+++ b/FS/FS/ClientAPI/MyAccount/contact.pm
@@ -148,4 +148,25 @@ sub delete_contact {
   return { 'error' => '', };
 }
 
+sub new_contact {
+  my $p = shift;
+
+  my($context, $session, $custnum) = _custoragent_session_custnum($p);
+  return { 'error' => $session } if $context eq 'error';
+
+  #TODO: add phone numbers too
+  #TODO: specify a classnum by name and/or list_contact_classes method
+
+  my $contact = new FS::contact {
+    'custnum' => $custnum,
+    map { $_ => $p->{$_} }
+      qw( first last emailaddress classnum comment selfservice_access )
+  };
+
+  $contact->change_password_fields($p->{_password}) if length($p->{_password});
+
+  my $error = $contact->insert;
+  return { 'error' => $error, };
+}
+
 1;
diff --git a/FS/FS/ClientAPI_XMLRPC.pm b/FS/FS/ClientAPI_XMLRPC.pm
index 8f02b09..435ee98 100644
--- a/FS/FS/ClientAPI_XMLRPC.pm
+++ b/FS/FS/ClientAPI_XMLRPC.pm
@@ -111,6 +111,7 @@ sub ss2clientapi {
   'list_contacts'             => 'MyAccount/contact/list_contacts',
   'edit_contact'              => 'MyAccount/contact/edit_contact',
   'delete_contact'            => 'MyAccount/contact/delete_contact',
+  'new_contact'               => 'MyAccount/contact/new_contact',
 
   'billing_history'           => 'MyAccount/billing_history',
   'edit_info'                 => 'MyAccount/edit_info',     #add to ss cgi!
diff --git a/fs_selfservice/FS-SelfService/SelfService.pm b/fs_selfservice/FS-SelfService/SelfService.pm
index 1978a88..06dcc2b 100644
--- a/fs_selfservice/FS-SelfService/SelfService.pm
+++ b/fs_selfservice/FS-SelfService/SelfService.pm
@@ -38,6 +38,7 @@ $socket .= '.'.$tag if defined $tag && length($tag);
   'list_contacts'             => 'MyAccount/contact/list_contacts',
   'edit_contact'              => 'MyAccount/contact/edit_contact',
   'delete_contact'            => 'MyAccount/contact/delete_contact',
+  'new_contact'               => 'MyAccount/contact/new_contact',
 
   'billing_history'           => 'MyAccount/billing_history',
   'edit_info'                 => 'MyAccount/edit_info',     #add to ss cgi!
@@ -1400,6 +1401,39 @@ If already logged in as a contact, this is optional.
 Returns a hash reference with a single parameter, B<error>, which contains an
 error message, or empty on success.
 
+=item new_contact
+
+Creates a new contact.
+
+Takes a hash reference as parameter with the following keys:
+
+=over 4
+
+=item session_id
+
+=item first
+
+=item last
+
+=item emailaddress
+
+=item classnum
+
+Optional contact classnum (TODO: or name)
+
+=item comment
+
+=item selfservice_access
+
+Y to enable self-service access
+
+=item _password
+
+=back
+
+Returns a hash reference with a single parameter, B<error>, which contains an
+error message, or empty on success.
+
 =item delete_contact
 
 Deletes a contact.  (Note: Cannot at this time delete the currently-logged in

-----------------------------------------------------------------------

Summary of changes:
 FS/FS/ClientAPI/MyAccount/contact.pm         |   21 ++++++++++++++++
 FS/FS/ClientAPI_XMLRPC.pm                    |    1 +
 fs_selfservice/FS-SelfService/SelfService.pm |   34 ++++++++++++++++++++++++++
 3 files changed, 56 insertions(+)




More information about the freeside-commits mailing list