#!/usr/bin/perl

#use utf8;
use strict;
use CGI;


use Opals::Context;
use Opals::Constant;

use Date::Calc::Object qw(
    :all
);
use POSIX qw(
    floor
);
use Time::localtime;

use Opals::Fines qw(
    fine_getFineList
    fine_getFineRate
);

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

use Opals::Date qw(
    date_parse
    date_today
    date_text
    date_validateWorkday
    date_deltaWorkDay
    date_addDeltaWorkday
);
use Opals::User qw(
    user_category
    user_list
    user_getInformationById
    user_balance
);


use Opals::Circulation qw(
    circ_userListLoanStat
    circ_userListLoan
    circ_userListReserve
    circ_GetLostNumber
    circ_GetDamagedNumber
    circ_lostDeclarating
    circ_record_ODL

    circ_userCircStatByRid
);

use Opals::Locale qw(
    loc_getMsgFile
    loc_write
);
use Opals::HTMLComponents qw(
    hc_getUserAccountInfoHTML    
);


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

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        => 'report/userCircStats.tmpl',
            reqPermission   => 'rpt_circ|payment|user_edit',
        }
);
my $syspref = tmpl_preference($dbh);
my $chargeFine   = $syspref->{'charge_overdue'};
my $chargeDamage = $syspref->{'charge_damage'};
my $chargeLost   = $syspref->{'charge_lost'};
my $loginuid     = $template->param('curUserId');


my @cookieList = (@$cookie);





#ha

my $dateDue;
my @idloanArr;
my $tm = localtime;
my $todayStr = sprintf("%04d-%02d-%02d", $tm->year+1900, ($tm->mon)+1, $tm->mday);
my $dFirst = Opals::Context->preference('dateFirst');
my $dLast  = Opals::Context->preference('dateLast');
#ha

my $circulationSound = $syspref->{'circulationSound'};


$template->param(paymentPerm =>1) if ($permission->{'payment'} );
$template->param(userEditPerm =>1) if ($permission->{'user_edit'} );

if ($permission && $permission->{'rpt_circ'}  ) 
{   
    my ($uid,$status);

    my $uList =getUserList($input);
    if(scalar(@$uList)==1){
        $uid=@$uList[0]->{'uid'};
        my $isBlocked=@$uList[0]->{'block'};
        push @cookieList, $cgi->cookie(-name   => 'borrower',-value  => $uid);
        my $privacy      = ($syspref->{'patronItemPrivacy'})? $syspref->{'patronItemPrivacy'} : 0;
        my $pymntPerm    = $permission->{'payment'}?1:0;
        my $userEditPerm = $permission->{'user_edit'}?1:0;
        my $tbSort       = (defined $input->{'tblName'})?$input->{'tblName'}:"";
        my $fieldSort    = (defined $input->{'fieldName'})?$input->{'fieldName'}:"";
        
        my $options={paymentPerm       => $pymntPerm, 
                     userEditPerm      => $userEditPerm,
                     patronItemPrivacy => $privacy,
                     tbSort            => $tbSort,
                     fieldSort         => $fieldSort};

        my $userAccountInfo =hc_getUserAccountInfoHTML($dbh,$uid,$options );
        $template->param(
                userAccountInfo =>$userAccountInfo,
                block           =>$isBlocked,
                uid             =>$uid);
    }
    elsif(scalar(@$uList)>1){
         $template->param(uList => $uList);
    }
    else{
        $template->param(userNotMatch =>1) if($input->{'uInput'});
    }


}#if ($permission && $permission->{'circ_loan'})

$template->param(
        checkid => 1,
        circSound     =>$circulationSound?1:0,
);

my $msgValMap ={};
my $stdMsgMap            =loc_getMsgFile('user/userInfo.msg',$msgValMap);
loc_write($template,$stdMsgMap);
$template->param(hlpUrl   => Opals::Constant->getHlpUrl('userCircStats') );

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



#---------------------------------------------------------

sub getUserList{
    my($input)=@_;
    my @uList=();
    my $uid=0;
    if ( $input->{'uInput'}) {
        @uList = user_list($dbh,  $input->{'uInput'}, undef);
    }
    elsif ($input->{'InputFromList'}){
        $uid = $input->{'InputFromList'};
        my ($uInfo,$ttt)=user_getInformationById($dbh,$uid);
        push @uList,$uInfo if($uInfo->{'uid'});
    }
    else{
        if( $input->{'uid'} ) { 
            $uid = $input->{'uid'}; 
        }

        elsif( $input->{'hiddenid'} ) { 
            $uid = $input->{'hiddenid'}; 
        }
        else { 
            $uid = $cgi->cookie('borrower'); 
        }

        my ($uInfo,$ttt)=user_getInformationById($dbh,$uid);
        push @uList,$uInfo if($uInfo->{'uid'});

    }
    foreach my $u(@uList){
        $u->{'block'}= $u->{'status'}==1 ? 0:1;
    }
    return \@uList;

}


