#!/usr/bin/perl

#use utf8;
use strict;
use CGI;

use Opals::Context;
use Opals::Template qw(
    tmpl_read
    tmpl_write
    tmpl_preference
    tmpl_rangedPageList
);

use Opals::SolrIndex qw(
    slr_eb_buildSearchQuery
    slr_eb_search
);
use Opals::Ebook qw(
    eb_getLicense
   eb_getMarcXmlRid
);

use Opals::Circulation qw(
    circ_getRecCircStatus
    eCirc_isOnLoanTo
    circ_getRecCircStatus_ebook
);
use Opals::User qw(
    user_currentUser
);
use Opals::Locale qw(
    loc_getMsgFile
    loc_write
);
use Opals::BookCover qw(
    bookCover_getUrl
    bookCover_amazon
    bookCover_google
    bookCover_syndetics

);

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

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

my ($permission, $cookie, $template) = tmpl_read(
        {
            dbh             => $dbh,
            cgi             => $cgi,
            tmplFile        => 'ajax/search/ebookSearch.tmpl',
#            reqPermission   => 'user_delete',
        }
);
my $lang=$template->param('curLang');
my $syspref = tmpl_preference($dbh);
my ($errCode, $myCookie, $user) = user_currentUser($dbh, $cgi);
my $uid =0;
if($errCode==0){
   $uid = $user->{'uid'};
}
my $zid = $input->{'zid'};
my $sortAllow=($zid==0)?1:0;
my $srchTerm    = $input->{'kw0'};
my $fieldSrch   = $input->{'sf0'};
my $sortAttr    = $input->{'sortAttr'};
my $sortOrder   = $input->{'sortOrder'};
   $sortAttr    = 4 if(!$sortAttr || $sortAttr eq "" );
   $sortOrder   = 0 if(!$sortOrder);
if($srchTerm ne ''){
    my $pSize   = 9;
    my $curPage = $input->{'pNum'};
    ($curPage && $curPage >= 1) || ($curPage = 1);
    my $offset  = ($curPage - 1) * $pSize ;
    my $filter;
    
    my $lQuery=slr_eb_buildSearchQuery($input,$filter);
  
    my $param={lQuery=>$lQuery,recFormat=>'brief',
                incCircStatus=>1,
               sortField=>$sortAttr,sortDir=>$sortOrder,
               offset=>$offset,size=>$pSize};
    my $rs=undef;
    if($lQuery ne ''){
        $rs= slr_eb_search($param);   
    }
    my ($hits_srch,$ebookList_srch) = ($rs->{'hits'},$rs->{'recordList'});
    my ($hits,$ebookList) = (0,undef);
     foreach my $r(@$ebookList_srch){
       $r->{'rid'} =  eb_getMarcXmlRid($dbh,$r->{'bid'});

             if(defined $r->{'rid'} && $r->{'rid'} >0){
            push @$ebookList, $r;
            $hits++;
       }
     }
    my @rangedPageList = tmpl_rangedPageList($hits, $curPage, $pSize, 10);


    $template->param(
        hits      =>$hits,
        ebookList =>$ebookList,
        sortAllow =>$sortAllow,
        "sortAttr_$sortAttr"=>1, 
        srchTerm  =>$srchTerm, 
        rangedPageList=> \@rangedPageList          
    );
}

#////////////////////////////////////////////////////////////////////////////
tmpl_write($dbh, $cgi, $cookie, $template);


