#!/usr/bin/perl

#use utf8;
use strict;
use CGI;

use Opals::Context;use POSIX;

use Date::Calc qw(Day_of_Week Week_Number Day_of_Year);

use Opals::User qw(
    user_getInformation
    user_getInformationById
    user_balance
    user_paid
    user_paymenthistory
);

use Opals::Circulation qw(
    circ_userListLoan
    eCirc_getUserLoanList
    circ_isOnReserve
);


use Opals::Date qw(
    date_parse
    date_today
    date_text
);

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

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 JSON;
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        => 'user/myLoans.tmpl',
#            reqPermission   => 'user_delete',
        }
);
if ($permission && $permission->{'circ_rsrv_self'}){
    $template->param(circ_rsrv_self =>1);
    
}
my $lang=$template->param('curLang');
my $syspref = tmpl_preference($dbh);
my ($errCode, $myCookie, $user) = user_currentUser($dbh, $cgi);
my $uid = $user->{'uid'};    
my $loanItems    =  circ_userListLoan($dbh,$uid);
my $loanItems_eb =  eCirc_getUserLoanList($dbh,$uid);
foreach my $l (@$loanItems_eb){
    push @$loanItems ,$l;
}
my $allowSelfRenewal=$syspref->{"allowSelfRenewal"};
my $marcXmlParser=Opals::MarcXmlParser->new() ;
foreach my $l (@$loanItems){
    my $callnum1St  =$l->{'callNumber'};
    $l->{'dateLoan'} = date_text($l->{'dateLoan'}, 0,$lang);
    $l->{'dateDue'} = date_text($l->{'dateDue'}, 0,$lang);
    $l->{'bid'} = getEbookId($l->{'barcode'}) || 0;
    $l->{'isOPALSEbook'} =1 if(defined $l->{'bid'} && $l->{'bid'} >0);
    my $file =getRecordPath($l->{'rid'});
    my $b = $marcXmlParser->getRecInfoGeneral_file($file);
    
    if (defined $b && $b->{'isbn_first'} && $b->{'isbn_first'} ne '') {
           $l->{'isbn_first'} =$b->{'isbn_first'};
    }
    $l->{'renewable'}=1;
    if(!$allowSelfRenewal || $l->{'deltaDueDate'} >0 
        || $l->{'renewalCount'} >= $l->{'maxRenewal'}
        || circ_isOnReserve($dbh,$l->{'rid'})>0){

        $l->{'renewable'}=0;
    }
}
getBookCover($loanItems) ;

$template->param(loanList =>$loanItems);
$template->param(loanListJson =>to_json($loanItems,{pretty=>1}));

my $msgValMap ={};
my $msgMap            =loc_getMsgFile('user/userInfo.msg',$msgValMap);
loc_write($template,$msgMap);
my $msgMap            =loc_getMsgFile('ebook.msg',$msgValMap);
loc_write($template,$msgMap);

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

#////////////////////////////////////////////////////////////////////////////
sub getEbookId{
    my ($barcode)=@_;
    my $bid = 0;
    my $sth = $dbh->prepare(<<_STH_);
    select e.bid from opl_item i inner join opl_ridBid e using(rid) where i.barcode=? 
_STH_
$sth->execute($barcode);
     my ($bid)= $sth->fetchrow_array;
       
     return $bid;
}
#////////////////////////////////////////////////////////////////////////////

sub getRecordPath {
    my ($rid) = @_;
    
    my $zRoot   = Opals::Context->config('zRoot');
    my $zPort   = Opals::Context->config('zPort');
    my $zDatabase = Opals::Context->config('zDatabase');
    my $dir     = "$zRoot/$zPort/record/$zDatabase/" . ceil($rid/1000);

    return "$dir/$rid.xml";
}

#////////////////////////////////////////////////////////////////////////////
sub getBookCover{
    my($rec,$size,$caption)=@_;
    my  $awsId =Opals::Context->preference('amazonId');
    my  $awsSecretKey =Opals::Context->preference('amazonSecreteKey');
    my  $syndeticsId =Opals::Context->preference('syndeticsId');
    if($syndeticsId ne''){
        bookCover_syndetics($rec,$size,$caption);
    }
    elsif($awsId ne '' && $awsSecretKey ne ''){
        bookCover_amazon($rec,$awsId,$awsSecretKey);
    }
    else{
        bookCover_google($rec);
    }

}


#////////////////////////////////////////////////////////////////////////////
__END_OF_FILE:

