#!/usr/bin/perl

use strict;
use CGI;
use POSIX qw(
    floor
);

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

use Opals::Tb_Record qw(
    
    tb_record_findByRId
    tb_item_findByRId

);

use Opals::Tb_Search qw(
    
    search_record
    search_record_byBarcode
);

use Opals::Tb_Circulation qw(

    circ_infoRecord

);



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

my $cgi = CGI->new;
my $input = $cgi->Vars();
my ($permission, $cookieList, $template) = tmpl_read(
    {
        dbh             => $dbh,
        cgi             => $cgi,
        tmplFile        => '/txtbk/recordInfo.tmpl',
    }
);

my $sKw         = $input->{'sKw'};
my $sfCode      = $input->{'sfCode'};
my $sfIndex = $input->{'sfIndex'};
my $sortAttr    = $input->{'sortAttr'};
    if (!$sortAttr ){
        $sortAttr = '245_a';
    }
my $direction   = $input->{'direction'};
    $direction  = 0 if (! $direction);
my $rid         = $input->{'rid'};
my $resultOrder = $input->{'resultOrder'};
my $recRsPos = $input->{'recRsPos'} + $direction;
my $sortOrder   = $input->{'sortOrder'};
my $resultSize  = $input->{'resultSize'};
my $offset      = $recRsPos;

my $pSize = 10;
my $pNum = floor($recRsPos /$pSize) + 1 || 0; 

my ($numTotal, $numLoan, $numReserve, $numHold, $itemList, $totalCirc); 
my ($recordId, $recordInfo);

if (!$rid){
    $template->param( 
        error   => 1,);
    }
else{
    $template->param(
        sKw         => $sKw,
        sfCode      => $sfCode,
        sfIndex     => $sfIndex,
        recRsPos    => $recRsPos ,
        sortOrder   => $sortOrder,
        sortAttr    => $sortAttr,
        pNum        => $pNum
    );
    my ($resultSize, $recordList);
    if ($sfCode && $sKw){
        if ($sfCode eq '852_p'){
            ($resultSize, $recordList) = search_record_byBarcode($dbh, $sKw , $offset , 1, $sortOrder , $sortAttr);
            ($recordId, $recordInfo) = tb_record_findByRId($dbh,$recordList->[0]->{'rid'});    
            ($numTotal, $numLoan, $numReserve, $numHold, $itemList, $totalCirc) = circ_infoRecord($dbh, $recordId);
        }
        else{
            ($resultSize, $recordList) = search_record($dbh, $sfCode, $sKw, $offset , 1, $sortOrder , $sortAttr);
            ($recordId, $recordInfo) = tb_record_findByRId($dbh,$recordList->[0]->{'rid'});    
            ($numTotal, $numLoan, $numReserve, $numHold, $itemList, $totalCirc) = circ_infoRecord($dbh, $recordId);
        }
    }
    if ($numLoan == 0 && $numReserve == 0 && $numHold == 0){
        $template->param(allowDeletion => 1);
    }

    my $firstIndex=0;
    my $lastIndex= $resultSize -1;
    #my $isFirst =  ((!$direction && $resultOrder == $firstIndex) || ($direction && $resultOrder+$direction == $firstIndex));
    #my $isLast =  ((!$direction && $resultOrder == $lastIndex) || ($direction && $resultOrder+$direction == $lastIndex));
    my $isFirst = ($recRsPos == 0)?1:0;
    my $isLast = ($recRsPos == $lastIndex)?1:0;
    $template->param(
            recordInfo      =>  $recordInfo, 
            rid             =>  $recordId,
            numTotal        =>  $numTotal,
            numLoan         =>  $numLoan,
            numReserve      =>  $numReserve,
            numHold         =>  $numHold,
            numReserveTotal =>  $numReserve + $numHold,
            numAvailable    =>  $numTotal - $numLoan - $numHold,
            itemList        =>  $itemList, 
            resultSize      =>  $resultSize,
            resultOrder     =>  $resultOrder + $direction,
            isFirst         =>  $isFirst,
            isLast          =>  $isLast
            );
}
#if ($permission && $permission->{'textbook_mgmt'}) {

if ($permission && $permission->{'tb_record_edit'}) {
    $template->param(textbook_mgmt => 1);
}

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

###################################################


