#!/usr/bin/perl

use strict;
use CGI;

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

use Opals::Equipment qw(

    eq_record_findByRId
    srch_equipment

);

use Opals::Eq_Circulation qw(
    circ_infoRecord
    circ_getLoanListByRid

);

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        => 'eqmnt/recordInfo.tmpl',
        #reqPermission   => 'equipment_mgmt',
    }
);

my $sKw = $input->{'sKw'};
my $sField = $input->{'sField'};
my $sfIndex = $input->{'sfIndex'};
my $rid = $input->{'rid'};
my $direction = $input->{'direction'};
my $sortAttr = $input->{'sortAttr'};
$direction = 0 if (! $direction);
my $resultOrder = $input->{'resultOrder'};
my $sortOrder = $input->{'sortOrder'};
my $resultSize = $input->{'resultSize'};
my ($recordId, $recordInfo);
my ($numTotal, $numLoan, $numReserve, $numHold, $itemList, $totalCirc); 
my $pNum = $input->{'pNum'};
    ($pNum && $pNum > 0) || ($pNum = 1);

if (!$rid){
    $template->param(
        error   => 1,);
}
else{
    $template->param(
        sKw         => $sKw,
        sField      => $sField,
        sfIndex     => $sfIndex,
        pNum        => $pNum,
        resultOrder => $resultOrder + $direction,
        sortOrder   => $sortOrder,
        sortAttr    => $sortAttr,
    );
    my ($resultSize, $recordList);
    if ($sField && $sKw){
        ($resultSize, $recordList) = srch_equipment($dbh, $sField, $sKw, $resultOrder + $direction , 1, $sortOrder , $sortAttr);
        #($resultSize, $recordList) = srch_equipment($dbh, $field, $kw, $offset, $pSize,$direction, $sortAttr);
        ($recordId, $recordInfo) = eq_record_findByRId($dbh,{recordId=>$recordList->[0]->{'rid'}});    
        ($numTotal, $numLoan, $numReserve, $numHold, $itemList, $totalCirc) = circ_infoRecord($dbh, $recordId);
    }
    
    my $onLoanList =  circ_getLoanListByRid($dbh,$recordId);
    if  (scalar(@$onLoanList)>0){
         $template->param(isOnLoan =>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));

    $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->{'eq_record_edit'}) {
    $template->param(    eq_record_edit      => 1);

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