#!/usr/bin/perl

use strict;
use CGI;

use Opals::Context;
use Opals::Constant;
use Opals::Template qw(
    tmpl_read
    tmpl_write
);
use Opals::Pathfinder qw(
    pf_getRecById
);
use Opals::BookCover qw(
    bookCover_getUrl
    bookCover_amazon
    bookCover_google
    bookCover_syndetics
);
use Opals::Circulation qw(
    circ_getRecCircStatus
);
use Opals::Utility qw(
    util_recordPath
);

use POSIX qw(
    ceil
    floor
);
use Opals::Locale qw(
    loc_getMsgFile
    loc_write
);

use Business::ISBN;

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

my $cgi = CGI->new;
my $input = $cgi->Vars();
my  $awsId =Opals::Context->preference('amazonId');
my  $awsSecretKey =Opals::Context->preference('amazonSecreteKey');
my  $syndeticsId =Opals::Context->preference('syndeticsId');
if($syndeticsId && $syndeticsId ne''){$awsId ="";}


my ($permission, $cookieList, $template) = tmpl_read(
    {
        dbh             => $dbh,
        cgi             => $cgi,
        tmplFile        => 'pf/pfView.tmpl',
    }
);
my $pf;
my $indexConfFile  = Opals::Context->config('sIndexConfig');
my $marcXmlParser=undef;

if ($permission && $permission->{'pf'}) {
   $template->param(editable=>1);
}
   my $pfId     = $input->{'pfId'};
   my $op      = $input->{'op'};
   if($pfId && $pfId>0){
        my $pf =pf_getRecById($dbh,$pfId);
        if($pf){
            foreach my $libRs(@{$pf->{'libraryRsList'}}){
                getLibRsDetail($dbh,$libRs->{'rsList'});
            }            
            if($pf->{'fileRsList'}){
                 foreach my $fileRs(@{$pf->{'fileRsList'}}){
                     foreach my $f(@{$fileRs->{'rsList'}}){
                        if($f->{'fRealName'} =~ m/(.*)\.([\w\-]+)$/g){
                            $f->{'fileIcon'} =FILE_ICON->{lc($2)} if(FILE_ICON->{lc($2)});
                        }
                     }
                 }
             }

            $template->param(pfId       =>$pfId,
                             pf  =>to_json($pf,{pretty=>1}),
                             circStats  =>1,
                             bookCover  =>1,
                             hlpUrl     => Opals::Constant->getHlpUrl('pfList'));
        }
        else{
            $template->param(errorPf=>1);
        }
   }#END if($pfId && $pfId>0)


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

my $msgValMap ={};
my $msgMap            =loc_getMsgFile('util/pathfinder.msg',$msgValMap);
loc_write($template,$msgMap);
tmpl_write($dbh, $cgi, $cookieList, $template);

#======================================================================
sub getLibRsDetail{
    my($dbh,$libRs)=@_;
    my $marcXmlParser=Opals::MarcXmlParser->new() ;
    my @del=();
    my $index=0;
    foreach my $rs(@$libRs){
        if($rs->{'rid'}>0){
            my $rid=$rs->{'rid'};
            my $fname=util_recordPath($rs->{'rid'});
            my $rec=$marcXmlParser->getRecInfoGeneral_file("$fname/$rid.xml");
            if(defined $rec){
                my $circStats       = circ_getRecCircStatus($dbh,$rid);
                $rs->{'numTotal'}    = $circStats->{'totalHolding'};;
                $rs->{'numLoan'}     = $circStats->{'onLoan'};
                $rs->{'numReserve'}  = $circStats->{'onReserve'};
                $rs->{'numHold'}     = $circStats->{'onHold'};
                $rs->{'numReserveTotal'} = $circStats->{'onReserve'} + $circStats->{'onHold'};
                $rs->{'numAvailable'} = $circStats->{'available'};
                $rs->{'pubPlace'} = $rec->{'placePublication'};
                $rs->{'pubPlace'} =s/([.:,\s])+$//g;

                $rs->{'pubName'} = $rec->{'namePublisher'};
                $rs->{'pubDate'} = $rec->{'datePublication'};                
                $rs->{'author'} =~  s/([.:,\s])+$//g;
                $rs->{'title'} = $rec->{'title'};
                $rs->{'title'} =~ s/([.:,\s])+$//g;
                $rs->{'subtitle'} =$rec->{'subtitle'};
                $rs->{'subtitle'} =~ s/([.:,\s])+$//g;
                $rs->{'isbn_first'}=$rec->{'isbn_first'};
                $rs->{'isbn'}=$rec->{'isbn'};
                $rs->{'cid'} =$rec->{'cid'}|| '';

            }
            else{
                unshift @del,$index;
            }
        }
        else{
            if(defined $rs->{'isbn'} && $rs->{'isbn'} ne ''){
                my @isbnArr= split(/,/,$rs->{'isbn'});
                if(scalar(@isbnArr)>0){
                    $rs->{'isbn_first'} =@isbnArr[0];
                }                
            }
            $rs->{'isbn'}=[];#\@isbnArr;
    
        }
        $index++;            
    }
    foreach my $i(@del){
        splice @$libRs,$i,1;
    }
   getBookCover($libRs);
}
#=======================================================
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{
        $size='m' if($size eq 'mc');
        bookCover_google($rec,$size);
    }

}



