RT# 38517 - Added Lingua::EN::NameParse to parse real name into first and last name.
authorChristopher Burger <burgerc@freeside.biz>
Mon, 24 Jul 2017 20:45:50 +0000 (16:45 -0400)
committerChristopher Burger <burgerc@freeside.biz>
Mon, 24 Jul 2017 20:45:50 +0000 (16:45 -0400)
rt/lib/RT/Interface/Web_Vendor.pm

index da0b189..909127b 100644 (file)
@@ -170,16 +170,25 @@ sub ProcessTicketCustomers {
             'table'     => 'contact_email',
             'hashref'   => { 'emailaddress' => $Requestor->{'values'}->{'emailaddress'}, },
            } ) ) {
-             use FS::contact;
 
-             my $lname = $Requestor->{'values'}->{'realname'} ?
-                (split (/ /, $Requestor->{'values'}->{'realname'}))[-1] :
-                'Requestor';
+            ## get first and last name for contact.
+             my ($fname, $lname) = (
+                split (/\@/, substr($Requestor->{'values'}->{'emailaddress'}, 0, index($Requestor->{'values'}->{'emailaddress'}, ".")))
+             );
+
+             use Lingua::EN::NameParse;
+             my $name = Lingua::EN::NameParse->new();
+
+             my $error = $name->parse($Requestor->{'values'}->{'realname'})
+             unless !$Requestor->{'values'}->{'realname'};
 
-            my $fname = $Requestor->{'values'}->{'realname'} ?
-                (split (/ /, $Requestor->{'values'}->{'realname'}))[0] :
-                'RT';
+             my %name_comps = $name->components unless !$Requestor->{'values'}->{'realname'} || $error;
 
+             $fname = $name_comps{given_name_1} || $name_comps{initials_1} unless !$name_comps{given_name_1} && !$name_comps{initials_1};
+             $lname = $name_comps{surname_1} unless !$name_comps{surname_1};
+
+             ## create the contact.
+             use FS::contact;
              my $contact = new FS::contact {
                 'custnum'       => $custnum,
                 'first'         => $fname,