Revert "RT# 39340 - removed min_selfservice dir and merged into ng_selfservice"
[freeside.git] / FS / FS / ClientAPI / MyAccount.pm
index f827874..57d4298 100644 (file)
@@ -184,6 +184,29 @@ sub skin_info {
 
 }
 
+sub get_mac_address {
+  my $p = shift;
+
+## access radius exports acct tables to get mac
+  my @part_export = ();
+  @part_export = (
+    qsearch( 'part_export', { 'exporttype' => 'sqlradius' } ),
+    qsearch( 'part_export', { 'exporttype' => 'sqlradius_withdomain' } ),
+    qsearch( 'part_export', { 'exporttype' => 'broadband_sqlradius' } ),
+  );
+
+  my @sessions;
+  foreach my $part_export (@part_export) {
+    push @sessions, ( @{ $part_export->usage_sessions( {
+      'ip' => $p->{'ip'},
+    } ) } );
+  }
+
+  my $mac = $sessions[0]->{'callingstationid'};
+
+  return { 'mac_address' => $mac, };
+}
+
 sub login_info {
   my $p = shift;
 
@@ -239,8 +262,11 @@ sub login {
 
   } elsif ( $p->{'domain'} eq 'ip_mac' ) {
 
-      my $svc_broadband = qsearchs( 'svc_broadband', { 'mac_addr' => $p->{'username'} } );
-      return { error => 'IP address not found' }
+      my $mac_address = $p->{'username'};
+      $mac_address =~ s/\://g;
+
+      my $svc_broadband = qsearchs( 'svc_broadband', { 'mac_addr' => $mac_address } );
+      return { error => 'MAC address not found '.$p->{'username'} }
         unless $svc_broadband;
       $svc_x = $svc_broadband;
 
@@ -1727,9 +1753,6 @@ sub update_payby {
      $p->{'payinfo'} = $payinfo1. '@'. $payinfo2;
    }
 
-  # Perform update within a transaction
-  local $FS::UID::AutoCommit = 0;
-
   my $cust_payby = qsearchs('cust_payby', {
                               'custnum'      => $custnum,
                               'custpaybynum' => $p->{'custpaybynum'},
@@ -1745,27 +1768,25 @@ sub update_payby {
     next unless exists($p->{$field});
     $cust_payby->set($field,$p->{$field});
   }
+  $cust_payby->set( 'paymask' => $cust_payby->mask_payinfo );
 
-  my $error = $cust_payby->replace;
+  # Update column if given a value, and the given value wasn't
+  # the value generated by $cust_main->masked($column);
+  $cust_main->set( $_, $p->{$_} )
+    for grep{ $p->{$_} !~ /^x/i; }
+        grep{ exists $p->{$_} }
+        qw/ss stateid/;
 
-  if (!$error) {
-    my $is_changed = 0;
-    for my $field ( qw/ss stateid/ ) {
-      next if !exists $p->{$field} || $p->{$field} =~ /^x/i;
-      $cust_main->set( $field, $p->{$field} );
-      $is_changed = 1;
-    }
-    $error = $cust_main->replace if $is_changed;
-  }
+  # Perform updates within a transaction
+  local $FS::UID::AutoCommit = 0;
 
-  if ( $error ) {
+  if ( my $error = $cust_payby->replace || $cust_main->replace ) {
     dbh->rollback;
-    return { 'error' => $error };
-  } else {
-    dbh->commit;
-    return { 'custpaybynum' => $cust_payby->custpaybynum };
+    return { error => $error };
   }
-  
+
+  dbh->commit;
+  return { custpaybynum => $cust_payby->custpaybynum };
 }
 
 sub verify_payby {