#!/usr/bin/perl

#use utf8;
use strict;
use JSON;

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

use Opals::Eq_Circulation qw(
 
    circ_getLoanListByRid
    circ_getItemStatus

);
use Opals::Eq_Circulation qw(
    
    circ_getItemStatus
);

use Opals::Date qw(
    date_text
);


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

my $rs;
if ($ENV{'REQUEST_METHOD'} eq "POST") {
    my $json ="";
     while (<STDIN>) {
        $json .= $_;
    }
    my $param = decode_json($json);

    my $input = {
        displayStyle  => 'linear',
        kw            => $param->{'kw'},
        sfield        => $param->{'sfield'},
        groupBy       => 'barcode',
        exactmatch    => ($param->{'sfield'} eq "0")?0:1,
        offset        => 0,
        pSize         => 1000000
    };
    my $eq_solr = Opals::Eq_SolrSearch->new(dbh=>$dbh);
    my $lQuery = $eq_solr->eq_slr_buildSearchQuery($input);
    my $params={
        lQuery=>$lQuery,
        displayStyle=>$input->{'displayStyle'},
    };
    $rs = $eq_solr->eq_slr_search($params);
    $input->{'hits'} = $rs->{'hits'};
    my $recList = $rs->{'recordList'};
    foreach my $r (@$recList) {
        $r->{'itemStatus'} = circ_getItemStatus($dbh,{barcode=>$r->{'barcode'}}); 
        if ($r->{'itemStatus'}->{'status'} == IT_STAT_FULL_AVAIL){
            $r->{'status'} = 'IN';
        }
        elsif ($r->{'itemStatus'}->{'status'} == IT_STAT_DAMAGED){
            $r->{'status'} = 'Damaged';
        }
        elsif($r->{'itemStatus'}->{'status'} == IT_STAT_LOST){
            $r->{'status'} = 'Lost';
        }
        elsif($r->{'itemStatus'}->{'status'} == IT_STAT_MISSING){
            $r->{'status'} = 'Missing';
        }
        elsif($r->{'itemStatus'}->{'status'} == IT_STAT_ONLOAN){
            $r->{'status'} = "On Loan";
        }

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

