X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2FClientAPI%2FMyAccount%2Fcontact.pm;h=ff29079c7b4afcab5704949a652450a00774c5ff;hb=ec2f19b4484371dff04ec4a5313c7b7d2359cca8;hp=72226e2dcee638475aa9698abdda2cd7b59a0d97;hpb=7efd35e863da5de4bbfcad24ad73da7ec7385f62;p=freeside.git diff --git a/FS/FS/ClientAPI/MyAccount/contact.pm b/FS/FS/ClientAPI/MyAccount/contact.pm index 72226e2dc..ff29079c7 100644 --- a/FS/FS/ClientAPI/MyAccount/contact.pm +++ b/FS/FS/ClientAPI/MyAccount/contact.pm @@ -82,7 +82,7 @@ sub list_contacts { #TODO: contact phone numbers 'comment' => $_->comment, 'selfservice_access' => $_->selfservice_access, - 'disabled' => $contact->disabled, + #'disabled' => $contact->disabled, }; } $cust_main->cust_contact ); @@ -129,6 +129,9 @@ sub delete_contact { my($context, $session, $custnum) = _custoragent_session_custnum($p); return { 'error' => $session } if $context eq 'error'; + return { 'error' => 'Cannot delete the currently-logged in contact.' } + if $p->{contactnum} == $session->{contactnum}; + my $cust_contact = qsearchs('cust_contact', { contactnum => $p->{contactnum}, custnum => $custnum, }) or return { 'error' => 'Unknown contactnum' }; @@ -138,11 +141,32 @@ sub delete_contact { my $error = $cust_contact->delete; return { 'error' => $error } if $error; - unless ( $contact->cust_contact ) { + unless ( $contact->cust_contact || $contact->prospect_contact ) { $contact->delete; } 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;