#!/usr/bin/perl

#use utf8;
use strict;
use CGI;

use Opals::Context;
use Opals::Template qw(
    tmpl_read
    tmpl_write
    tmpl_preference
);
use Opals::Circulation qw(
    circ_infoRecord
);
use Opals::User qw(
    user_currentUser
);
use Opals::Marc21 qw(
    mc21_infoGeneral
);
use Opals::Session qw(
    SessionHdl_get
);
use Opals::BookCover qw(
    bookCover_getUrl
    bookCover_amazon
    bookCover_google
    bookCover_syndetics
);
use Opals::Rating qw(
    cmntRating_getInfoByRid
);
use POSIX qw(
    ceil
    floor
);
use Opals::Locale qw(
    loc_getMsgFile
    loc_write
);
use Opals::MarcXmlParser;
use Opals::SolrIndex qw(
    slr_search
    slr_buildSearchQuery
);
use Opals::RecordInfoHTML qw(
    rinfo_getPageNavForm_search
);

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        => 'search/bgnrSrch/recDetailPage.tmpl',
        }
);

my $pref = tmpl_preference($dbh);
    my $zid = $input->{'zid'};
    ($zid && $zid >= 0) || ($zid = 0);

my $pageNavForm =rinfo_getPageNavForm_search($cgi);
    $template->param(pageNavForm=>$pageNavForm);
    my  $rating =Opals::Context->preference('rating');
    my  $offset         = $input->{'resultOrder'};
    my  $rid            = $input->{'rid'};
    my  $srchPage       = $input->{'srchPage'};
    my $sortAttr    = $input->{'sortAttr'};
    my $sortOrder   = $input->{'sortOrder'};
    my $tmpInput = $input;
    my $src = $input->{'src'};
    if( defined $src && ($src eq 'bookShelf' || $src eq  'bibliography') 
         && defined $rid && $rid>0){
         $tmpInput={kw0 =>$rid, sf0 =>'12'};
         $offset=0;
    }
    my $rs={};

    my ($isFirst,$isLast);
    my $pNum = $input->{'pNum'};
    my $rec=undef;
    my $hits =0 ;
    my $filter;
    my @location    = $cgi->param('location');
    $filter->{'location'} = \@location;
    my $lQuery      = slr_buildSearchQuery($tmpInput,$filter);
           $rs          = slr_search({lQuery=>$lQuery,recFormat=>'detail',
                            sortAttr=>$sortAttr,sortDir=>$sortOrder, 
                            offset=>$offset,size=>1,
                            incCircStatus=>1});
        $rec=$rs->{'recordList'}[0];
        $hits = $rs->{'hits'};


    ($pNum && $pNum > 0) || ($pNum = 1);
    
    my $firstIndex=0;
    my $lastIndex=$hits -1;
    $isFirst =  ($offset == $firstIndex);
    $isLast  =  ($offset == $lastIndex) ;
    my $bkShelfLocation=$pref->{'OWLsrchLocation'};
    my $bkShelfMidCallno="";
    my $bkShelfMidRecId=0;
    if($bkShelfMidCallno eq '' && $rec->{'callNum1St'} ne '' ){
        $bkShelfMidCallno = $rec->{'callNum1St'};
        $bkShelfMidRecId = $rec->{'rid'};
    }             
   
    $rid =$rec->{'rid'};
    my $itemList =$rec->{'itemList'};
    my $i=0;
    foreach my $item(@$itemList){
        $item->{'itemOrder'}=$i++;
    }
    getBookCover($rec);
    my ($numTotal, $numLoan, $numReserve, $numHold, $items,$totalCirc)
            = circ_infoRecord($dbh,$rid,$itemList);
    my $numAvailable = $numTotal - $numLoan - $numHold;
        $template->param(
        bkShelfMidCallno    =>$bkShelfMidCallno,
        bkShelfMidRecId     =>$bkShelfMidRecId,
        bkShelfLocation     =>$bkShelfLocation,
        idvalid             => ($rs) ? 1:0,
        rid                 => $rid,
        rec                 => $rec,
        title               => $rec->{'title'},
        title_sub           => $rec->{'subtitle'},
        author              => $rec->{'author'},
        author_880          => $rec->{'author_880'},
        title_880           => $rec->{'title_volumeInfo'},
        title_series_a      => $rec->{'title_series_a'},
        page                => $rec->{'page'},
        isbn_first          => $rec->{'isbn_first'},
        namePublisher       => $rec->{'namePublisher'},
        placePublication    => $rec->{'placePublication'},
        datePublication     => $rec->{'datePublication'},
        formatList          => $rec->{'format'} ,
        sortAttr            => $sortAttr,
        sortOrder           => $sortOrder,
        pNum                => $pNum,
        isFirst             => $isFirst,
        isLast              => $isLast,
        recRsPos            => $offset,
        bookcoverURL        => $rec->{'bookcoverURL'},
        itemList            => $itemList,
        totalHolding        => $numTotal,
        onLoan              => $numLoan,
        totalCirc           => $totalCirc,
        onReserve           => $numReserve,
        onHold              => $numHold,
        numAvailable        => $numAvailable,


     );
      $template->param(  nameOfPart          => $rec->{'nameOfPart'}) if($rec->{'nameOfPart'});
       $template->param( numOfPart           => $rec->{'numOfPart'}) if($rec->{'numOfPart'});
       $template->param(note                =>$rec->{'note'}) if($rec->{'note'});
$template->param(contentNote      =>$rec->{'contentNote'}) if($rec->{'contentNote'});
$template->param( uriList     =>$rec->{'uriList'}) if($rec->{'uriList'});

     my $hasSummary  = (defined $rec->{'summary'})? 1:0;
    if($hasSummary){
        $template->param(
         hasSummary    =>1,
         summary       => $rec->{'summary'});
    }
     my $hasSubject  = (defined $rec->{'subject'})? 1:0;
    if($hasSubject){
        $template->param(hasSubject =>1,subject       => $rec->{'subject'});
    }
#=======================================================
sub getBookCover{
    my($recList)=@_;
    my  $awsId =Opals::Context->preference('amazonId');
    my  $awsSecretKey =Opals::Context->preference('amazonSecreteKey');
    my  $syndeticsId =Opals::Context->preference('syndeticsId');
    if($syndeticsId ne''){
        bookCover_syndetics($recList);
    }
    elsif($awsId ne '' && $awsSecretKey ne ''){
        bookCover_amazon($recList,$awsId,$awsSecretKey);
    }
    else{
        bookCover_google($recList);
    }

}


#=======================================================



my $msgValMap ={};
my $msgMap            =loc_getMsgFile('report/reports.msg',$msgValMap);
my $formatMsgMap  =loc_getMsgFile('search/facet.msg',{});

loc_write($template,$msgMap);


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