#!/usr/bin/perl

#use utf8;
use strict;

use Encode;
use LWP::UserAgent;
use HTTP::Request::Common;

use CGI;
use JSON;

use Opals::Context;
use Opals::Constant;

use Time::localtime;

use Opals::Eq_SolrSearch;

use Opals::Template qw(
    tmpl_read
    tmpl_write
);

use Opals::Session qw(
    SessionHdl_getSSID
);
use Opals::Equipment qw(

    eq_record_findByRId
    eq_item_findByRId

);

my $dbh = Opals::Context->dbh();
END { $dbh->disconnect(); }

my $cgi = CGI->new;
my $input = $cgi->Vars();

my $ssid   = SessionHdl_getSSID($cgi);
my $ssVarname = $input->{'sessionVar'};
$input->{'sortAttr'} =  $input->{'sortAttr'} || 'eq_name';
$input->{'sortDir'} = '1';
my $rs = do_SolrSearch($input);
delete $rs->{'facetList'};
foreach my $r (@{$rs->{'recordList'}}) {
    $r->{'recordFields'} = eq_record_findByRId($dbh,{"recordId"=>$r->{'rid'}});
    $r->{'itemList'} = eq_item_findByRId($dbh,$r->{'rid'});
}
my $list = getSessionHitList($dbh,$ssid,$ssVarname);
foreach my $r (@{$rs->{'recordList'}}){
   if ($list->{$r->{'rid'}}){
     $r->{'selected'} = '1';   
   }
}

print "Content-type: text/plain\n\n";
print to_json($rs,{pretty=>1}); 

exit 0;


sub do_SolrSearch {

    my ($input) = @_;
    return undef if ($input->{'kw'} eq "" && $input->{'kw1'} eq "" && $input->{'kw2'} eq "" && $input->{'kw3'} eq "");
    my $eq_solr = Opals::Eq_SolrSearch->new(dbh=>$dbh);
    my $lQuery = $eq_solr->eq_slr_buildSearchQuery($input);
    $lQuery .= "&fl=rid,eq_name,1,3,category_facet";
    my $params={
        lQuery=>$lQuery,
        displayStyle=>$input->{'displayStyle'},
    };
    my $rs = $eq_solr->eq_slr_search($params);
    return $rs;
}
sub getSessionHitList{
    my ($dbh,$ssid,$vaName)=@_;
    my $itemList=[];
    my $hitList = {};
    my ($ridCount,$bcCount)=(0,0);
    my $sql ="select rid, barcode ";
    $sql .= "  from opl_sessionVar s ";
    $sql .= " where ssid= ? && var=? order by sOrder";
    #open debug,">/tmp/oo"; print debug "$sql\n$ssid,$vaName"; close debug;
    my $sth =$dbh->prepare($sql);
    $sth->execute($ssid,$vaName);
    while( my $item=$sth->fetchrow_hashref){
        $hitList->{$item->{'rid'}}=1;
    }
    return $hitList;
}

