#!/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   => 'eq_record_edit',
    }
);

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 $searchType = $input->{'searchType'};
my ($recordId, $recordInfo);
my ($numTotal, $numLoan, $numReserve, $numHold, $itemList, $totalCirc,$totalMissing,$totalDamaged,$totalLost); 
my $pNum = $input->{'pNum'};
    ($pNum && $pNum > 0) || ($pNum = 1);

if ($permission && $permission->{'eq_record_edit'}){
    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);
            ($recordId, $recordInfo) = eq_record_findByRId($dbh,{recordId=>$recordList->[0]->{'rid'}});    
            ($numTotal, $numLoan, $numReserve, $numHold, $itemList, $totalCirc,$totalMissing,$totalDamaged,$totalLost)=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 - $totalMissing - $totalDamaged - $totalLost,
                itemList        =>  $itemList, 
                resultSize      =>  $resultSize,
                resultOrder     =>  $resultOrder + $direction,
                isFirst         =>  $isFirst,
                isLast          =>  $isLast,
                searchType      =>  $searchType,
                highlightString =>  $sKw,

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

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