remove unnecessary complication from ClientAPI dispatch foo
[freeside.git] / FS / FS / ClientAPI / Agent.pm
index 212faaa..e4a58c0 100644 (file)
@@ -6,15 +6,9 @@ use strict;
 use vars qw($cache);
 use Digest::MD5 qw(md5_hex);
 use Cache::SharedMemoryCache; #store in db?
-use FS::Record qw(qsearchs); # qsearch);
+use FS::Record qw(qsearchs); # qsearch dbdef dbh);
 use FS::agent;
-
-use FS::ClientAPI;
-FS::ClientAPI->register_handlers(
-  'Agent/agent_login'          => \&agent_login,
-  'Agent/agent_info'           => \&agent_info,
-  'Agent/agent_list_customers' => \&agent_list_customers,
-);
+use FS::cust_main qw(smart_search);
 
 #store in db?
 my $cache = new Cache::SharedMemoryCache( {
@@ -52,6 +46,16 @@ sub agent_login {
   };
 }
 
+sub agent_logout {
+  my $p = shift;
+  if ( $p->{'session_id'} ) {
+    $cache->remove($p->{'session_id'});
+    return { 'error' => '' };
+  } else {
+    return { 'error' => "Can't resume session" }; #better error message
+  }
+}
+
 sub agent_info {
   my $p = shift;
 
@@ -90,14 +94,19 @@ sub agent_list_customers {
   my $agent = qsearchs( 'agent', { 'agentnum' => $agentnum } )
     or return { 'error' => "unknown agentnum $agentnum" };
 
-  my @cust_main = ();
-
-  warn $p->{'susp'};
+  my @cust_main = smart_search( 'search'   => $p->{'search'},
+                                'agentnum' => $agentnum,
+                              );
 
+  #aggregate searches
   push @cust_main,
     map $agent->$_(), map $_.'_cust_main',
       grep $p->{$_}, qw( prospect active susp cancel );
 
+  #eliminate dups?
+  my %saw = ();
+  @cust_main = grep { !$saw{$_->custnum}++ } @cust_main;
+
   { customers => [ map {
                          my $cust_main = $_;
                          my $hashref = $cust_main->hashref;